All Projects → ChrisWhealy → Distributedsystemnotes

ChrisWhealy / Distributedsystemnotes

Notes on Lindsey Kuper's lectures on Distributed Systems

Projects that are alternatives of or similar to Distributedsystemnotes

Dkron
Dkron - Distributed, fault tolerant job scheduling system https://dkron.io
Stars: ✭ 2,930 (+997.38%)
Mutual labels:  distributed-systems, fault-tolerance
Pysyncobj
A library for replicating your python class between multiple servers, based on raft protocol
Stars: ✭ 468 (+75.28%)
Mutual labels:  distributed-systems, fault-tolerance
Cloudi
A Cloud at the lowest level!
Stars: ✭ 352 (+31.84%)
Mutual labels:  distributed-systems, fault-tolerance
Distributed Consensus Reading List
A long list of academic papers on the topic of distributed consensus
Stars: ✭ 803 (+200.75%)
Mutual labels:  distributed-systems, fault-tolerance
Bastion
Highly-available Distributed Fault-tolerant Runtime
Stars: ✭ 2,333 (+773.78%)
Mutual labels:  distributed-systems, fault-tolerance
Elixirbooks
List of Elixir books
Stars: ✭ 1,021 (+282.4%)
Mutual labels:  distributed-systems, fault-tolerance
Lizardfs
LizardFS is an Open Source Distributed File System licensed under GPLv3.
Stars: ✭ 793 (+197%)
Mutual labels:  distributed-systems, fault-tolerance
Thespian
Python Actor concurrency library
Stars: ✭ 220 (-17.6%)
Mutual labels:  distributed-systems, fault-tolerance
kraker-info
Microservices based project to extract the information from the user data from different sources.
Stars: ✭ 17 (-93.63%)
Mutual labels:  distributed-systems, fault-tolerance
road-to-orleans
This repository illustrates the road to orleans with practical, real-life examples. From most basic, to more advanced techniques.
Stars: ✭ 55 (-79.4%)
Mutual labels:  distributed-systems
ReactiveMachine
Author microservices without thinking about faults or servers. Then compile and deploy anywhere.
Stars: ✭ 43 (-83.9%)
Mutual labels:  distributed-systems
Saga
Saga pattern implementation in Kotlin build in top of Kotlin's Coroutines.
Stars: ✭ 24 (-91.01%)
Mutual labels:  distributed-systems
Kites
🪁 A consistency, partition tolerance completed distributed KV store, implementation of the Raft distributed consensus protocol and Kotlin.
Stars: ✭ 41 (-84.64%)
Mutual labels:  distributed-systems
Naos
A mildly opiniated modern cloud service architecture blueprint + reference implementation
Stars: ✭ 19 (-92.88%)
Mutual labels:  distributed-systems
core
Microservice abstract class
Stars: ✭ 37 (-86.14%)
Mutual labels:  distributed-systems
kerala
Distributed KV Streams
Stars: ✭ 16 (-94.01%)
Mutual labels:  distributed-systems
ring-election
A node js library with a distributed leader/follower algorithm ready to be used
Stars: ✭ 92 (-65.54%)
Mutual labels:  distributed-systems
elixir cluster
Distributed Elixir Cluster on Render with libcluster and Mix Releases
Stars: ✭ 15 (-94.38%)
Mutual labels:  distributed-systems
Burry.sh
Cloud Native Infrastructure BackUp & RecoveRY
Stars: ✭ 260 (-2.62%)
Mutual labels:  distributed-systems
schism
Partition testing tool for elixir
Stars: ✭ 58 (-78.28%)
Mutual labels:  distributed-systems

Distributed Systems

Lecture notes for course CSE138, Spring 2020 given by Prof Lindsey Kuper, Assistant Professor of Computing at UCSC

Due to the Covid-19 lockdown being enforced at the time, these lectures had to be delivered online and are available on YouTube and Twitch

This series of lectures also includes a discussion panel with recent grad students and two guest lecturers. Notes have not been created for these events; however, you can watch the videos here:

