Cloud computing demands cheap, always-on, and reliable storage. We describe Pahoehoe, a key-value cloud storage system we designed to store large objects cost-effectively with high availability. Pahoehoe stores objects across multiple data centers and provides eventual consistency so to be available during network partitions. Pahoehoe uses erasure codes to store objects with high reliability at low cost. Its use of erasure codes distinguishes Pahoehoe from other cloud storage systems, and presents a challenge for efficiently providing eventual consistency. We describe Pahoehoe's put, get, and convergence protocols—convergence being the decentralized protocol that ensures eventual consistency. We use simulated executions of Pahoehoe to evaluate the efficiency of convergence, in terms of message count and message bytes sent, for failure-free and expected failure scenarios (e.g., partitions and server unavailability). We describe and evaluate optimizations to the naive convergence protocol that reduce the cost of convergence in all scenarios.
['Eric Anderson', 'Xiaozhou Li', 'Arif Merchant', 'Mehul A. Shah', 'Kevin Smathers', 'Joseph Tucek', 'Mustafa Uysal', 'Jay J. Wylie']
Efficient eventual consistency in Pahoehoe, an erasure-coded key-blob archive