Lesson 52 — Rate Limiting & Circuit Breaker
Trang này minh hoạ 3 ý chính của bài học bằng mô phỏng tương tác: (1) 4 thuật toán rate limit (token / leaky / fixed / sliding) chạy trên cùng một stream request để so sánh trực tiếp; (2) circuit breaker state machine Closed → Open → Half-Open, animate theo tỉ lệ fail bạn chọn; (3) cascading failure A→B→C — so sánh có và không có circuit breaker.
1. Bốn thuật toán rate limit trên cùng 1 stream
Tất cả 4 limiter dùng chung tham số limit = 10 /
window 1s (token & leaky: rate 10/s, cap 10).
Mỗi lần bạn bấm Gửi 1 request (hoặc bật Auto burst), cùng một
request được đưa qua cả 4 — quan sát cái nào allow, cái nào deny.
Token bucket
Leaky bucket
Fixed window
Sliding window (counter)
Mẹo: bấm Auto burst rồi +1 giây nhiều lần để thấy token/sliding "hồi" dần, còn fixed window reset nhảy bậc ở mỗi ranh giới giây.
2. Circuit breaker — state machine
Breaker với ngưỡng 5 fail liên tiếp → Open,
cooldown 3s → Half-Open (1 probe).
Kéo slider để chọn xác suất downstream fail, rồi bấm Gửi request hoặc
Auto để xem mạch tự đóng/mở.
3. Cascading failure — có vs. không circuit breaker
Service A → B → C. Service C "lock DB" (down). Mỗi call tới C đang hỏng mất 2s timeout mới fail. Bấm Bắn 30 request vào A để xem điều gì xảy ra với connection pool của A trong 2 kịch bản.
Không có circuit breaker
Có circuit breaker (+ timeout)
Quan sát: bên trái, pool A bị 30 connection kẹt đợi C → A không nhận thêm request → cascading. Bên phải, sau vài fail breaker Open → A trả 503 ngay (fail-fast), pool không bao giờ cạn → A vẫn sống.