Skip to content
@dsorchard

Distributed Systems Engineering

single node @dborchard → multi-node @dsorchard → multi-core @csorchard

🌱 The Foundation

Get the basics right.

Read More

Core Distributed Systems Algorithms from Wiki

  • Atomic Commit: 2 phase commit, replica, atomic commit
  • Consensus: Paxos, Raft
  • Leader Election: Layered BFS, Flood Max
  • Mutual Exclusion: Chubby Lock vs Theory Dist. Locks
  • Reliable Broadcast: SWIM, gossip, disseminator, incarnation
  • Replication: RAID, Deduplicate, CRDT
  • Retry Strategy: At least once, At most once, Exactly once
  • Spanning Tree: MST
  • Snapshot: Chandy-Lamport, Vector Clock, VRPC (library)
  • Clocks: Vector Clock, Matrix Clock, HLC

More Distributed Systems Concepts

  • HA/keepalive: Central Service, HA state added to multi-raft
  • RPC client: socket, RPC, GRPC, DMA, RDMA, REST, n/w protocols, Arrow RPC, GORM
  • Load balancer proxy/Fanout: Prometheus, JunoDB
  • Shuffling: Spark, Uber's Remote Shuffling Service
  • Resource Allocation: Spark Resource Allocator, Dead Lock Detection using Resource Allocation Graph
  • Checkpointing and Recovery: Koo and Toueg’s Protocol
  • Synchronizer: Physical clock synchronization
  • Symmetry breaking: Leader election in Ring
  • Multi-Tenant Systems: Sharing one instance with many users. Adding TenantId prefix to resource access calls.
  • Distributed Rate Limiter: Make be reference this
  • Scheduling: Quartz, DAG, Dead-lock

Popular Library Usage

  • Hashicorp Gossip & Consistent Hashing: Gossip, Consistent Hashing, Virtual Node, Replication, Rebalancing
  • Hashicorp Raft: Raft, Not Multi Raft
  • Etcd Membership/Lock:
  • DragonBoat Multi Raft: Multi Raft, Sharding
  • Snapshot: Distributed Snapshot
  • 2PC or Saga: Txn, 2PC
  • DistributedClocks GoVector: Use DistributedClocks/GoVector
  • lafikl HLC: Use lafikl/hlc
  • Client + HLC: Read your writes
  • Chord Distributed Hash Table vs Locality Sensitive Hashing: Read more in Wiki

Misc

🌿 The Plant

Read, Extract components, and Learn the inner workings.

Read More

Individual components

  • Raft WAL
  • Distributed Gossip Cache: Gossip, Consistent Hashing, LRU
  • Distributed Txn
  • VFS: From Dragonboat library
  • HA Checker
  • Load Balancer Proxy

MatrixOrigin Parts

  • RAFT Log Service
  • Distributed Gossip Cache
  • RPC Client
  • Distributed Txn

E2E Products

  • Distributed KV Store: 2PC, Gossip, Consistent/Range Partitioning, RAFT WAL, HA, Etcd, Proxy (load balancer), Stats
  • Distributed Execution Engine: Like Spark, VFS, Cache, Process, Checkpointing, Snapshot, Rate Limiting
  • Distributed Query Engine: 2PC, RPC module, VRPC tracing, Catalog, Agg Fn, Binder, Type Coercion, Use Stats in Optimizer
  • Distributed File Store: Maybe like HDFS, SeaweedFS, JuiceFS

Shrunk Distributed DB's

  • junodb-lite: KV Server, Distributed System, Etcd
  • Etcd Lite

Industry Tool Usage: (Networking, Compute, Storage)

  • Networking: Kubernetes Operator
  • Compute: Spark
  • Storage: RocksDB, HDFS
  • Observability:
  • Tracing:

🌳 The Tree

Pick your favorite distributed database/system and shrink it.

Read More

Distributed Database/Cache/Storage Systems

  • JunoDB
  • Etcd
  • MatrixOrigin
  • TiDB
  • CockroachDB

💧 The Resources

Revisit papers/slides. Build counterexamples. Think like a scientist.

Read More

Books

Papers read

  • Dynamo Paper
  • SWIM Paper
  • Spanner Paper

Papers [Pending]

  • Chord DT Paper

👨‍🌾 Cultivating Knowledge

Write what you understood. (Maybe later)

Read More

Published Resources

🥭 The Fruit

Mark your achievements.

Read More

Pinned Loading

  1. dist_kv dist_kv Public

    Simple Distributed KV Server using MemberList and Consistent

    Go 1

  2. gossipcache gossipcache Public

    GroupCache + Memberlist

    Go 1

  3. distributed_leader_election distributed_leader_election Public

    CS 6380 : Distributed Computing Algorithms

    Java 1

  4. two_pc two_pc Public

    Two Phase Commit

    Go

  5. distributed_snapshot distributed_snapshot Public

    Chandy–Lamport's algorithm

    Go

  6. vallam vallam Public

    Raft Library

Repositories

Showing 10 of 31 repositories
  • swim_impl Public

    Learning SWIM implementations from existing libraries

    dsorchard/swim_impl’s past year of commit activity
    Go 0 0 0 0 Updated Jun 11, 2024
  • two_pc Public

    Two Phase Commit

    dsorchard/two_pc’s past year of commit activity
    Go 0 0 0 0 Updated Jun 11, 2024
  • .github Public
    dsorchard/.github’s past year of commit activity
    0 0 0 0 Updated Mar 31, 2024
  • distributed_snapshot Public

    Chandy–Lamport's algorithm

    dsorchard/distributed_snapshot’s past year of commit activity
    Go 0 0 0 0 Updated Mar 17, 2024
  • awesome-go Public Forked from avelino/awesome-go

    A curated list of awesome Go frameworks, libraries and software

    dsorchard/awesome-go’s past year of commit activity
    Go 0 MIT 12,271 0 0 Updated Mar 13, 2024
  • gossipcache Public

    GroupCache + Memberlist

    dsorchard/gossipcache’s past year of commit activity
    Go 1 0 0 0 Updated Mar 12, 2024
  • vallam Public

    Raft Library

    dsorchard/vallam’s past year of commit activity
    0 0 0 0 Updated Mar 6, 2024
  • memberlist Public Forked from al8n/memberlist

    A highly customable, adaptable, runtime agnostic and WASM/WASI friendly Gossip protocol (SWIM) which helps manage cluster membership and member failure detection.

    dsorchard/memberlist’s past year of commit activity
    Rust 0 MPL-2.0 3 0 0 Updated Mar 6, 2024
  • raft_kv Public

    Simple Raft based KV Store.

    dsorchard/raft_kv’s past year of commit activity
    Go 1 0 0 0 Updated Mar 6, 2024
  • dist_kv Public

    Simple Distributed KV Server using MemberList and Consistent

    dsorchard/dist_kv’s past year of commit activity
    Go 1 0 0 0 Updated Mar 3, 2024

Top languages

Loading…

Most used topics

Loading…