When Eventual Consistency is Not Enough: from Causality to Transactions
Slides for talk at RICON 2015, where I discuss how to provide extra guarantees on key-value stores beyond eventual consistency and the associated prices.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary When Weak Consistency is not Enough: From Causality to Transactions RICON 2015 Jo˜ ao Leit˜ ao November 5th 2015
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Roadmap 1 Introduction 2 More than eventual consistency: ChainReaction 3 Strong Consistency and Transactional Support: Blotter 4 Summary
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I?
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? RICON 2014
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? Live and Work in Portugal
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? Live and Work in Portugal (Lisbon)
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? Postdoctoral Researcher and Integrated Member at the NOVA Laboratory for Computer Science and Informatics (NOVA LINCS) Web page: http://novalincs.fct.unl.pt Follow us on Twitter: @novalincs
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? Invited Assistant Professor at the Computer Science Department (DI) of the School of Sciences and Technology in the NOVA University of Lisbon Web page: http://di.fct.unl.pt
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? Research: Large-Scale Systems: Geo-Distributed/Geo-Replicated Systems. Peer-to-Peer Systems. My focus: Scalability. Fault-Tolerance and Dependability. Performance.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? Research: Large-Scale Systems: Geo-Distributed/Geo-Replicated Systems. Peer-to-Peer Systems. My focus: Scalability. Fault-Tolerance and Dependability. Performance.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Who am I? I have two cats...
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Motivation Large Scale Applications: Large number of applications based on the Cloud Computing paradigm. Huge number of users. Large amount of data. High system load (and different applications exhibit different types of load).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Data Storage Systems Data Storage Systems Require the following mechanisms: Geo-Replication. Support concurrent reads and updates. Conflicting Goals High performance. Semantics that enable developers to write correct applications. Consistency Guarantees. Transactional Support.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction Data Storage Systems Data Storage Systems Require the following mechanisms: Geo-Replication. Support concurrent reads and updates. Conflicting Goals High performance. Semantics that enable developers to write correct applications. Consistency Guarantees. Transactional Support.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough If special care is not taken, eventual consistency can yield unexpected behaviours. Chat example!
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ B$please$tell$us$a$lie!$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ B$please$tell$us$a$lie!$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ B$please$tell$us$a$lie!$ B$please$tell$us$a$lie!$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ B$please$tell$us$a$lie!$ B$please$tell$us$a$lie!$ C$is$$#”%!$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ B$please$tell$us$a$lie!$ B$please$tell$us$a$lie!$ C$is$$#”%!$ C$is$$#”%!$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ B$please$tell$us$a$lie!$ B$please$tell$us$a$lie!$ C$is$$#”%!$ C$is$$#”%!$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough What went wrong here? There was a relationship of causality between those two events. However the datastore is unaware of this and hence does take any special care on this situation. What’s the solution? Provide causal consistency (or stronger).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough What went wrong here? There was a relationship of causality between those two events. However the datastore is unaware of this and hence does take any special care on this situation. What’s the solution? Provide causal consistency (or stronger).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough If special care is not taken, eventual consistency can yield completely wrong behaviours. Ticket sale example!
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough DC1$ DC2$ DC3$ User$A$ User$B$ User$C$ THERE%IS%ONLY%1% TICKET%LEFT%TO%BE% SOLD%
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough What went wrong here? There was a single resource at dispute here, so all operations that attempt to manipulate it must be coordinated in some way at the datastore level. What’s the solution? Offer strong consistency. Provide support for transactions.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough What went wrong here? There was a single resource at dispute here, so all operations that attempt to manipulate it must be coordinated in some way at the datastore level. What’s the solution? Offer strong consistency. Provide support for transactions.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction When eventual consistency is not enough What went wrong here? There was a single resource at dispute here, so all operations that attempt to manipulate it must be coordinated in some way at the datastore level. What’s the solution? Offer strong consistency. Provide support for transactions.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction In This Talk More than eventual consistency: ChainReaction Provide Causal+ consistency on operations over a single object. Both in single datacenter and multiple datacenter deployments. Focus: efficient metadata and performance. Strong Consistency and Transactional Support: Blotter Provide strong consistency with transactional support. Both in single datacenter and multiple datacenter deployments. Focus: efficient coordination and performance.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Introduction In This Talk More than eventual consistency: ChainReaction Provide Causal+ consistency on operations over a single object. Both in single datacenter and multiple datacenter deployments. Focus: efficient metadata and performance. Strong Consistency and Transactional Support: Blotter Provide strong consistency with transactional support. Both in single datacenter and multiple datacenter deployments. Focus: efficient coordination and performance.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Roadmap 1 Introduction 2 More than eventual consistency: ChainReaction Preliminaries Architecture Overview of Replication Mechanisms Extending to Geo-distributed Environment Experimental Evaluation Lessons Learned 3 Strong Consistency and Transactional Support: Blotter 4 Summary
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: Causal+ Credits Sérgio'Almeida' Luís'Rodrigues'
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: Causal+ Credits ChainReaction a Causal+ Consistent Datastore based on Chain Replication. S. Almeida, J. Leit˜ ao, and L. Rodrigues. Proceedings of the EuroSys 2013, Prague, Czech Republic, April 2013.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Replication and Consistency Consistency Models: Causal+ Consistency. Replication Mechanisms: Chain Replication (variant).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Replication and Consistency Consistency Models: Causal+ Consistency. Replication Mechanisms: Chain Replication (variant).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication Simple replication mechanism. Provides linearizability (for a single object). Network friendly (point-to-point communication). Pipelined writes.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,0>$ <A,0>$ <A,0>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,0> <A,0> <A,0> <A,0> <A,0> App. Proxy Client HEAD TAIL
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,0> <A,0> <A,0> <A,0> <A,0> App. Proxy Client HEAD TAIL Chain Index 0 1 2 3 4
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,0>$ <A,0>$ <A,0>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$ <PUT,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,0>$ <A,0>$ <A,0>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$ <PUT,Key:A,1>$ <PUT,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,0>$ <A,0>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$ <PUT,Key:A,1>$ <PUT,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,0>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$ <PUT,Key:A,1>$ <PUT,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$ <PUT,Key:A,1>$ <PUT,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,0>$ App.$ Proxy$ Client$$$ <PUT,Key:A,1>$ <PUT,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,1>$ App.$ Proxy$ Client$$$ <ANS,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,1>$ App.$ Proxy$ Client$$$ <ANS,Key:A,1>$ <ANS,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,0>$ <A,0>$ <A,0>$ <A,0>$ <A,0>$ App.$ Proxy$ Client$$$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,1>$ App.$ Proxy$ Client$$$ <GET,Key:A>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,1>$ App.$ Proxy$ Client$$$ <GET,Key:A>$ <GET,Key:A>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,1>$ App.$ Proxy$ Client$$$ <ANS,Key:A,1>$ <ANS,Key:A,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Chain Replication <A,1>$ <A,1>$ <A,1>$ <A,1>$ <A,1>$ App.$ Proxy$ Client$$$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Main Contribution ChainReaction: a novel key-value distributed datastore Provides Causal+ consistency (single site and in a geo-replicated scenario). Based on specialized version of Chain Replication. Removes the tail-bottleneck by distributing reads. Relaxes the replication-level associated with write operations. Relaxes consistency. Offers high performance (optimized for reads).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Main Contribution ChainReaction: a novel key-value distributed datastore Provides Causal+ consistency (single site and in a geo-replicated scenario). Based on specialized version of Chain Replication. Removes the tail-bottleneck by distributing reads. Relaxes the replication-level associated with write operations. Relaxes consistency. Offers high performance (optimized for reads).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Main Contribution ChainReaction: a novel key-value distributed datastore Provides Causal+ consistency (single site and in a geo-replicated scenario). Based on specialized version of Chain Replication. Removes the tail-bottleneck by distributing reads. Relaxes the replication-level associated with write operations. Relaxes consistency. Offers high performance (optimized for reads).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Main Contribution ChainReaction: a novel key-value distributed datastore Provides Causal+ consistency (single site and in a geo-replicated scenario). Based on specialized version of Chain Replication. Removes the tail-bottleneck by distributing reads. Relaxes the replication-level associated with write operations. Relaxes consistency. Offers high performance (optimized for reads).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Architecture App. Proxy App. Proxy App. Proxy App. Proxy METADATA Client Client Library Data Servers Organized in a One-‐hop DHT Datacenter Boundary [Object ID, Version ,Chain Index]
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Overview of Replication Mechanisms We allow writes to return before reaching the tail. We support reads on all nodes of the chain. We trade write efficiency for metadata efficiency.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Overview of Replication Mechanisms We allow writes to return before reaching the tail. We support reads on all nodes of the chain. We trade write efficiency for metadata efficiency.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We allow writes to return before reaching the tail We relax the number of nodes that have to process a write operation. This is controlled by a parameter K that can be configured locally for each datacenter. Allows for additional replicas to distribute the load of reads without significative penalisations to write operations performance.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Overview of Replication Mechanisms We allow writes to return before reaching the tail. We support reads on all nodes of the chain. We trade write efficiency for metadata efficiency.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain We allow read operations to be distributed across all nodes in the chain. Clients have to be aware of which node served the last read.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]&
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <GET,Key:A,3,2>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3> <A,3> <A,3> <A,3> <A,0> App. Proxy App. Proxy App. Proxy App. Proxy <B,2> <B,2> <B,2> <B,0> <B,0> METADATA Client 1 METADATA Client 2 Datacenter Boundary [A,Ver:3,ChainIndex:2] <GET,Key:A,3,2>
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <GET,Key:A,3,2>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <ANS,Key:A,3,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <ANS,Key:A,3,1>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]&
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,0>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <GET,Key:A,3,2>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,3>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <GET,Key:A,3,2>$ <ACK,Key:A,3,DC9Stable>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,3>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <GET,Key:A,3,2>$ <ACK,Key:A,3,DC9Stable>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,3>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ [A,Ver:3,ChainIndex:2]& <ACK,Key:A,3,DC9Stable>$ <ANS,Key:A,3,4>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3>$ <A,3>$ <A,3>$ <A,3>$ <A,3>$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ App.$ Proxy$ <B,2>$ <B,2>$ <B,2>$ <B,0>$ <B,0>$ METADATA& Client$ 1$$ METADATA& Client$ 2$ Datacenter$$ Boundary$ <ACK,Key:A,3,DC9Stable>$ <ANS,Key:A,3,4>$
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3> <A,3> <A,3> <A,3> <A,3> App. Proxy App. Proxy App. Proxy App. Proxy <B,2> <B,2> <B,2> <B,0> <B,0> METADATA Client 1 METADATA Client 2 Datacenter Boundary <GET,Key:A,_,_>
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We support reads on all nodes of the chain: Example <A,3> <A,3> <A,3> <A,3> <A,3> App. Proxy App. Proxy App. Proxy App. Proxy <B,2> <B,2> <B,2> <B,0> <B,0> METADATA Client 1 METADATA Client 2 Datacenter Boundary <GET,Key:A,_,_>
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Overview of Replication Mechanisms We allow writes to return before reaching the tail. We support reads on all nodes of the chain. We trade write efficiency for metadata efficiency.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction We trade write efficiency for metadata efficiency We rely on a stabilization procedure performed before each individual write which: Enforces causal+ consistency. Lowers the amount of metadata maintained by clients.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Outline 1 Introduction 2 More than eventual consistency: ChainReaction Preliminaries Architecture Overview of Replication Mechanisms Extending to Geo-distributed Environment Experimental Evaluation Lessons Learned 3 Strong Consistency and Transactional Support: Blotter 4 Summary
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Extending to Geo-distributed Environment App. Proxy App. Proxy App. Proxy App. Proxy METADATA Client Client Library Data Servers Organized in a One-‐hop DHT Datacenter Boundary [Object ID, Version ,Chain Index]
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Extending to Geo-distributed Environment Extend techniques for Geo-distribution Read operations: Processed in a single datacenter. Write operations: Return when applied to K nodes in a single datacenter. Propagated in background across datacenters. Rely on last-writer-wins to merge divergent versions. Learn with RIAK: Use CRDT’s to avoid losing updates.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Extending to Geo-distributed Environment Extend techniques for Geo-distribution Read operations: Processed in a single datacenter. Write operations: Return when applied to K nodes in a single datacenter. Propagated in background across datacenters. Rely on last-writer-wins to merge divergent versions. Learn with RIAK: Use CRDT’s to avoid losing updates.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Overview We implemented ChainReaction prototype: Used an optimized version of FAWN-KV (Fast Array of Wimpy Nodes) as basis. Prototype required approximately 26, 000 lines of C++ and Java code.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Overview Comparative performance study ChainReaction. Optimized version of FAWN-KV. Apache Cassandra 0.8.10. COPS.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Overview Results Summary: Throughput in single datacenter. Throughput across multiple datacenters. Latency of operations in both scenarios for particular workloads. Throughput and latency of workloads exercising Get-Transactions. Effect of failures over throughput. Metadata overhead.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Geo-Replicated Scenario Setup Tests were executed in 2 virtual datacenters (delay between datacenters ∼ 120 ms) Each datacenter has 4 machines. 1.000.000 objects (1KByte). 200 clients (100 for each datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Geo-Replicated Scenario System Configurations ChainReaction: Chain size: 4; K : 2 (in each datacenter). FAWN-KV: Chain size: 4. Cassandra: Replication factor: 6; Write set: 2; Read set: 1. CR-COPS: Version of ChainReaction that mimics COPS system; Chain size: 4.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Metadata Overhead Setup Tests were executed in 2 virtual datacenters. Exercised workload A: Update heavy (50W/50R, zipf access dist.). 10 clients. System Configurations ChainReaction: Chain size: 1. COPS: Chain size: 1.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Experimental Evaluation: Metadata Overhead Setup Tests were executed in 2 virtual datacenters. Exercised workload A: Update heavy (50W/50R, zipf access dist.). 10 clients. System Configurations ChainReaction: Chain size: 1. COPS: Chain size: 1.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Lessons Learned How to provide Causal+ Consistency in an efficient manner: Low metadata overhead (in exchange for write performance). Enhanced scalability for read operations. A well designed replication protocol for a single datacenter scenario... ...is actually easy to be expanded to a geo-replicated environment. What do we pay: The system is no longer always available, it is actually sticky available.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Lessons Learned How to provide Causal+ Consistency in an efficient manner: Low metadata overhead (in exchange for write performance). Enhanced scalability for read operations. A well designed replication protocol for a single datacenter scenario... ...is actually easy to be expanded to a geo-replicated environment. What do we pay: The system is no longer always available, it is actually sticky available.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Lessons Learned How to provide Causal+ Consistency in an efficient manner: Low metadata overhead (in exchange for write performance). Enhanced scalability for read operations. A well designed replication protocol for a single datacenter scenario... ...is actually easy to be expanded to a geo-replicated environment. What do we pay: The system is no longer always available, it is actually sticky available.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary More than eventual consistency: ChainReaction Lessons Learned How to provide Causal+ Consistency in an efficient manner: Low metadata overhead (in exchange for write performance). Enhanced scalability for read operations. A well designed replication protocol for a single datacenter scenario... ...is actually easy to be expanded to a geo-replicated environment. What do we pay: The system is no longer always available, it is actually sticky available.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Outline 1 Introduction 2 More than eventual consistency: ChainReaction 3 Strong Consistency and Transactional Support: Blotter Preliminaries Overview Single Datacenter Multiple Datacenter Experimental Results Lessons Learned 4 Summary
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Credits Henrique(Moniz( Ricardo(J.(Dias( Johannes(Gehrke( Nuno(Preguiça( Rodrigo(Rodrigues(
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Credits Blotter: Low Latency Transactions for Geo-Replicated Storage. H. Moniz, J. Leit˜ ao, R. J. Dias, J. Gehrke, N. Pregui¸ ca, and R. Rodrigues. currently under submission to VLDB.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Consistency and Isolation Consistency Model: Strong Consistency. Isolation Level: Non-Monotonic Snapshot Isolation.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Consistency and Isolation Consistency Model: Strong Consistency. Isolation Level: Non-Monotonic Snapshot Isolation.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Non-Monotonic Snapshot Isolation Snapshot Isolation Transactions operate on a virtual snapshot of the database created when they start. A transaction T cannot observe something written by a transaction T that committed after the start of T. Allows the Write-Skew anomaly.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Non-Monotonic Snapshot Isolation Snapshot Isolation Transactions operate on a virtual snapshot of the database created when they start. A transaction T cannot observe something written by a transaction T that committed after the start of T. Allows the Write-Skew anomaly.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Non-Monotonic Snapshot Isolation Snapshot Isolation Transactions operate on a virtual snapshot of the database created when they start. A transaction T cannot observe something written by a transaction T that committed after the start of T. Allows the Write-Skew anomaly.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Non-Monotonic Snapshot Isolation Non-Monotonic Snapshot Isolation Relaxation of Snapshot Isolation. Allows for two additional anomalies: Long Forks anomaly. Forward Freshness anomaly.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Non-Monotonic Snapshot Isolation Non-Monotonic Snapshot Isolation Relaxation of Snapshot Isolation. Allows for two additional anomalies: Long Forks anomaly. Forward Freshness anomaly.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Non-Monotonic Snapshot Isolation Non-Monotonic Snapshot Isolation Relaxation of Snapshot Isolation. Allows for two additional anomalies: Long Forks anomaly. Forward Freshness anomaly.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Overview of Blotter A key-value store (such as RIAK) in each datacenter. In each datacenter the datastore provides one-copy serializability per object. We assume that the datastore provides multi-version per object.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Overview of Blotter Concurrency Protocol that leverages metadata to allow conflicts to be detected. 2-Phase Commit protocol that biggybacks metadata. Inter-DC Replication Scheme based on a Special configuration of Paxos.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Overview of Blotter Concurrency Protocol that leverages metadata to allow conflicts to be detected. 2-Phase Commit protocol that biggybacks metadata. Inter-DC Replication Scheme based on a Special configuration of Paxos.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Overview of Blotter Concurrency Protocol that leverages metadata to allow conflicts to be detected. 2-Phase Commit protocol that biggybacks metadata. Inter-DC Replication Scheme based on a Special configuration of Paxos.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Multiple Datacenter Layer the commit execution on Paxos to execute a transaction across multiple datacenters. Use one Paxos instance per object (i.e, key). Reads remain local (executed at the closest datacenter). Decision of commit or abort is deterministic (does not depend on metadata exclusive to the local datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Multiple Datacenter Layer the commit execution on Paxos to execute a transaction across multiple datacenters. Use one Paxos instance per object (i.e, key). Reads remain local (executed at the closest datacenter). Decision of commit or abort is deterministic (does not depend on metadata exclusive to the local datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Multiple Datacenter Special Variant of Paxos Goal: Efficient (minimize communication over long latency links). We do this by using a configuration of Paxos that tolerates a single failure. Result: Commit concludes within a single round trip (in the common case) across two datacenters.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Multiple Datacenter Special Variant of Paxos Goal: Efficient (minimize communication over long latency links). We do this by using a configuration of Paxos that tolerates a single failure. Result: Commit concludes within a single round trip (in the common case) across two datacenters.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Experimental Results: Setup Tests were executed on 3 datacenters (Amazon EC2). Each datacenter has 4 machines (Large instances). 1.000.000 objects (256 Byte). 360 clients (120 for each datacenter). Variable workloads.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Experimental Results: Setup We performed experiments with: Cassandra (local-quorum). Cassandra (each-quorum). Blotter. 2 Phase Locking solution (2PL) - similar to Spanner.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Experimental Results Figure : Throughput in a deployment with 3 datacenters.
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Lessons Learned How to provide full ACID transactions (over a key-value store): Picking up the right isolation level. Allowing transactions to coordinate themselves by leveraging the datastore. A well designed concurrency control protocol for a single datacenter scenario... ...can be extended (mostly) in a easy way to geo-replicated scenarios. What do we pay: The system is no longer available (but we still tolerate the failure of a single datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Lessons Learned How to provide full ACID transactions (over a key-value store): Picking up the right isolation level. Allowing transactions to coordinate themselves by leveraging the datastore. A well designed concurrency control protocol for a single datacenter scenario... ...can be extended (mostly) in a easy way to geo-replicated scenarios. What do we pay: The system is no longer available (but we still tolerate the failure of a single datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Lessons Learned How to provide full ACID transactions (over a key-value store): Picking up the right isolation level. Allowing transactions to coordinate themselves by leveraging the datastore. A well designed concurrency control protocol for a single datacenter scenario... ...can be extended (mostly) in a easy way to geo-replicated scenarios. What do we pay: The system is no longer available (but we still tolerate the failure of a single datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Strong Consistency and Transactional Support: Blotter Lessons Learned How to provide full ACID transactions (over a key-value store): Picking up the right isolation level. Allowing transactions to coordinate themselves by leveraging the datastore. A well designed concurrency control protocol for a single datacenter scenario... ...can be extended (mostly) in a easy way to geo-replicated scenarios. What do we pay: The system is no longer available (but we still tolerate the failure of a single datacenter).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Outline 1 Introduction 2 More than eventual consistency: ChainReaction 3 Strong Consistency and Transactional Support: Blotter 4 Summary
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Summary Discussed Alternatives to Eventual Consistency in the context of Datastores: Deployed on Single Datacenters. Deployed across multiple (distant) Datacenters (Geo-Replicated Scenario). A well designed replication algorithm for single site deployment should be naturally extensible to geo-replicated scenarios. There are no free lunches! a price has to be paid to go beyond eventual consistency. Be flexible, support multiple paradigms (still some things to be done here).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Summary Discussed Alternatives to Eventual Consistency in the context of Datastores: Deployed on Single Datacenters. Deployed across multiple (distant) Datacenters (Geo-Replicated Scenario). A well designed replication algorithm for single site deployment should be naturally extensible to geo-replicated scenarios. There are no free lunches! a price has to be paid to go beyond eventual consistency. Be flexible, support multiple paradigms (still some things to be done here).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Summary Discussed Alternatives to Eventual Consistency in the context of Datastores: Deployed on Single Datacenters. Deployed across multiple (distant) Datacenters (Geo-Replicated Scenario). A well designed replication algorithm for single site deployment should be naturally extensible to geo-replicated scenarios. There are no free lunches! a price has to be paid to go beyond eventual consistency. Be flexible, support multiple paradigms (still some things to be done here).
Jo˜ ao Leit˜ ao Introduction More than eventual consistency: ChainReaction Strong Consistency and Transactional Support: Blotter Summary Thanks for your attention. http://asc.di.fct.unl.pt/~jleitao [email protected] Twitter: @jcaleitao