┌────┐ ┌───────┐ ┌──────────────┐ ┌────────┐ │User│ │YourApi│ │CircuitBreaker│ │OtherApi│ └──┬─┘ └───┬───┘ └───────┬──────┘ └────┬───┘ │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ GET /other-api ┌┴┐ │ │ │ │ │ ─────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ \ / ╔═══════════════════╗ │ │ │ │ │ │X│ ║Elapsed time : 1s ░║ │ │ │ │ │ /┬\ ╚═══════════════════╝ │ │ │ │ │ return │ │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ └┬┘ │ │ │ │ return │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ return │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ GET /other-api ┌┴┐ │ │ │ │ │ ─────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ \ / ╔═══════════════════╗ │ │ │ │ │ │X│ ║Elapsed time : 4s ░║ │ │ │ │ │ /┬\ ╚═══════════════════╝ │ │ │ │ │ return │ │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ └┬┘ │ │ │ │ return │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ return │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ GET /other-api ┌┴┐ │ │ │ │ │ ─────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ \ / ╔═══════════════════╗ │ │ │ │ │ │X│ ║Elapsed time : 2s ░║ │ │ │ │ │ /┬\ ╚═══════════════════╝ │ │ │ │ │ return │ │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ └┬┘ │ │ │ │ return │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ return │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ GET /other-api ┌┴┐ │ │ │ │ │ ─────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ \ / ╔═══════════════════╗ │ │ │ │ │ │X│ ║Elapsed time : 2s ░║ │ │ │ │ │ /┬\ ╚═══════════════════╝ │ │ │ │ │ return │ │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ └┬┘ │ │ │ │ return │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ return │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │GET /your-api ┌┴┐ │ │ │──────────────> │ │ │ │ │ │ │ │ │ │ │ │ execute ┌┴┐ │ │ │ │ ──────────────────>│ │ │ │ │ │ │ │ │ │ ╔═════════╧═╧════════════════════╧═╧════════════════════════════════╧╗ │ ║Circuit breaker is open after 25% calls over 3s of minimum 4 calls ░║ │ ╚═════════╤═╤════════════════════╤═╤════════════════════════════════╤╝ │ │ │ │ │ ────┐ │ │ │ │ \ / │ Circuit Breaker Open │ │ │ │ │X│ <───┘ │ │ │ │ /┬\ │ │ │ │ Exception │ │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ └┬┘ │ │ │ Exception │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ │ │ │ ┌──┴─┐ ┌───┴───┐ ┌───────┴──────┐ ┌────┴───┐ │User│ │YourApi│ │CircuitBreaker│ │OtherApi│ └────┘ └───────┘ └──────────────┘ └────────┘