RAMP up your distributed transactions

Last time [https://www.bartoszsypytkowski.com/hash-partitions/] we were talking about partitioning in distributed systems. Now it's a time to talk about protocols that allow us to establish transactional reads and writes across partitions - which could be…

Distributed systems: partitions

Today we'll talk about topic of resource allocation in distributed systems using partitions. While we mention two common approaches - partitioning by key and hash rings - further down the post we'll focus only on the…

CRDT optimizations

After series of 11 blogs posts about Conflict-free Replicated Data Types, it's time to wrap up. This time let's discuss various optimizations that could be applied to CRDTs working at higher scale. Other blog posts from…

Pure operation-based CRDTs

In this blog post we'll continue on topic of operation-based CRDTs and focus on the optimizations and approach known as pure operation-based CRDTs [https://hal.inria.fr/hal-01287738/document]: how can we use them to address some of…

HyParView: cluster membership that scales

In the past I've made an introduction to different layers of cluster protocols and presented SWIM [https://www.bartoszsypytkowski.com/make-your-cluster-swim/]: a simple and intuitive approach to cluster membership, popularized by success of tools such as Hashicorp Consul.…

Operation-based CRDTs: arrays (part 2)

Last time [https://www.bartoszsypytkowski.com/operation-based-crdts-arrays-1/] we were discussing how to build a Commutative Replicated Data Types operating as indexed sequences - preserving order of inserted elements - using two different data structures: Linear Sequences (LSeq) and Replicated Growable…