The Chubby lock service for loosely-coupled distributed systems
📜 Abstract
We describe our experiences with the Chubby lock service, which is intended to provide coarse-grained locking as well as reliable (though low-volume) storage for a loosely-coupled distributed system. Chubby provides an interface much like a distributed file system with advisory locks, but the design emphasis is on availability and reliability, as opposed to high performance. Many instances of the service have been used for over a year, with several of them each handling a few tens of thousands of clients concurrently. The paper describes the initial design and expected use, compares it with actual use, and explains how the design had to be modified to accommodate the differences.
✨ Summary
Chubby presents a highly available, Paxos-replicated coordination service designed primarily for coarse-grained locking, leader election, and reliable storage of small amounts of metadata. Its file-system-like namespace combines advisory locks, atomic whole-file operations, ephemeral nodes, access control, event notifications, consistent client-side caching, sessions, leases, and sequencers for protecting operations against delayed or reordered messages. The system prioritizes availability, reliability, and understandable semantics over throughput and large-scale storage. Operational experience showed that Chubby was used more often as a name service and configuration repository than as a lock manager, and that caching, protocol-conversion servers, lease adaptation, and careful control of client behavior were more important for scalability than optimizing individual server request paths.
The paper documents Chubby’s use inside Google for systems including GFS and Bigtable, particularly for primary election, service discovery, and metadata storage. Google’s publication record identifies the work as a 2006 OSDI paper by Mike Burrows. (usenix.org)
A concrete subsequent research influence is Apache ZooKeeper. The ZooKeeper paper explicitly identifies Chubby as a closely related coordination system and adopts a similar file-system-like namespace and replicated-consistency approach, while deliberately replacing Chubby’s lock-centric, leader-directed interface with wait-free data objects, watches, and client-implemented synchronization primitives. The ZooKeeper authors also state that this design enables broader and higher-throughput use of the coordination service. (usenix.org)
Thus, the paper’s documented influence is primarily architectural: it helped establish the coordination-service pattern in which consensus, membership, naming, configuration, leader election, and failure handling are provided by a shared service rather than independently embedded in every distributed application.