Skip to main content

Category: systems

Fly.io Distributed System Challenge with Go (Part 2)

In my previous post, I covered how I built a basic partition-tolerant broadcast system. While it did manage to perform correctly, it was not exactly performant. There was plenty of room for performance optimizations that could be done - this post covers them. Efficiency Metrics Maelstrom, the underlying testbench for the challenge, provided a lot of metrics and charts that could be used to analyze the performance of my algorithm. Here are some of the key metrics:

Fly.io Distributed System Challenge with Go (Part 1)

Recently, I ran into an instresting challenge on distributed systems provided by Fly.io. After going through a laborious semester trying to get in touch with my inner Ninja of theory and implementation, I thought that it would be a good chance to check my understanding of the field. Check out my repo for the actual implementation in Go! Part 1, 2: Echo / Unique ID Generation These parts were really about familiarizing oneself with the Maelstrom testbench, which the challenge utilizes to abstract basic node-level operations (send, sync/async rpc, etc.

Understanding Different Consistency Guarantees

When it comes to implementing distributed systems, there are a whole variety of consistency models to choose from. Going through papers on system implementations of varying degrees of consistency guarantees (e.g.Spanner or Bayou), I found myself mixing up strictly different terms and models. To prevent further confusion, I thought it would be a good idea to cover some key terminologies here. What is Consistency? There are myriads of different consistency guarantees, but what is consistency in the context of distributed systems in the first place?