Google 目前 Alexa 排名第一名
https://www.mrtx.cn/peqxxijsiitnews
Google 目前 Alexa 排名第1。它诞生于 1997 年,当时是一个研究性项目,每个月 build 一次索引,build 出来的索引通过 sharding(shard by doc)的方式分散到多台服务器(Index Server)上,具体的网页数据同样通过 sharding 的方式分散到多台服务器(Doc Server)上,当用户提交请求时,通过前端的一台服务器将请求提交给 Index Server 获得打了分的倒排索引,然后从 Doc Server 提取具体的网页信息(例如网页标题、搜索关键词匹配的片段信息等),最终展现给用户。
随着索引的网页增加,这个结构可通过增加indexserver以及docserver来存储索引以及网页的数据,但仍然会面临其他很多方面的问题,于是在这之后的十多年的时间里,google做了很多事情来改进上面的结构。
1999年,google增加了一个cachecluster,用来cache查询的索引结果和文档片段信息,同时将indexserver和docserver通过replicate的方式变成了cluster。这两个改造带来的好处是网站的响应速度、可支撑的访问量以及可用性(availability)得到了提升。这个变化造成了成本的增加,google在硬件方面的风格始终是不用昂贵的高端硬件,而是在软件层面来保证系统的可靠性及高性能,于是同年,google开始采用自行设计的服务器来降低成本。2000年,google开始自行设计datacenter,采用了各种方法(例如采用其他的制冷方法来替代空调)来优化pue(能源利用率),同时对自行设计的服务器也做了很多化。2001年,google对index的格式进行了修改,将所有的index放入内存,这次改造带来的好处是网站的响应速度以及可支撑的访问量得到了极大的提升。2003年,google发表了文章googleclusterarchitecture,其cluster结构组成为硬件lb+indexcluster+doccluster+大量廉价服务器(例如ide硬盘、性价比高的cpu等),通过并行处理+sharding来保证在降低对硬件要求的同时,响应速度仍然很快。同年google发表了关于google文件系统的论文(gfs在2000年就已经上线),这篇论文很大程度也体现了google不用昂贵硬件的风格,通过gfs+大量廉价的服务器即可存储大量的数据。2004年,google再次对index的格式进行了修改,使得网站的响应速度继续提升。同年google发表关于mapreduce的论文,通过mapreduce+大量廉价的服务器即可快速完成以前要使用昂贵小型机、中型机甚至是大型机才能完成的计算任务,而这显然对于google快速地构建索引提供了很大的帮助。2006年,google发表了关于bigtable的论文(2003年开始上线),使得海量数据的分析能够达到在线系统的要求了,这对于google提升网站的响应速度起到了很大的帮助。
以上3篇论文彻底改变了业界对于海量数据的存储、分析和检索的方法(小道消息:google内部已完成了gfs、mapreduce、bigtable的替换),也奠定了google在业界的技术领导地位。
在一些场景中,google也采用mysql来存储数据。同样,google对mysql也做了很多修改,它使用的mysql信息可以从https://code.google.com/p/google-mysql/了解。
2007年,google将build索引的时间缩短到分钟级,当新网页出现后,几分钟后即可在google搜索到,同时将indexcluster通过protocolbuffers对外提供service,以供google各种搜索(例如网页、图片、新闻、书籍等)使用,除了indexcluster提供的service外,还有很多其他的service,例如广告、词法检查等。google的一次搜索大概需要调用内部50个以上的service,service主要用c++或java来编写。2009年,google的一篇《howgoogleuseslinux》文章,揭示了google在提升机器利用率方面也做了很多的努力,例如将不同资源消耗类型的应用部署在同一台机器上。
在之后,google又研发了colossus(下一代类gfs文件系统)、spanner(下一代类bigtable海量存储和计算架构)、实时搜索(基于colossus实现),主要都是为了提升搜索的实时性以及存储更多数据。除了在海量数据相关技术上的革新外,google也不断对业界的传统技术进行创新,例如提高tcp的初始拥塞窗口值、改进http的spdy协议、新的图片格式webp等。
在 google 的发展过程中,其技术的改造主要围绕在可伸缩性、性能、成本和可用性 4 个方面,google 不采用昂贵硬件的风格以及领先其他网站的数据量决定了其技术改造基本都是对传统的软硬件技术的革新。