-
MIT 6.824: Lecture 20 - Blockstack
·
7 min read
The final post in this lecture series is about Blockstack. Blockstack is a network for building decentralized applications based on blockchain. Decentralized applications promise to give users more ownership and control of their data. Here, I'll start with an overview of how a decentralized app might work before describing Blockstack.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 19 - Bitcoin
·
9 min read
Following the lecture on Certificate Transparency, we're exploring Bitcoin, another open system comprising mutually untrustworthy components. Bitcoin is a digital currency for making online payments. I'll start this post by making a case for digital currencies, before describing Bitcoin and how it addresses the double-spending problem.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 18 - Certificate Transparency
·
6 min read
The systems we have seen so far are closed systems for which we have assumed that all the participants are trustworthy. But in an open system like the Web where anyone can take part, and there is no universally trusted authority, trust and security are top-level issues to address. Certificate Transparency is one approach to ensuring trust and improving security on the Web.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 17 - Causal Consistency, COPS
·
6 min read
In studying distributed systems, I've come across systems like Spanner, which incurs additional latency for strong consistency, and DynamoDB, which sacrifices strong consistency for low latency in responding to requests. This latency vs consistency tradeoff is one that many systems have to make, including COPS—this lecture's focus—but it offers a unique balance.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 16 - Scaling Memcache at Facebook
·
10 min read
This lecture is about building systems at scale. I'll start this post by describing how a website's architecture might evolve to cope with increasing load, before highlighting Facebook's use of memcached to support the world's largest social network.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 15 - Spark
·
5 min read
In the first lecture of this series, I wrote about MapReduce as a distributed computation framework. MapReduce partitions the input data across worker nodes, which process data in two stages: map and reduce. While MapReduce was innovative, it was inefficient for iterative and more complex computations. Researchers at UC Berkeley invented Spark to deal with these limitations.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 14 - Optimistic Concurrency Control
·
9 min read
This lecture on optimistic concurrency control is based on a system called FaRM. FaRM is a main memory distributed computing platform that provides distributed transactions with strict serializability, high performance, durability and high availability by taking advantage of two hardware trends. Here, I explain how FaRM uses these techniques to perform faster and yield far greater throughput than Spanner for simple transactions.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 13 - Spanner
·
10 min read
Spanner is a rare example of a distributed database that supports externally consistent distributed transactions. Many other databases either choose not to implement distributed transactions at all, or opt for weaker consistency models because of the performance cost involved. In this post, we'll learn how Google's TrueTime API enables it to provide this guarantee at a good performance.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 12 - Distributed Transactions
·
5 min read
Distributed databases typically divide their tables into partitions spread across different servers which get accessed by many clients. In these databases, client transactions often span the different servers, as the transactions may need to read from various partitions. A distributed transaction is a database transaction which spans multiple servers. This post will detail how databases guarantee some ACID properties when executing distributed transactions.
mit-6.824 distributed-systems learning-diary -
MIT 6.824: Lecture 11 - Cache Consistency, Frangipani
·
6 min read
The ideal distributed file system would guarantee that all its users have coherent access to a shared set of files and be easily scalable. It would also be fault-tolerant and require minimal human administration. This post will cover how Frangipani approximates this ideal, with a focus on how it provides a consistent view of shared files while maintaining a cache for each user.
mit-6.824 distributed-systems learning-diary