Hybrid Logical Clocks

In this blog post we'll going to talk about timestamps. But to start with we need to answer the basic question: what are we using timestamps for? Two most common cases are: We want to timestamp our records so later…

Make your cluster SWIM

In this blog post we'll cover how systems form clusters, what clusters actually are and what are their responsibilities. We'll also present different protocols responsible to serve the needs of the clusters with a various tradeoffs associated with them. To…

State-based CRDTs: Maps

In this blog post, we'll cover the idea of CRDT maps, and how we could create them and utilize them in common scenarios. A prerequisite for this talk is some general knowledge of CRDTs, especially observed-remove sets, which were already…

State-based CRDTs: Bounded Counter

Originally, I didn't want to make a separate blog post about design behind bounded counters, but since beside original paper and a very few implementation living in the wild, this CRDT is widely unknown, I've decided to give it a…

Optimizing state-based CRDTs (part 1)

Other posts from this series: An introduction to state-based CRDTs Optimizing state-based CRDTs (part 1) Optimizing state-based CRDTs (part 2) State-based CRDTs: BoundedCounter State-based CRDTs: Map Last time we've talked about what are CRDTs and introduced the state-based variant of…

An introduction to state-based CRDTs

Other posts from this series: An introduction to state-based CRDTs Optimizing state-based CRDTs (part 1) Optimizing state-based CRDTs (part 2) State-based CRDTs: BoundedCounter State-based CRDTs: Map This is one of the topics I've already talked about on several presentations in…