当前位置:首页 > 问答 > 正文

其实就是想说Google云背后的那些基础架构,聊聊它怎么撑起整个服务的运行和扩展

你得知道Google云不是一台超级大的电脑,它是一个由遍布全球的、数量极其庞大的普通服务器组成的巨大网络,这些服务器被安置在叫做“数据中心”的巨大建筑物里,你可以把它们想象成数字时代的超级仓库,只不过里面存放和运转的不是货物,而是海量的数据和处理能力。

基石:全球数据中心网络

其实就是想说Google云背后的那些基础架构,聊聊它怎么撑起整个服务的运行和扩展

Google在全球各地建设了多个这样的数据中心区域,每个区域又包含多个“可用区”,这就像是开连锁超市,你不会把所有的货物都放在一个仓库里,否则那个仓库一停电或者出点什么事,整个生意就瘫痪了,Google也是这么做的,把它的服务分散到世界各地,你可能在亚洲访问Google云服务,你的请求可能就会被离你最近的一个亚洲数据中心处理,这样速度最快,如果这个数据中心因为自然灾害或维护暂时不可用,系统会自动把你的请求切换到另一个区域的数据中心,你甚至都感觉不到中断,这种设计保证了服务的高可用性和可靠性。(来源:Google Cloud官方架构说明)

核心秘密:三大软件系统

其实就是想说Google云背后的那些基础架构,聊聊它怎么撑起整个服务的运行和扩展

光有硬件仓库还不够,关键是如何高效、智能地管理这些海量机器,这里就要提到Google内部研发的、后来部分思想也应用到Google云上的三套核心软件系统,它们是真正的“大脑”。

  1. Borg(博格): 这是Google的“全局调度员”,想象一下,你有几百万台服务器,每天要运行数十亿个任务,比如处理一次搜索请求、存储一张用户照片、分析一段视频内容等等,Borg系统就像是一个超级聪明的管家,它知道每一台服务器的“身体状况”(比如CPU用了多少、内存还剩多少),也知道每个任务的“需求”(比如需要多少计算力、需要什么样的硬盘),当一个新的任务进来时,Borg会立刻在全世界的数据中心里,为它寻找最合适、最空闲的“工位”(服务器),然后把它安排上去运行,这样就能确保没有机器在偷懒,所有资源都被最大限度地利用起来了,Kubernetes这个现在非常火热的容器编排系统,其设计思想就源于Borg。(来源:Google研究论文《Large-scale cluster management at Google with Borg》)

    其实就是想说Google云背后的那些基础架构,聊聊它怎么撑起整个服务的运行和扩展

  2. Colossus(巨像): 这是Google的“超级文件柜”,是下一代Google文件系统,我们手机、电脑上的文件是存在硬盘里的,那Google的海量数据(比如YouTube上的所有视频、Gmail里的所有邮件)存在哪里呢?就存在Colossus管理的系统中,它的设计非常巧妙,它会把一个文件,比如你上传的一段视频,自动切成很多个小碎片,然后把这些碎片加上纠错码,分别存储在不同数据中心、不同机架的多台服务器上,这样做有两个巨大好处:第一,即使同时坏掉好几块硬盘甚至一整台服务器,你的数据也不会丢,因为可以从其他碎片里恢复出来;第二,当很多人同时要看这个视频时,系统可以从多个地方同时读取碎片,拼凑起来给你,速度就非常快,这实现了极高的可靠性和扩展性。(来源:对Google早期文件系统GFS的演进分析及技术报告)

  3. Spanner(扳手): 这是Google的“全球一致性账本”,对于像银行转账、订单交易这样的服务,数据的一致性至关重要,比如你账户里有100元,花掉50元后,必须在全世界任何一个地方查询,余额都必须是50元,不能出现差错,传统的数据库很难在遍布全球的数据中心之间做到这一点,因为网络总有延迟,但Spanner通过使用一种非常精密的全球时间同步技术(甚至动用了原子钟和GPS),实现了跨洲际数据中心还能保持强一致性的数据库服务,这意味着,Google云上的应用可以像使用一个本地数据库一样,去使用一个实际上分布在全球的数据库,既享受了全球部署的低延迟,又保证了数据的绝对准确,这是一个革命性的技术。(来源:Google研究论文《Spanner: Google’s Globally-Distributed Database》)

如何支撑扩展?

有了这些底层系统,Google云的扩展就变得非常灵活和自动化,当用户量激增,需要更多计算资源时,Google不需要手动去机房一台台地装新服务器,它可以通过软件命令,自动在资源池里调配出更多的“虚拟机”(通过Borg调度)或者“容器”来分担压力,存储空间不够了,Colossus会自动管理硬盘空间,感觉就像拥有一个无限大的硬盘,需要全球用户都能快速访问同一个应用?Spanner这样的数据库可以帮你轻松搞定数据同步问题。

Google云背后的基础架构,其核心思想就是:用软件定义一切,用自动化管理一切,用冗余和分布式来保证可靠。 它把成千上万台普通的机器,通过极其复杂的软件系统编织成一台坚不可摧、弹性伸缩的“全球超级计算机”,我们平时使用的Google搜索、Gmail、YouTube,以及无数企业跑在Google云上的服务,都是安稳地运行在这个庞大而精密的系统之上的。