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