How the circuit breaker pattern protects microservices from cascading failures, including closed/open/half-open states, slow-call thresholds, fallback behavior, retry interaction, rollout checks, and production metrics.
Why adding more service instances can leave throughput flat when the bottleneck is a shared database, lock, connection pool, external dependency, queue, cache, or load-balancing constraint.
Why request timeouts limit waiting but do not stop cascading failures unless they are paired with admission control, bounded queues, backpressure, and load shedding.
Why read replicas often fail to reduce primary database load when reads are coupled to writes, replica lag triggers fallback behavior, and query cost is misunderstood.