专业书籍精读 · SRE · 第 2 章

Google 的生产环境:一台数据中心大小的计算机

Site Reliability Engineering · Ch 2 · Google(JC van Winkel)· 2016

EN →

这一章讲什么?

你在 Google 搜一个词,零点几秒出结果。这背后不是「一台特别强的机器」,而是几万台普通机器,外加一整套软件把它们黏成一台机器。SRE 这本书的第 2 章就是带你参观这台「数据中心那么大的计算机」——它不教任何做法,只交代后面十几章所有做法的物理前提。

先打个比方

把它想成一座巨型工厂。以前的运维像养宠物:每台机器有名字、有脾气,谁病了谁半夜爬起来照顾。机器只有十台时这么干没问题,十万台就不行了——按概率算,每天都有一批在坏。

于是 Google 换了个办法:请一个总工头。你不再说「让 37 号机器去跑这个程序」,而是贴一张任务单——「这活要 20 份,每份给我一个 2 核 4G 的工位,别把 20 份全塞在同一排」。工头自己去排班;哪个工人病了,它把活挪给别人,你连知道都不用知道。

旧世界为什么难

难点不在「机器会坏」,而在数量一大,坏就从意外变成了日常。人盯不过来,也不该盯。真正要做的是把「哪台机器」这件事整个藏起来,让人只关心「服务还在不在、快不快」。这章的价值就在于:它把这套藏法摊开给你看。

核心机制直觉:「机器」不是「服务器」

这一章开头先抠一个词。日常说的「服务器」其实是两样东西:一台铁疙瘩,和跑在它上面的一段程序。书里把它们硬性分开——铁疙瘩叫「机器」,程序叫「服务器」。一台机器上常年同时跑着好几个不相干的程序;反过来,一个服务的几十份程序散落在几十台机器上。分清这两件事,你才能听懂那句关键的话:机器死了,服务没死。

剩下的就是三样底座。一个总调度,负责把程序摆到机器上,坏了就重摆;一套层层垒起来的存储,你存一份文件,它自动摊到几千块盘上,坏几块不影响你;一张快得离谱的内部网,让「跨机器」这件事便宜到可以随便跨——这正是拆成几万台小机器还能协同干活的前提。另外还有个不起眼但要命的角色:一块所有人都信的公告板,「现在谁是主」「某个服务在哪」都写在上面,大家照着它走,就不会各执一词。

带来了什么

好处是:机器坏掉从事故降级成日常,人不用起夜,扩容变成改一个数字。代价也就一句话——所有人都踩在同一批底座上,那块公告板要是糊了,全体一起糊。

一句话记住

Google 的生产环境不是「很多台服务器」,而是一台数据中心那么大的计算机:调度、存储、网络被抽象成统一底座,人只声明「我要什么」,不关心「它落在哪台机器上」。

想看具体组件、分层图和权衡? → 切到精读版