Putting the Consistency Back Into Eventual Consistency
Valter Balegas, Mahsa Najafzadeh, Sérgio Duarte, Carla Ferreira, Marc Shapiro, Rodrigo Rodrigues, Nuno Preguiça · 2014
Geo-replicated storage systems are at the core of current In-ternet services. The designers of the replication protocols used by these systems must choose between either support-ing low-latency, eventually-consistent operations, or ensur-ing strong consistency to ease application correctness. We propose an alternative consistency model, Explicit Consis-tency, that strengthens eventual consistency with a guaran-tee to preserve specific invariants defined by the applica-tions. Given these application-specific invariants, a system that supports Explicit Consistency identifies which opera-tions would be unsafe under concurrent execution, and al-lows programmers to select either violation-avoidance or invariant-repair techniques. We show how to achieve the for-mer, while allowing operations to complete locally in the common case, by relying on a reservation system that moves coordination off the critical path of operation execution. The latter, in turn, allows operations to execute without restric-tion, and restore invariants by applying a repair operation to the database state. We present the design and evaluation of Indigo, a middleware that provides Explicit Consistency on top of a causally-consistent data store. Indigo guarantees strong application invariants while providing similar latency to an eventually-consistent system in the common case. 1.