June 26, 2015
Cheng Li
Online services often use replication for improving the performance of user-facing services. However, using replication for performance comes at a price of weakening the consistency levels of the replicated service. To address this tension, recent proposals from academia and industry allow operations to run at different consistency levels. In these systems, the programmer has to decide which level to use for each operation. We present SIEVE, a tool that relieves Java programmers from this error-prone decision process, allowing applications to automatically extract good performance when possible, while resorting to strong consistency whenever required by the target semantics. Taking as input a set of application-specific invariants and a few annotations about merge semantics, SIEVE performs a combination of static and dynamic analysis, offline and at runtime, to determine when it is necessary to use strong consistency to preserve theseinvariants and when it is safe to use causally consistent commutative replicated data types (CRDTs). We evaluate SIEVE on two web applications and show that the automatic classification overhead is low.
If time permits, I will also briefly introduce our work in progress, which addresses limitations of existing multi-level consistency proposals and minimizes the coordination in replicated systems. In this work, we first define the consistency semantics of various operations as visibility restrictions between operations. Second, we build a replication and coordination middleware to efficiently execute and replicate operations with respect to their corresponding restrictions.
This is a joint work with Rodrigo Rodrigues (Instituto Superior Tecnico, Lisbon), Allen Clement (MPI-SWS/Google), Nuno Preguica (Nova University of Lisbon), Viktor Vafeiadis (MPI-SWS) and Joao Leitao (Nova University of Lisbon).