# Distributed Systems Patterns

> Locking, sagas, consensus, message queues, caching and circuit breakers as small runnable formal models, each with the invariants checked and the expected result.

Canonical: https://fizzbee.io/design/patterns/
Source: https://github.com/fizzbee-io/fizzbee/tree/main/examples/references


Common distributed-systems patterns as small, runnable formal specifications. Each page shows the spec, what the model checker verifies, and the expected result. For in-depth, step-by-step walkthroughs, see the [examples](/design/examples/).

## Locking

- [Mutex Pattern](/design/patterns/mutex/): Simple mutual exclusion with lock/unlock.
- [Read-Write Lock Pattern](/design/patterns/read-write-lock/): Multiple readers OR single writer.
- [Distributed Lock Pattern](/design/patterns/distributed-lock/): Multiple clients competing for lock with lease expiration.
- [Optimistic Locking Pattern](/design/patterns/optimistic-locking/): Version-based concurrency control.

## Transactions

- [Two-Phase Commit Protocol](/design/examples/two_phase_commit/) (walkthrough): Distributed transaction coordination with roles.
- [Saga Pattern](/design/patterns/saga-pattern/): Long-running transaction with compensation.
- [Snapshot Isolation Pattern](/design/patterns/snapshot-isolation/): Transactions read from snapshot, commit if no conflicts.

## Consensus

- [Consensus Pattern](/design/examples/raft-consensus-algorithm/) (walkthrough): Simple consensus with proposals and acceptance.
- [Leader Election (Simplified Raft)](/design/patterns/leader-election/): Distributed leader election with term-based voting.
- [Compare-And-Swap Pattern](/design/patterns/compare-and-swap/): Atomic compare-and-swap for lock-free algorithms.

## Messaging

- [Producer-Consumer Pattern](/design/patterns/producer-consumer/): Classic bounded buffer problem.
- [Message Queue Pattern](/design/patterns/message-queue/): Distributed message queue with multiple producers and consumers.
- [Cache Coherence Pattern](/design/patterns/cache-coherence/): Simple write-through cache with invalidation.

## Consistency

- [Eventual Consistency Pattern](/design/patterns/eventual-consistency/): Primary-replica replication with eventual convergence.
- [Idempotent Operations Pattern](/design/patterns/idempotent-operations/): Operations that can be safely retried.

## Resilience

- [Circuit Breaker Pattern](/design/patterns/circuit-breaker/): Prevents cascading failures with circuit states.
- [Rate Limiting Pattern](/design/patterns/rate-limiting/): Token bucket rate limiter.

## Logging

- [Write-Ahead Log Pattern](/design/patterns/write-ahead-log/): Durability through logging before applying changes.
- [Event Sourcing Pattern](/design/patterns/event-sourcing/): State derived from event stream.

