How Stale is too Stale?

September 25, 2018

Proposed around 1999, the CAP theorem taught us that it was unreasonable to expect a distributed system to guarantee simultaneous consistency, availability, and partition tolerance. So, throughout the 2000’s, as distributed systems became more common in commercial contexts, and also as systems became increasingly distributed, companies made hard choices. Oftentimes, this involved trading off the promise of “the illusion of a single copy” (strong consistency) for increased availability. In “Quantifying Eventual Consistency with PBS,” the authors present an actual set of metrics that can be used to compare two eventually consistent systems, or to compare a single weakly consistent system with different parameters. In this post, I’ll discuss my take on their paper.

CMSC 818e Day 7

September 24, 2018

These are notes taken during CMSC 818e: Distributed And Cloud-Based Storage Systems. Course webpage and syllabus here.

Eventually Consistent Distributed Systems

September 18, 2018

Eventual consistency is a model for consistency for distributed computing, which privileges high availability over perfect consistency at any given moment in time. This model of consistency is helpful in distributed systems that are likely to experience a lot of partitions and faults, and where downstream applications are unlike to cause complex update conflicts. Bayou is an example of a storage system designed to support applications that run on mobile devices via inconsistent network conditions. In this post, I discuss my impressions from reading two of the Bayou papers, “Managing Update Conflicts in Bayou, a Weakly Connected Replicated Storage System” and “Flexible Update Propagation for Weakly Consistent Replication”.

CMSC 818e Day 6

September 17, 2018

These are notes taken during CMSC 818e: Distributed And Cloud-Based Storage Systems. Course webpage and syllabus here.

What are Protocol Buffers?

September 15, 2018

Protocol buffers are a way of serializing data so that it can be efficiently sent between programs. It is structured in a way that is reminiscent of XML or JSON, but designed to produce much more compact (albeit no longer human-readable) messages. In this post we’ll explore a bit about the use cases of protobufs, how they work, and what they look like.