作者:Paul Wang
一个朋友Paul是以为资深的软件工程师,他希望能够深入浅出的聊聊Google的工作
原理。特在这里发表其文章。希望读者能够喜欢。
有人说,Google的技术太NB了,我一辈子都学不会,那么我告诉你,阿呸!
有人说,Google肯定和美国政府有关系,是特许的,否则怎么会统治美国的搜索界,进
而又统治了全世界?那么我告诉你,阿呸!
有人说,Google的技术属于人工智能领域,高处不胜寒,是高度机密的,别人无法得知
,那么我告诉你,阿呸!
有人说,Google搜索引擎使用了极其昂贵的硬件设备,超级机器,别人想模仿都不成,
那么我告诉你,阿呸!
有人说,Google太油菜了,他们有无数的创新和专利,全世界第一无二,那么我告诉你
,阿呸!
下面分别掰吃掰吃这5个阿呸,作为开篇来让你进入Google的世界,剥掉google性感华丽
的外衣,让他一丝不挂,让他彻底的裸体!!!
老二永远为老大服务这个俗语大家肯定能看懂,我就不解释了。
不懂这个俗话的也不要紧,他的意思就是说,但凡你要成功的做一件事情,你必须先要
有正确恰当的动机,动机决定一切。
进而要有功能化的东西,没有功能,无论你怎么口吐莲花,怎么滔滔不绝,也是一水中
望月,空中楼阁。。
google 也不例外。
Google老大的故事被新闻界吵得神乎其神,也就是一忽悠。在这些炒作中,最煽情的莫
过于布林老大的一番独白:我小时候生在俄罗斯,家里穷,但我爱学习,可是图书馆太
贵,我去不起。于是我就梦想,如果有一天,世界上所有爱学习的人都能免费去图书管
,那么会多好阿?
……
怎么样,这故事听起来娓娓动听,颇为煽情把?
但实际呢?实际上又是如何呢?你知道,这个世界就是这德性,NB的人在那里夸夸其谈
,其他大多数的傻人在那里留着口水点头称是。
实际却是,Google开始起家,瞄准的方向却是广告,在线广告,这是能挣大钱的东西,
这和布林小时都的悲惨遭遇毫不相关。
如何为在线广告提供一个大量金钱的出口,就成了布林的动机 - 也是google的动机。
并不像媒体宣传的那样,google的几个脾气十分古怪的小子们聚在一起搞研究。正相反
,他们借钱租用了Yahoo的搜索服务。
和中国软件业的现状类似,他们对Yahoo做了反向工程 - 意思就是破解,了解了Yahoo是
如何工作的,细节我后面会讲到 - 半年后他们说,Yahoo太烂,退了。
可怜Yahoo,就像当年IBM支持微软一样,不明不白的就培养出了一个白眼狼。
这样,Google就有了自己的功能:yahoo + 斯坦福大学的几个研究报告。
老二,老大都到位了,剩下的就是技术人员开始动手了。
你果真认为人类是世界上最成功的动物吗?真的吗?
如果你说是,那么很不幸,你没文化:低头看看地上的蚂蚁,它们无处不在,和人类一
样成功;抬头看看嗡嗡叫的蚊子 - 如果你能 - 它们也和你一样成功!!
你杀不完,煮不烂,击不溃它们!永远不能。
速度不快的坚持不懈的蠕动、迁移和尽心尽力的繁殖,才是王道,也是蚂蚁们和蚊子们
大肆繁荣的哲学原理。
布林如何不懂得这个生物界最基本的道理?
于是,Google架构的第一个特色就是:蠕动,迁移,和繁殖!
顺便说一句,我一定用最通俗的语言讲Google的架构,放心,保你高小文化也能看懂。
大家都知道老鹰眼神好,可你研究过老鹰是如何抓兔子的吗?
老鹰首先起飞,选一个区域,比如华北平原;盘旋一把,来到了十三陵水库边儿;选择
一个树木不茂盛之地,便于观察。于是开始漫长的盘旋和等待,等待兔子的出现,一爪
击之,吃掉!
老鹰抓兔子的办法和启示就是当年所谓不可一世的斯坦福大学的导致google产生核心思
想的论文的基本思想。
当然,Google没有老鹰那么的雄壮,low class的多得多,他们只能蠕动。
和老鹰起飞的逻辑一致,Google走的是地下路线,土行孙的路数,但也是先监视Web的动
作。
在讲web之前,我得先插一句,你们要知道,这世界可不是只有一种网络,Web,事实上
Web是最后的网络。在web之前,有电话网络、收音机网络、电报网络、电视网络。。等
等各种网络,他们和 Web完全不同。布林实际上最早琢磨的是如何监视和利用电视网络
,这样的话,google可以很容易的和营业额很差的一些服务供应商联营,实现盈利的目
的。
可惜,电视业的老大们,像著名的CNN之类的,不好使,看不到google的前景。于是布林
就断了此念头,专心于web。
web很简单,很容易监视。因为Web是通过地址本来实现的。
比如零零发家,中国北京市东城区鼓楼东大街xxxx号xxx楼。这就是一个确切的地址。
web也是一样编码,也有这样的地址,只不过它的写法不同,变成了64.233.189.99。(
这是google的地址)。
总之,我可以知道所有的地址-这不过是个数字游戏而已-,那么监视其内容也就顺理成
章了,对把?
但是,出乎布林意料的是,他碰到了前所未有的法律问题:我家的地址并不受法律保护
,但是我家的东西受保护,你不可以监视!!!!!!
的确,假如你家安了摄像机,世界上所有人都能看到你家的一举一动,你会不会很恼火
呢?
于是这些人开始反对google,理由只有一个:
我有反对被搜索被检测的权利!
这一下子,布林的google就处于了绝境,因为你违背了人类的隐私权!!
怎么办?
布林急得嘴角起跑,脚底生疮,团团措手,而毫无章法。难道说,google还没有起飞,
就夭折了吗???
布林琢磨来琢磨去,在纸上写了几条:
1。法律神圣不可侵犯。
在美国这地儿,你想和法律玩儿,简直是在找死,除非你有辛普森那样的大运,和金钱
- 即使你有,你也不能保证一定能赢。
2。搜集的信息源先用google自己的。
这就是Google网络图书馆的概念,goole和几所大学签了协议,建造这些电子图书馆。那
么我搜罗的信息都是我自己图书馆里里的,法律许可,你管不着。想必大家都在你工作
中、生活中使用了很多很多了。不在赘述。
3。每当搜索我自己的信息时,愿意发布自己信息的,把你的名字发布出去。
就凭着这三条,google从无到有,发展了起来。
随着时间的推移,服务供应商渐渐体会到在线搜索的好处,也越来越多地渐入到了发布
了行列。与此同时,服务也渐渐达成了不成文的共识:在DNS(就是地址本儿系统)许可
的范围之内的信息,属于可以搜索的合法的内容之列。
实际上,关于这个内容,就连最严格的塞班斯法案也并没能清楚地描述,理由很简单,
美国是一个强调民主的国家,个人、公司的利益高于一切,所以没有相关的硬性指示,
由各地区自行规定。
但是,在DNS系统之内的信息,比如一个不小心暴露的link,也能让google的引擎去探测
,钻探,最终让你的信息变得可以搜索。
怎么办?
google答应服务商,在NATP的概念上,google不涉及,不探测,不公布,不泄露。
NATP是个嘛东西呢?
我前面说了,你家是有公共地址的,比如零零发家的地址。但是,零零发家的厨房和客
厅是没有公共地址的,换句话说,你不会在地址本上找到:北京市。xxxxx。。。号厨房
;北京市。xxxxx。。。号客厅;这样的地址。
显而易见,厨房和客厅是私有的。这叫内网:内网无处不在。你只要运行一下你机器的
Ipconfig,看看你的IP地址是不是192.168。。。。。,如果是,那你就是处于内网,相
当于零零发家的厨房和客厅,外人看不到。
但有时候FanFan想向外人显摆她新买的新鞋,于是她就向全世界公开说,欢迎看我的新
鞋,请访问北京市。xxxxx。。。号客厅。
OK,这时候,内网的内容就临时性的公开到了外部,这叫NAT(网络地址转换),一旦
Fanfan显摆完了,她就关闭了这个临时公开的的地址。也就是说,北京市。xxxxx。。。
号客厅不存在了。
听明白了吗?这就是NATs技术的核心。。。我发现好多人NB烘烘的和我说,我懂P2P,我
懂NATS,。。这算个狗屁技术??!!??!。。不晓得这些年轻人在NB在炫耀什么?
!?!
话说回来,google答应服务商不去碰及所有有关内网的信息。
说实话,这也不是google多么的圣洁和高尚,因为内网信息的临时性,无法让google得
到持续一定的数据来源,这才是杀手锏。
就这样,在布林半情愿、不情愿的情况下,google建立了起来。
写道这里,各位可能会问:
布林哪儿来的钱建立他的图书馆的呢??一个穷学生怎么能有那么多钱呢???
我也想建图书馆,可是我没钱,咋办呢?
是阿,到底,布林怎么有了三头六臂,搞到了钱让他启动google呢?
难道是贩毒不成?请听下回分解。
在法律上合法以后,Google就开始了技术设计。
这地儿技术人员太少,所以我不做更深入的探讨,只描述个大概。
前面说了,有个WEB的监视设备,那么下一步就是对web的内容进行剖析,分解,和分布
。
在设定web剖析的策略之前,我们需要明确我们要剖析什么?
比如,一段Video,其中有萨朗私通不穿内裤接受询问的镜头,我想看,能找到不?
对不起,google的回答是:不能。
ok。我是一个音乐迷,我无意中听了一歌,唱到,“。。。欺骗之后的疲惫。。。”,
别的嘛也不知,那么我想找到这首歌,行吗?
对不起,google的回答是:不能。但是,google可以让你搜索歌词库,然后找到歌名。
这就明白了,google的搜索是基于文本的,而不是流媒体–就是指音频、视频等。
其实,流媒体搜索是很复杂的事情,其复杂性不在技术上,而在于商业模式,无法统一
,也无法实施。至于技术方面,早就风行世界的mpeg-7,mpeg-21标准,很容易就可以保
证流媒体的可搜索性。
按布林的说法,当时google如此决定完全是因为成本的原因:他不可能有钱做流媒体搜
索。
分析完文本之后,google将数据结果打包分类分布,他们用术语数据Barrel来形容,就
是数据筒,每个桶里都放着打包分类的数据。以加快搜索相应速度。
除此之外,完全依赖于操作系统本身自带的输入输出系统,无法做到高效率,于是
Google又开发了基于磁盘数据影射的搜索方式,绕过操作系统,直接搜索。这也并不困
难,无法就是缓冲磁盘阵列,然后进行代码的模式匹配-就好比你拿个筛子,合适尺寸的
走,不合适的留。
为了相应更高端的搜索要求,他们又做了仿射-也就是说,可以通过不同的途径找到同一
的内容。这个更是简单,如果你学过比较好的数学的话。
在这些基本的架构思想敲定后,google开始了服务器的布置,并实现了冗余部署。这个
很重要,冗余是保证效率的关键,其目的很简单:让最需要的人在最快的时间内存取最
需要的数据。
就这么简单。
为了管理冗余和分布式部署,google开发了全球的文件系统,每一个节点可以mount,也
可以卸掉ummont-就好比是需要的时候上车,不需要的时候下车。
这就是google的生蛆原理。不动声色的监视、蠕动、繁殖和分布。
技术上OK就可以了?就可以赚钱了?
可笑!记住,这世界,想赚钱,你得先有钱,所有那些记者们写的如何白手起家的故事
都是编排给穷人看的,好让他们有了生活的希望。
要玩钱了,这时候,拉姆·西里亚姆就出马了,这个天才的不折不扣的王八蛋该演戏了
。
于是,演出正式开始了。