Trong hệ thống phân tán, các lời gọi sẽ lỗi. Retry với backoff phục hồi từ các lỗi tạm thời; một circuit breaker ngăn bạn liên tục đập vào một dependency thật sự đang chết. Chúng bổ trợ cho nhau: retry với trục trặc nhỏ, ngắt mạch khi sự cố kéo dài.
Trong hệ thống phân tán, các lời gọi sẽ lỗi. Retry với backoff phục hồi từ các lỗi tạm thời; một circuit breaker ngăn bạn liên tục đập vào một dependency thật sự đang chết. Chúng bổ trợ cho nhau: retry với trục trặc nhỏ, ngắt mạch khi sự cố kéo dài.
Với các lỗi tạm thời (timeout, trục trặc mạng ngắn, lỗi 503), hãy retry — nhưng backoff theo cấp số nhân và thêm jitter để các lần retry trải ra thay vì đồng bộ thành một đợt ồ ạt (thundering herd).
lần 1 → chờ ~1s (+ jitter ngẫu nhiên)
lần 2 → chờ ~2s (+ jitter ngẫu nhiên)
lần 3 → chờ ~4s (+ jitter ngẫu nhiên)
→ giới hạn ở maxRetries (vd. 3) và một delay tối đa → đừng retry mãi mãi
Lưu ý then chốt:
Một circuit breaker theo dõi lỗi tới một dependency và, sau một ngưỡng, ngắt sang trạng thái open — fail nhanh (hoặc trả về fallback) thay vì gọi một service đã chết. Sau một khoảng cooldown nó chuyển sang half-open để dò xem đã phục hồi chưa.
CLOSED → các lời gọi đi qua; đếm số lỗi
quá nhiều lỗi → ngắt → OPEN
OPEN → fail nhanh ngay lập tức (không gọi); bắt đầu đếm cooldown
hết cooldown → HALF-OPEN
HALF-OPEN → cho phép vài lời gọi dò
thành công → CLOSED (đã phục hồi) ; lỗi → quay lại OPEN
Retry → lỗi tạm thời, có khả năng sớm thành công (1 lời gọi chậm)
Circuit breaker → lỗi lặp lại/kéo dài (dependency đang chết)
→ dùng cùng nhau: breaker ngăn các retry chất chồng lên một service đã chết
Không có những thứ này, một dependency lỗi kéo cả caller chết theo: request chất chồng vì timeout, retry khuếch đại tải, và lỗi lan truyền qua các service. Exponential backoff với jitter phục hồi từ trục trặc mà không gây retry storm; giới hạn và idempotency giữ retry an toàn; và circuit breaker ngừng phí tài nguyên cho một dependency đã chết và cho nó không gian để phục hồi. Cùng nhau, chúng biến một lỗi dependency thành một sự kiện được giới hạn, tự chữa lành.