开篇作者主要介绍了谷歌内部的分布式锁服务 Chubby,可以在分布式环境下提供粗粒度的锁服务,可在大规模小型机器组成的松耦合分布式系统中实现同步、存储元数据、拓扑结构或者配置信息等功能。
谈到如何实现异步的一致性,Chubby 的解决方案是引入 Paxos,作者也提到当时的普遍情况是,只要涉及到实现异步一致性的系统其内部实现或多或少都有 Paxos 算法的影子。作者强调这篇论文并不涉及新提出的算法,而只是聚焦于工程实现和后续优化提升。事实上整篇论文并不涉及一致性算法。
中心化锁服务
第二部分作者叙述了为什么他们选择做一个中心化的锁服务,开发者使用本地客户端去访问这个 lock service,而不是创建一个 Paxos 算法库供给开发人员使用。作者阐述这样的原因既是由开发者需求决定的,也是由于中心锁服务能减少应用依赖的服务个数。这样的设计要求客户端能够主动发现中心服务的数据变更,同时客户端需要能缓存信息,减少对服务器的压力,当然还需要做一些访问限制。
接下来作者叙述为什么他们选择提供粗粒度的锁服务而不是细粒度的,因为这样可以使得锁的持有时间较长,减少服务器压力;细粒度的锁服务即使是遇到小规模不可用也会导致大量 client 停止工作;应用开发者可以自己对业务内部实现细粒度的锁。
系统架构
在系统结构这部分,Chubby 主要有两个组成部分,server 和 client library。Chubby 内部有一个 Chubby Cell 的概念,