SRE:Google运维解密
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

软件基础设施

Google的底层软件基础设施的设计目标是最高效地使用Google的硬件基础设施。我们的代码库大量采用了多线程设计方式,一个任务实例可以同时利用很多个CPU。每个软件服务器都有一个内置的HTTP服务,提供一些调试信息和统计信息,供在线调试、监控等使用。

所有的Google服务之前都使用远程调用(RPC)通信,称为Stubby。我们目前还公布了一个开源实现,gRPC。[6]有时候,一个程序的内部函数调用也会用RPC实现,因为未来有需要时,可以很容易地将其重构为多个组件并行的架构。GSLB 对RPC的负载均衡有良好的支持。

通常来说,一个软件服务器从该服务的前端(frontend)接收RPC请求,同时将另外一些RPC发往该服务器的后端(backend)。一般来说,前端被称为客户端(client),后端被称为服务端(server)。

Protocol Buffer[7]是Google RPC的传输格式,通常简写为Protobuf,与Apache Thrift类似。Protobuf 相比XML有很多优势,更为简单易用,数据大小比XML格式要小3~10倍,序列化和反序列化速度快100倍,并且协议更加明确。