Cả hai là mẫu chịu lỗi khi gọi service phụ thuộc hay lỗi/chậm.
Retry + exponential backoff: khi gọi thất bại tạm thời, thử lại sau khoảng chờ tăng dần (1s, 2s, 4s...) thay vì retry dồn dập. Thêm jitter (ngẫu nhiên hóa) để tránh nhiều client cùng retry đồng loạt (thundering herd). Chỉ retry lỗi tạm thời/idempotent; giới hạn số lần.
Circuit breaker (Fowler): bọc lời gọi trong một "cầu dao" có 3 trạng thái. Closed: cho gọi bình thường, đếm lỗi. Lỗi vượt ngưỡng → Open: chặn gọi ngay, trả lỗi/fallback tức thì, cho service kia thời gian hồi phục. Sau timeout → Half-open: cho vài request thử; thành công thì đóng lại, thất bại thì mở tiếp.
Bổ trợ nhau: backoff tránh dồn request về service đang lỗi; breaker chặn retry vô ích khi service đã sập, ngăn lỗi lan (cascading failure) và giải phóng tài nguyên.