Circuit breaker bảo vệ dependency. Bản thân nó cũng hỏng theo kiểu có tên.
Flapping
Mở/đóng liên tục vì threshold nhạy + traffic burst. Metric nhiễu; client thấy 503 lác đác. Chữa: hysteresis, cửa sổ trượt đủ mẫu, cool down tối thiểu.
Half-open storm
CLOSED --fail%--> OPEN --timer--> HALF_OPEN
│
50 request cùng lúc “thử” → dependency gục lại
đúng: 1 probe; còn lại fail-fast / xếp hàng ngắn
Chữa: một (vài) probe; request khác fail-fast hoặc queue ngắn; chỉ CLOSED lại khi probe OK.
Fail-closed vs fail-open
Fail-closed — khi breaker/lỗi: từ chối (an toàn, mất availability)
Fail-open — khi không chắc: cho qua (availability, rủi ro)
Auth / money path → nghiêng closed
Feature phụ / banner → có thể open + degrade
Breaker chính hỏng → quyết định explicit, đừng mặc định im
Ghép
- Bulkhead — giới hạn concurrent trước khi breaker mở.
- Retry — không retry khi breaker mở.
- Shed — khi quá tải toàn cục.
Một câu
Breaker cũng cần thiết kế failure — không chỉ threshold
lỗi.
Probe nhẹ; đừng flap; chọn open/closed theo rủi ro.