Gossip Glomers
Hello! Today, let’s explore another kind of coding challenge with Gossip Glomers.
Gossip Glomers is a fantastic challenge (for real!). Instead of focusing on coding, this challenge explores the world of distributed systems: fly.io/dist-sys.
It was crafted by Fly.io, a cloud platform aiming to ease the deployment and running of applications1. In addition, they paired with Kyle Kingsbury, the author of Jepsen2.
I haven’t encountered a better challenge that allows us to get our hands dirty while working on distributed systems. Furthermore, a great thing about that challenge is that while the documentation and examples are in Go, we can solve it in any programming language.
There are five main challenges (if we omit the Echo challenge, which is for the setup):
Unique ID generation: The goal is to build a globally unique ID generation system3.
Broadcast: Implement a broadcast system that gossips messages between all the nodes in a cluster in a fault-tolerant and efficient way.
Grow-only counter: Develop a stateless, grow-only counter that relies on a store implementing sequential consistency4.
Kafka-style log: Build a replicated log service similar to Kafka with a strong focus on efficiency.
Totally-available transactions: Here, we must create a distributed store that ensures read uncommitted and then read committed isolation levels.
Whether you are a junior developer eager to dive into distributed systems or a senior engineer looking for a fresh challenge, I’m sure that you will learn something new; I certainly did!
Tomorrow, you will receive your weekly recap.
I have never used it, but the concept looks interesting, and some great folks are working there, such as Ben Johnson, the author of Litestream.
It can be solved using UUIDs, but that wouldn’t be fun enough.
Sequential consistency is the consistency model right below linearizability; we will explore these models in future issues.