Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
@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 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

Loading
Type
Select type
Language
Select language
Sort
Select order
Showing 10 of 31 repositories

Top languages

Loading…

Most used topics

Loading…

Morty Proxy This is a proxified and sanitized view of the page, visit original site.