Distributed Systems Patterns

RMAG news

Notes via ByteByteGo

1. Ambassador Pattern

Pros:

Simplifies communication between services.
Handles load balancing, traffic routing, and retries transparently.
Promotes decoupling of services.

Cons:

Adds an additional layer, which can introduce latency.
Requires configuration and management overhead.

Applications:

Kubernetes uses Envoy as an Ambassador.

2. Circuit Breaker Pattern

Pros:

Prevents cascading failures and improves system resilience.
Enhances fault tolerance by isolating failing components.
Provides fallback mechanisms to maintain system stability.

Cons:

Introduces complexity to manage circuit states.
May impact performance during high load or transient failures.

Applications:

Netflix’s Hytrix library.

3. CQRS (Command Query Responsibility Segregation) Pattern

Pros:

Optimizes read and write operations independently.
Improves scalability and performance for read-heavy workloads.
Facilitates complex business logic on the write side.

Cons:

Increases architectural complexity.
Requires careful synchronization between command and query models.

4. Event Sourcing Pattern

Pros:

Provides a complete audit trail of system state changes.
Enables temporal queries and historical analysis.
Supports scalability and resilience through immutable event logs.

Cons:

Increased storage requirements due to storing all events.
Requires efficient replay mechanisms for state rebuilds.

5. Leader Election Pattern

Pros:

Establishes a single point of coordination in distributed systems.
Ensures high availability by quickly electing a new leader.
Facilitates scalability and fault tolerance.

Cons:

Adds overhead due to election algorithms and heartbeat mechanisms.
May introduce latency during leader changes.

Applications:

Apache zookeeper.

6. Publisher-Subscriber Pattern

Pros:

Supports asynchronous and real-time messaging.
Decouples publishers from subscribers, improving scalability.
Facilitates event-driven architectures.

Cons:

Requires robust message delivery mechanisms to ensure reliability.
May introduce complexity in managing message ordering and processing.

7. Sharding Pattern

Pros:

Improves scalability by distributing data across multiple nodes.
Enhances performance for read and write operations by reducing contention.
Allows horizontal scaling by adding more shards.

Cons:

Requires careful shard key selection and management.
Increases complexity in data distribution and query routing.
Introduces additional overhead for data rebalancing and maintenance.

Applications:

Cassandra and MongoDB