Trung BìnhSystem Design iconSystem Design

Kafka và RabbitMQ khác nhau như thế nào? Khi nào dùng mỗi loại? (How do Kafka and RabbitMQ differ? When to use each?)

RabbitMQ là traditional message broker (queue-based): messages được push đến consumers, sau khi consumer acknowledge thì message bị xóa, hỗ trợ nhiều messaging patterns (pub/sub, point-to-point, routing với exchanges), tốt cho task queues và RPC. Kafka là distributed event log (log-based): messages được append vào log và retained theo thời gian (không xóa sau consume), consumers tự pull và track offset của mình, hỗ trợ replay messages, designed cho high-throughput (hàng triệu messages/second).

Chọn RabbitMQ khi:
- cần complex routing logic, task distribution, message TTL và priority
- tích hợp với nhiều protocols (AMQP, STOMP, MQTT)
- team nhỏ cần dễ ops

Chọn Kafka khi:
- event streaming và event sourcing, audit log cần retention lâu dài
- multiple consumers cần đọc cùng message độc lập
- high throughput analytics pipeline, real-time data integration

Xem toàn bộ System Design cùng filter theo level & chủ đề con.

Mở danh sách System Design