Date Description Subjects Recapped
Lecture 1 There are no notes for this lecture as it was concerned with course administration and logistics
Lecture 2
April 1st, 2020
Distributed Systems: What and why?
Time and clocks
Lecture 3
April 3rd, 2020
Lamport diagrams
Causality and the "happens before" relation
Network models
State and events
Partial orders
Lecture 4
April 6th, 2020
Total orders and Lamport clocks Partial orders
Happens before relation
Lecture 5
April 8th, 2020
Vector clocks
Protocol runs and anomalies
Message Delivery vs. Message Receipt
FIFO delivery
Lamport Clocks
Lecture 6
April 10th, 2020
Causal delivery
Totally-ordered delivery
Implementing FIFO delivery
Preview of implementing causal broadcast
Delivery vs. Receipt
FIFO delivery
Lecture 7
April 13th, 2020
Implementing causal broadcast
Uses of causality in distributed systems
Consistent snapshots
Preview of the Chandy-Lamport snapshot algorithm
Causal anomalies and vector clocks
Lecture 8
April 15th, 2020
Chandy-Lamport Snapshot Algorithm
Lecture 9
April 17th, 2020
Chandy-Lamport wrap-up: limitations, assumptions and properties
Uses of snapshots
Centralized vs. decentralized algorithms
Safety and liveness
Delivery guarantees and protocols
Lecture 10
April 20th, 2020
Reliable delivery
Fault classification and fault models
The Two Generals problem
Safety and liveness
Lecture 11
April 22nd, 2020
Implementing reliable delivery
Idempotence
At-least-once/at-most-once/exactly-once delivery
Unicast/Broadcast/Multicast
Reliable broadcast
Implementing reliable broadcast
Preview of replication
Lecture 12
April 24th, 2020
Replication
Total order vs. determinism
Consistency models: FIFO, causal and strong
Primary-backup replication
Chain replication
Latency and throughput
Lecture 13
April 27th, 2020
Pause for breath!
Wrapping up replication techniques
Lecture 14
May 1st, 2020
Handling node failure in replication protocols
Introduction to consensus
Problems equivalent to consensus
The FLP result
Introduction to Paxos
Strongly consistent replication protocols
Lecture 15
May 4th, 2020
Paxos: the interesting parts
Lecture 16
May 6th, 2020
Paxos wrap-up: Non-termination, Multi-Paxos, Fault tolerance
Other consensus protocols: Viewstamped Replication, Zab, Raft
Passive vs. Active (state machine) replication
Lecture 17
May 8th, 2020
Eventual consistency
Strong convergence and strong eventual consistency
Introduction to application-specific conflict resolution
Network partitions
Availability
The consistency/availability trade-off
Lecture 18
May 11th, 2020
Dynamo: A review of old ideas
  • Availability
  • Network partitions
  • Eventual consistency
  • Vector clocks
  • Application-specific conflict resolution
Introduction to:
  • Anti-entropy with Merkle trees
  • Gossip
  • Quorum consistency
Lecture 19
May 13th, 2020
More about Quorum Consistency
Introduction to sharding
Consistent hashing
Lecture 20
May 18th, 2020
Online systems vs. Offline systems
Raw data vs. Derived data
Introduction to Google's MapReduce framework
MapReduce example: transform a forward index into an inverted index
Lecture 21
May 20th, 2020
MapReduce
  • Types
  • Approach to fault tolerance
  • Combine functions
  • More examples
MapReduce phases
Lecture 22
May 29th, 2020
The math behind replica conflict resolution
  • Upper bounds
  • Least upper bounds
  • Join-semilattices
Strong convergence
Partial orders
Lecture 23
June 1st, 2020
Filling in the gaps: Overviews of 2-phase commit and Practical Byzantine Fault Tolerance (PBFT)
Quick overview of the history of:
  • Lamport and Vector Clocks
  • Replication Strategies
  • Consensus
  • Replication Needs Consensus
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].