Backpressure, capacity và production operations
Queue hấp thụ burst nhưng không tạo processing capacity. Backlog cuối cùng biến thành business latency, disk consumption, redelivery volume và recovery time.
1. Flow control từ consumer đến publisher
Consumer-side backpressure đến từ prefetch, worker concurrency và processing rate. Broker-side flow control giảm tốc connection đang publish khi queues/disk không theo kịp. Memory hoặc disk alarms có thể block publishers để bảo vệ node; client phải quan sát blocked/unblocked events, confirm latency và publish timeout.
| Layer | Control | Failure khi cấu hình sai |
|---|---|---|
| Consumer | Prefetch, concurrency, deadline | Unacked cao, unfairness, overload downstream |
| Queue | Max length/bytes, TTL, overflow policy | Silent business loss hoặc disk growth |
| Broker | Flow control, memory/disk alarms | Publisher stall, cluster instability |
| Producer | Rate limit, bounded buffer, retry budget | Memory blow-up, retry storm |
| Business | Admission/load shedding | Không phân biệt critical và optional work |
2. Backlog math và latency
Gọi arrival rate là λ, service rate mỗi worker là μ và số workers hữu hiệu là c. Khi λ ≥ cμ lâu dài, backlog tăng không giới hạn. Ngay cả utilization gần 100%, processing variance và downstream pauses làm tail latency tăng mạnh; cần capacity headroom cho burst và failures.
Queue depth phải đọc cùng publish/ack rate và message age. 100.000 messages có thể bình thường nếu drain vài giây, hoặc là incident nếu oldest age vượt SLA. Payload size quyết định byte backlog, memory/disk I/O và network recovery, không chỉ message count.
3. Metrics và cardinality
- Traffic: publish, confirm/nack, deliver, ack và redelivery rates.
- Backlog: ready, unacked, bytes và oldest/business age.
- Consumers: count, utilization, processing latency, cancel/recovery rate.
- Resources: memory watermark, disk free/I/O latency, file descriptors, sockets, CPU và scheduler/run queue.
- HA: quorum availability, leader distribution, member health và replica catch-up.
- Failure: blocked connections, unroutable, DLQ/retry growth và channel exceptions.
Per-queue metrics có cardinality lớn; giữ detailed telemetry cho critical queues và aggregate/archive hợp lý. Dashboard average có thể che một hot leader hoặc tenant; alert theo rate-of-change, age và saturation.
4. Capacity test và load shedding
Benchmark với queue type, replica count, persistence, confirms, payload distribution, routing fan-out, consumer work và storage thật. Warm cache test ngắn không mô phỏng backlog, compaction, node loss hay recovery. Chạy steady state, burst, soak và degraded-node scenarios.
Queue max length/bytes và overflow mode phải gắn business policy: reject publish, dead-letter hay drop-oldest có hậu quả khác. Admission control nên ưu tiên critical commands, giảm optional events hoặc trả overload rõ thay vì để disk đầy rồi toàn cluster dừng.
5. Security và change operations
Dùng TLS theo threat model, least-privilege vhost permissions tách configure/write/read, credential rotation, network allowlist và hạn chế management/metrics endpoints. Không đặt password trong URI/log; audit user, policy và topology changes.
Rolling upgrade, policy change, queue migration và certificate rotation cần compatibility matrix, canary node/workload, health gate và rollback. Không restart hàng loạt khi backlog cao; mỗi node loss có thể kích hoạt leader election, replication và client reconnect cùng lúc.
6. Incident runbook
Đầu tiên xác định producer spike, consumer slowdown, downstream dependency, poison message, hot leader hay resource alarm. Bảo vệ disk/quorum trước; giảm ingress hoặc shed optional work; scale consumers có giới hạn theo downstream capacity; cô lập poison; rồi drain/replay có kiểm soát.
- Chụp timeline và baseline rates/age/resources trước thay đổi.
- Stop amplification: unbounded retry, reconnect storm, requeue loop.
- Ổn định broker và downstream, không chỉ giảm queue depth.
- Drain theo rate budget; verify idempotency và business reconciliation.
- Sau incident, cập nhật capacity model, alerts, runbook và failure test.