Resilience Failure Control Patterns

Mental model

Resilience không phải là luôn thử lại. Resilience là kiểm soát feedback loop khi hệ thống bắt đầu yếu đi: giảm tải, ngăn retry nhân lên, phát hiện sớm, và thử nghiệm có kiểm soát để biết failure path có thật sự hoạt động.

Pattern map

Failure pressurePatternMục tiêu
Transient errorRetry PatternTăng khả năng hồi phục
Retry nhân tảiRetry Storm preventionTránh biến lỗi nhỏ thành outage
Downstream unhealthyCircuit BreakerCho dependency thời gian hồi phục
Producer nhanh hơn consumerBackpressureLàm chậm upstream thay vì queue nổ
Traffic vượt ngưỡngRate LimitingGiữ fairness và bảo vệ capacity
Traffic vượt capacityLoad SheddingBỏ bớt request để giữ phần lõi còn sống
Resource chung bị floodBulkhead PatternCô lập blast radius
Health check xanh nhưng user path lỗiGray FailureĐo workload thật bằng Synthetic Monitoring
Timeout/retry tự duy trìMetastable FailurePhá feedback loop thay vì chỉ tìm trigger gốc
Redundancy không độc lậpCorrelated FailureKiểm tra failure domain và dependency chung
Unknown weak pointChaos EngineeringTìm điểm yếu trước incident thật

Ghi nhớ

Mỗi pattern có mặt trái. Retry làm tăng load, circuit breaker có thể reject request hợp lệ, rate limiting có thể chặn user thật, chaos experiment có thể gây sự cố nếu blast radius quá rộng. Vì vậy resilience pattern phải đi cùng Observability, SLO và post-mortem.

Một điểm mới từ ByteByteGo là nhiều distributed failure không đến từ trigger ban đầu, mà đến từ phản ứng tự động của hệ thống: Timeout kích hoạt retry, retry tạo Retry Storm, failover dồn tải sang node còn lại, autoscaling hoặc reconnect làm traffic đồng bộ. Vì vậy resilience cần thiết kế feedback loop, không chỉ thêm redundancy.

Liên kết