服务热线:400-0033-166
万商云集 - 企业数字化选用平台

企业首选的

数字选用平台

Google网站的服务器基本架构,值得研究学习。

2020-12-31 14:35:07 阅读(185 评论(0)

Google,无疑是互联网时代最闪亮的明星。截至今天,Google美国主站已连续三年在Alexa排名第一。在Alexatop100中,各国Google分站占据了20多个名额,不得不感叹Gogle的实力。无论何时何地,无论你搜索多么不受欢迎的词汇,只要你的计算机连接到互联网,只要你轻轻点击“谷歌搜索”,所有相关内容谷歌都将在1秒内完成,这甚至比你查询“我的文档”更快。这就是为什么谷歌创业12年,市值超过2000亿美元。有些人可能会认为谷歌有几台超级计算机,比如“蓝色基因”来处理各种数据和搜索,事实是什么?下面我们将详细分析神奇谷歌的神奇结构。硬件:截至2010年,谷歌大约有100万台服务器和500多个计算机集群来处理不同地区的不同任务。不幸的是,在多个文献库中找不到服务器的详细配置和最新集群的具体情况。我个人理解,这可能是一个商业秘密。也许是因为秘密,强大的谷歌计算机集群没有提交谷歌500计算机的申请。多年来,我们在谷歌500中看不到谷歌的影子。(进入前500需要提交并披露其计算机系统的详细配置)但根据文献,可以肯定的是,45万台服务器不是昂贵的服务器,而是非常普通的电脑级服务器,两年前服务器硬盘一般是IDE接口,使用电脑级主板而不是昂贵的服务器专用主板。谷歌的集群都是自己建造的,没有先进昂贵的集群连接技术,比如Myricom的Myrinet或者Giganet的CLAN。谷歌数据中心和服务器之间的不同耦合程度是根据需要连接的。那么gogle的存储呢?谷歌存储着大量的信息,近1000亿个网页,数百亿张图片。Google的存储容量早在2004年就达到了5PB。许多读者一开始可能认为谷歌使用EMCSymetrix系列磁盘阵列来保存大量信息,但谷歌的实际做法再次让我们惊讶——谷歌没有使用任何磁盘阵列,即使是低端磁盘阵列也是无用的。Google的方法是配备两个普通IDE硬盘存储集群中的每个PC级服务器。然而,谷歌并非所有设备都落后。至少这些硬盘的速度很高,每个服务器的内存相对较大。谁是最大的电脑DIY消费者?恐怕谷歌又登上了DIY宝座。谷歌的绝大多数服务器甚至不购买大品牌,而是购买各种廉价零件并自行组装。有趣的是,谷歌对现有PC电源的功耗非常不满意,甚至自己设计了谷歌专用服务器电源。很快,我们就有了问题。这样一个由PC级服务器构建的系统,怎样才能承受巨大的工作负荷?如何保证高可用性?事实上,这些低端服务器经常发生故障——硬盘断路、系统停机等事故,实际上每天发生在45万台服务器中。Google的方法是设置镜像站。以谷歌主站为例,2003年在美国硅谷和弗吉尼亚设立了多个镜像站。其实这些镜像站并不是传统的镜像站。真正的镜像站是双机热备,当一台服务器停机时,另一台服务器接管相关任务。事实上,Google镜像站的真正职责是DNS负载均衡,所以一些Google镜像站本身也有自己的镜像站。这里举个例子来说明谷歌镜像站的作用:一次访问,DNS正常分析到A,但当A负载过大时,DNS服务会将域名分析到B,这不仅实现了冗余,而且减少了投资。由于不是双机热备,镜像站的内容在一定时间内可能会有所不同,但对于精度要求较低的普通检索来说,这不是问题。平台:GFS/MapReduce/BigTable/LinuxGFS/MapReduce/BigTable/这三个平台是Google最引以为傲的平台,都是Linux以上的架构。首先,让我们看看GFS(GoogleFileSystem)Google文件系统。在检索一般数据中心时,我们知道需要使用数据库系统。然而,谷歌的情况非常特殊——谷歌拥有世界上数百亿个网络文档。如果使用传统数据库系统进行检索,则可以想象检索速度。因此,当Crawlers收集到许多新的Web时,Google将许多Web收集到一个文件中进行存储管理,Google将Web文件压缩成Chunk块,以进一步减少占用空间(64MBChunk)。最后,Google只检索压缩部分。而GFS(GoogleFileSystem)GFS包括GFSMaster服务器和Chunk服务器,正是在这种检索技术上构建的文件系统。如下图所示,系统流程从GFS客户端开始:GFS客户端以Chunk偏移量制作目录索引并发送请求-GFSMaster通过Chunk映射表映射反馈客户端-客户端具有Chunk和Chunk位置,并缓存文件名和Chunk目录索引,向chunk服务器发送请求-chunk服务器回复请求传输chunk数据。如果读者有点困惑,这是正常的,因为只有少数搜索引擎公司使用这种技术。如果读者有点困惑,这是正常的,因为只有少数搜索引擎公司使用这种技术。简单地说,谷歌使用GFS大大简化了搜索的难度。除GFS外,Mapreduce还为Gogle做出了巨大贡献。谷歌拥有不少于45万台服务器,似乎每台服务器的功能都非常清晰,但有一个重要的协作问题需要解决:如何并发计算,如何分布数据,如何处理失败,如何平衡负载?我们可以预见,无数的代码将用于协同问题,而且很可能效率低下。这时,Mapreduce就派上用场了。Mapreduce是Google开发的Cogle 大规模数据集并行运算的编程工具。Mapreduce的主要功能是提供一个简单而强大的接口,可以自动并发和分布计算。通过这种方式,可以通过普通PC集群实现高性能。Mapreduce主要从两个方面改进系统:一是计算机故障问题。如果一台计算机失败或I/O出现问题——这在谷歌中由廉价服务器组成的集群中非常常见。Mapreduce的解决方案是用多台计算机同时计算任务。一旦计算机有结果,其他计算机将停止任务并进入下一个任务。此外,Mapreduce之间传输的数据被压缩,节省了大量带宽资源。至于BigTable,它是一个适合处理半结构化数据的系统,用于处理大数据量。谷歌心经:谷歌总是试图用最少的钱,做最多的事。不要低估那些便宜、不可靠的PC服务器。一台服务器可能不可靠,但45万台的有机集成已成为世界上最完善、最稳定的系统之一。Google在采购服务器方面从未一次大量购买,都是有需求再次购买。另一个能体现Google精打细算的方面是Google尽可能压缩所有能压缩的文件。Google的设计理念非常前卫,包括软件和硬件。Google尝试了许多仍在实验室中的萌芽技术。正如上面提到的,许多都取得了巨大的成功。Google的早期目标是在0.5秒内制作搜索结果,但实际上目前的平均时间已经缩短到0.25秒。此外,谷歌从未停止过研究,现在仍在测试OpenSoalris,观察OpenSoalris是否能取代Linux。谷歌的行为很踏实。不参加Top500评选,文献中也很少有相关资料。可见谷歌并不吹嘘,也没有过度宣传,只是勤勤恳恳地更新程序,优化集群。如今,谷歌包含了绝大多数人类语言的网页,并在大多数国家建立了谷歌分站,包含的网页也在增加,全球影响是不言而喻的。学习谷歌的结构,向谷歌的成就致敬。Google是伸缩之王。谷歌的目标一直是建立高性能、高伸缩性的基本组织来支持其产品。大量平台Linux语言:Python,Java,C 2006年,大约有4.5万台廉价服务器,到2010年增加到1万台。Google在2005年索引了80亿Web页面,现在没有人知道具体数量,近1000亿并在增长。Gogle目前有500多个GFS集群。一个集群可以有1000台甚至5000台机器。数千台机器从运行5万万字节存储的GFS集群中获取数据。集群的总读写吞吐量可以达到每秒40兆字节。目前Google有6000个Mapreduce程序,每个月都写成100个新程序Bigtable伸缩存储数十亿URL。数百千兆卫星图片和数亿用户参数选择堆栈谷歌形象化其基本组织为三层结构:1、产品:搜索、广告、email,分布式系统基本组织:地图、视频、聊天、博客2:GFS,Mapreduce和BigTable3,计算平台:一组不同数据中心的机器4,确保公司内人员部署起来的费用很小,在避免丢失日志数据的硬件上花费更多的钱,而其他类型的数据则花费更少可靠的存储机制GFS(GoogleFileSystem)可靠的伸缩性存储是任何程序的核心需求。GFS是Gogle的核心存储平台2,GoogleFileSystem–Google在大型分布式结构化日志文件系统中投入了大量数据3。为什么要建立GFS而不是使用现有的东西?因为你可以自己控制一切,而且这个平台和其他平台不一样,谷歌需要:-跨数据中心的高可靠性——成千上万的网络节点的可伸缩性——大读写带宽的需求——支持大数据,这可能会减少数千兆字节-高效跨节点操作分发的瓶颈。4.系统中有Master和chunk服务器——Master服务器,在不同的数据文件中保持元数据。数据以64MB为单位存储在文件系统中。数据以64MB存储在文件系统中。客户端与Master服务器沟通,在文件上进行元数据操作,找到包含用户需要数据的Chunk服务器-Chunk服务器,在硬盘上存储实际数据。为了避免服务器崩溃,每个Chunk服务器跨越三个不同的Chunk服务器备份。一旦Master服务器指示,客户端程序将直接从Chunk服务器读取文件6。一个在线新程序可以使用现有的GFS集群或制作自己的GFS集群7。关键是要有足够的基本组织让人们选择自己的程序。GFS可以调整以满足个别程序的需要。使用Mapreduce处理数据1,现在你有了一个很好的存储系统,你应该如何处理这么多的数据?例如,您在1000台机器上存储了许多TB数据。例如,您在1000台机器上存储了大量TB数据。数据库不能扩展到这个水平,这就是Mapreduce出现的原因2。Mapreduce是一种编程模型和相关实现,可以处理和生成大量的数据集。用户指定map方法处理键/值对生成中间键/值对,并将所有相关中间键的中间值合并为reduce。这种模型可以用来表达现实世界中的许多任务。以这种风格编写的程序将在大量机器的集群中自动并行运行。系统照顾输入数据划分、程序在机器集之间的调度、机器故障处理和必要的内部机器通信等细节。这使得程序员很容易使用一个大型分布式系统资源3,而没有太多平行和分布式系统的经验。为什么使用Mapreduce?-处理机器失败的好方法——可以与不同类型的程序一起工作,比如搜索和广告。几乎任何程序都有map和reduce类型的操作。您可以提前计算有用的数据、查询字数统计、TB数据排序等4。Mapreduce系统有三种不同类型的服务器——Master服务器,将用户任务分配给Map和Reduce服务器。它还跟踪任务状态-Map服务器接收用户输入,并在此基础上处理Map操作。结果写入中间文件-Reduce服务器接收Map服务器生成的中间文件,并在此基础上处理reduce操作5。例如,您希望在所有web页面中的字数。将存储在GFS中的所有页面抛入Mapreduce。这将在成千上万台机器上同时进行,所有的调整、工作调度、失败处理和数据传输都将自动完成——类似于步骤:GFS->Map->Shuffle->Reduction->StoreResultsbackintoGFS-在Mapreduce中,一个map操作将一些数据映射到另一个

内容来源:网络,以上内容来源于网络,不代表本站观点,如有侵权,请联系删除。

最新文章