{时间:2003年3月4日}
{地点:加州-帕洛阿尔托}
无论哪个时候谦虚总是好的,但是过于谦虚有时候难免给人误会。所以面对Kaltix三人组,宁子默并不谦虚。
Kaltix三人组说掌握的技术,确实是针对峰语的PageRank去做的提升。但Bing同样在网页页面权重方面有自己的专用算法,搜索引擎本质上的共性让Kaltix技术的融入并不存在问题。
问题在于,如何将Kaltix三人组纳入旗下。这可不是简单地把Kaltix三人组挖过来那么简单,而是对峰语和Bing相对此消彼长的“骚操作”。
既然是此消彼长,宁子默不介意亮亮肌肉。
用迅雷不及掩耳之势,拿下三人!
于是,这一番大数据搜索的延伸场景摆在2003年这个时代,已经不足以用惊艳来形容。
包括霍夫曼在内,办公室里呆着的四人一幅“懵逼”的样子盯着宁子默,让宁子默一时间有种“说过了”的感觉。
确实,刚刚讲的东西对眼前的四人而言。
太超前了!
他们的理解,
或许还跟不上。
没想到赛普突然张了张嘴,小心翼翼地说,“宁,我们三人曾就峰语搜索引擎讨论过搜索引擎技术的发展。本以为我们的展望已经十分超前,没想到你铺开在我们面前的那副画卷完全超越过我们曾经的想象。”
眼前这位叫做宁的年轻人,不仅仅是大名鼎鼎的倍宝COO,竟然还是【领赢】和【MySpace】的联合创始人。
他已经在过去的数个项目中展现了他的创造力,却没想到他在搜索引擎这么专业的领域竟然有着超越这个时代的独到见解。
他关注的不仅仅是技术,更是科技,或者说互联网技术在人类文明未来的发展中所起到的关键作用。
如果说以前很多人问自己-搜索引擎可以干什么,自己的回答最多会比宁给出的答案更好一些:
“搜索引擎可以帮你更快速找到更专业、更详尽的答案。”
但是今天过后,赛普觉得他或许会给问出问题的人一个更好的答案。
或者说,今天过后,他突然给不出别人一个答案。
搜索引擎可以做什么?
宁已经讲得清清楚楚,
但那个未来,
离现在确实还很远。
想到这里,赛普鼓起勇气问到,“宁,你说描绘的画卷绝对是搜索引擎未来最值得去探索的发展方向。”
抱歉地点了点头,赛普讪笑着说,“并不是说我不看好你所说的未来,而是我意识到你所说的那个未来,离我们有些远。它一定会用到大量的新技术去实现,而那些技术并不是一个简简单单的团队可以完成的。
甚至就连目前在搜索引擎领域十分领先的峰语,就算它有足够的技术积累,也不能在短期内达成你所说的那个未来。单单如何将网页文件串联成数据,并以数据库查询的方式来实现搜索,都是个目前短期内难功课的难点。”
“梦想总是要有的,要不然怎么去一步一步实现它?”
宁子默把有关梦想的话变了个说话,就在赛普表态的同时,他已经想到了更深层次的东西。
宁子默明白,有一些人,仅仅只靠画饼是不能完全说服的。
自己必须拿出完全体来对付这帮同样有梦想的年轻人!
宁子默自信地笑笑,乘着抿一口咖啡的时间在脑子里将峰语搜索的关键技术汇集成册。
把杯子从嘴边拿开的时候,宁子默脑子里有关峰语搜索关键技术的封印,
已然打开!
“说到搜索,人们往往会简单地认为搜索只是抓取爬虫从网络上抓取的结果。但实际上,搜索并没有人们想象的那么简单。”
宁子默将杯子轻轻地放在桌上,笑着扫了三人一眼,细细地解释到:
“我们谈到大数据搜索,其核心一定是体量极大的数据量。这种体量的数据存储、索引和检索,已经不单单是数据库结构能去实现并解决的。
大数据量的数据存储和搜索一定要有对应的文件存储检索系统,它必定是一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。
我们【Bing】除了在搜索和爬虫上用心外,最核心的部分还是背后那套围绕在BFS(BingFileSystem)文件系统的核心技术体。这套系统的设计目标,与许多传统的分布式文件系统有很多相同之处。比如,性能、可伸缩性、可靠性以及可用性。
但BFS的还是以应用负载情况和技术环境的分析为基础着重考虑,不管现在还是将来,BFS和早期的分布式文件系统的设想都有明显的不同。所以我们重新审视了传统文件系统在设计上的折衷选择,衍生出了完全不同的设计思路。
首先,组件失效被认为是常态而不是意外。BFS需要管理成百上千存储机器,同时被相当数量的用户终端机访问。BFS组件的数量和质量导致在事实上,任何给定时间内都有可能发生某些组件无法工作,某些组件无法从它们目前的失效状态中恢复。
当我们遇到过各种各样的问题,比如应用程序bug、操作系统的bug、人为失误,甚至还有硬盘、内存、连接器、网络以及电源失效等造成的问题。所以,持续的监控、错误侦测、灾难冗余以及自动恢复的机制必须集成在GFS中。
其次,以通常的标准衡量,我们的文件非常巨大。数GB文件都可能非常普遍。每个文件通常都包含许多应用程序对象,比如web文档。
当我们未来需要处理快速增长并由数亿个对象构成的、数以TB的数据集时,采用管理数亿个KB大小的小文件的方式是非常不明智的,尽管有些文件系统支持这样的管理方式。因此,设计的假设条件和参数,比如I/O操作和Block的尺寸都需要重新考虑。
第三,绝大部分文件的修改是采用在文件尾部追加数据,而不是覆盖原有数据的方式。对文件的随机写入操作在实际中几乎不存在。一旦写完之后,对文件的操作就只有读,而且通常是按顺序读。