Circuit Breaker bảo vệ service khỏi cascade failure khi downstream chậm/lỗi. 3 trạng thái: CLOSED (bình thường, pass through) → OPEN (lỗi nhiều, fail-fast) → HALF_OPEN (thử vài request kiểm tra recovery).
Dùng resilience4j-spring-boot3.
yaml
resilience4j.circuitbreaker.instances.payment-service:
slidingWindowSize: 10
failureRateThreshold: 50 # >50% fail → OPEN
waitDurationInOpenState: 30s
permittedCallsInHalfOpenState: 3java
@CircuitBreaker(name = "payment-service", fallbackMethod = "paymentFallback")
@Retry(name = "payment-service")
public PaymentResult charge(Long orderId, BigDecimal amount) { ... }
private PaymentResult paymentFallback(Long orderId, BigDecimal amount, Exception ex) {
pendingOrderQueue.add(orderId); // fallback khi OPEN
return PaymentResult.pending(orderId);
}Kết hợp: Retry (thử lại trước khi báo lỗi), Bulkhead (giới hạn concurrent call), TimeLimiter (timeout async).
Xem state qua /actuator/circuitbreakers.