• Stars
    star
    169
  • Rank 220,189 (Top 5 %)
  • Language
    HTML
  • Created over 9 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

6.824 Distributed Systems: Lecture notes (edited a little and formatted with Markdown)

Distributed Systems Engineering notes (6.824, Spring 2015)

Lectures

Lecture notes from 6.824, taught by Prof. Robert T. Morris. These lecture notes are slightly modified from the ones posted on the 6.824 course website.

  • Lecture 1: Introduction: distributed system definition, motivations, architecture, implementation, performance, fault-tolerance, consistency, MapReduce
  • Lecture 2: Remote Procedure Calls (RPCs): RPC overview, marshalling, binding, threads, "at-least-once", "at-most-once", "exactly once", Go's RPC, thread synchronization
  • Lecture 3: Fault tolerance: primary-backup replication, state transfer, "split-brain", Remus (NSDI 2008),
  • Lecture 4: Flat datacenter storage: flat datacenter storage, bisection bandwidth, striping
  • Lecture 5: Paxos: Paxos, consensus algorithms
  • Lecture 6: Raft: Raft, a more understandable consensus algorithm
  • Lecture 7: Google Go guest lecture by Russ Cox
  • Lecture 8: Harp: distributed file system, "the UPS trick", witnesses
  • Lecture 9: IVY: distributed shared memory, sequential consistency
  • Lecture 10: TreadMarks: userspace distributed shared memory system, vector timestamps, release consistency (lazy/eager), false sharing, write amplification
  • Lecture 11: Ficus: optimistic concurrency control, vector timestamps, conflict resolution
  • Lecture 12: Bayou: disconnected operation, eventual consistency, Bayou
  • Lecture 13: MapReduce: MapReduce, scalability, performance
  • Lecture 14: Spark guest lecture by Matei Zaharia: Resilient Distributed Datasets, Spark
  • Lecture 15: Spanner guest lecture by Wilson Hsieh, Google: Spanner, distributed database, clock skew
  • Lecture 16: Memcache at Facebook: web app scalability, look-aside caches, Memcache
  • Lecture 17: PNUTS Yahoo!: distributed key-value store, atomic writes
  • Lecture 18: Dynamo: distributed key-value store, eventual consistency
  • Lecture 19: HubSpot guest lecture
  • Lecture 20: Two phase commit (2PC): two-phase commit, Argus
  • Lecture 21: Optimistic concurrency control
  • Lecture 22: Peer-to-peer, trackerless Bittorrent and DHTs: Chord, routing
  • Lecture 23: Bitcoin: verifiable public ledgers, proof-of-work, double spending

Lectures form other years

Labs

Papers

Papers we read in 6.824 (directory here):

  1. MapReduce
  2. Remus
  3. Flat datacenter storage
  4. Paxos
  5. Raft
  6. Harp
  7. Shared virtual memory
  8. TreadMarks
  9. Ficus
  10. Bayou
  11. Spark
  12. Spanner
  13. Memcached at Facebook
  14. PNUTS
  15. Dynamo
  16. Akamai
  17. Argus, Guardians and actions
  18. Kademlia
  19. Bitcoin
  20. AnalogicFS

Other papers:

  1. Impossibility of Distributed Consensus with One Faulty Process
    • See page 5, slide 10 here to understand Lemma 1 (commutativity) faster
    • See this article here for an alternative explanation.
  2. Practical Byzantine Fault Tolerance (PBFT)

Stumbled upon

  1. A brief history of consensus, 2PC and transaction commit
  2. Distributed systems theory for the distributed systems engineer
  3. Distributed Systems: For fun and Profit
  4. You can't choose CA out of CAP, or "You can't sacrifice partition tolerance"
  5. Notes on distributed systems for young bloods
  6. Paxos Explained From Scratch

Quizzes

Prep for quiz 1 here

More Repositories

1

6.858-lecture-notes

6.858 Computer Systems Security: Lecture notes (edited a little and formatted with Markdown)
HTML
37
star
2

catena-java

Our Java implementation of Catena, a Bitcoin-based consensus log (also known as a witnessing scheme, or non-equivocation scheme, or "micro-blockchain")
Java
33
star
3

libpolycrypto

(Towards) Scalable Threshold Crypto: BLS threshold signatures with millions of signers and a scalable Distributed Key Generation (and VSS) protocol
C++
30
star
4

cryptomaniac

edu: CryptoManiac is a simple command line utility that encrypts a file using AES-256 (CTR/CBC, 256-bit keys, 128-bit IVs) and is compatible with the OpenSSL enc tool.
C
16
star
5

libvectcom

An O(N\log{N}) time algorithm for computing all N proofs fast in the Pointproofs VC. Also, the O(N\log{N}) time Feist-Khovratovich algorithm for computing all N proofs in KZG-based VCs. Lastly, benchmarks.
C++
13
star
6

eprint-iacr-notifier

Parses https://eprint.iacr.org/eprint-bin/search.pl?last=365&title=1 and sends you an email with the latest papers
Python
12
star
7

ck

A Python tool to manage and tag your bibliography (.bib and .pdf) files on Dropbox
Python
10
star
8

asvc-paper

Vector Commitments with Constant-Sized, Updatable Proofs and Linear-Sized Public Parameters
TeX
10
star
9

libaad-ccs2019

Code for "Transparency Logs via Append-only Authenticated Dictionaries" paper in ACM CCS 2019
C++
8
star
10

asvc-talk

LaTeX beamer slides for aggregatable subvector commitments (aSVC) talk
7
star
11

mit-thesis-template

A thesis template for MIT graduate students that compiles easily with 'make'. Slightly modified from http://web.mit.edu/thesis/tex/.
TeX
6
star
12

dkg-paper

LaTeX source code for the "Towards Scalable Threshold Cryptosystems" paper in IEEE S&P'20
TeX
5
star
13

avl-tree

A (partial) implementation of an AVL tree in C++
C++
4
star
14

go-mcl

Wrapper around herumi/mcl in Go, with dependency on herumi/mcl
Go
3
star
15

catena-paper

The LaTeX source code for our paper on preventing equivocation efficiently with Bitcoin
TeX
3
star
16

authdict-talk

Our talk on "Authenticated Dictionaries with Cross-incremental Proof (Dis)aggregation"
TeX
3
star
17

rust-incrhash

Incremental hashing based on curve25519-dalek
Rust
2
star
18

csail-website

CSAIL website
HTML
1
star
19

base64

base64 encoding library
C++
1
star
20

scripts

Linux scripts
Shell
1
star
21

libbilinear

A wrapper around RELIC for cryptography in bilinear groups
C++
1
star
22

merkle-race

Exploring slowdowns of increasingly-fancier Merkle trees
Rust
1
star
23

rsasign

edu: rsasign is a simple utility that can digitally sign a piece of text or a file using the RSA encryption scheme
C
1
star
24

libcryptotemplate

A template library for pairing-and-polynomial-based cryptography that can be forked, renamed and built upon.
C++
1
star
25

futilecoin

Pursuing this coin is futile.
Go
1
star
26

libxutils

C++ utility library
C++
1
star