Cheatsheet: Kafka so với BullMQ: thiết kế kiến trúc hàng đợi hoàn chỉnh
[!NOTE] Cheatsheet tra cứu nhanh cho toàn bộ khóa học. Dùng khi cần chốt mô hình, chọn công cụ, hoặc nhớ lại cú pháp retry/DLQ.
1. Bức tranh tổng quan
| Tiêu chí | BullMQ | Kafka |
|---|---|---|
| Bản chất | Hàng đợi công việc (job queue) | Log sự kiện phân tán (event log) |
| Nền tảng | Redis | Cluster broker (tối thiểu 3 broker) |
| Đơn vị dữ liệu | Job | Record |
| Sau khi xử lý xong | Job bị xóa | Record được giữ lại |
| Số consumer nhận 1 item | Đúng một worker | Nhiều consumer group đọc độc lập |
| Đọc lại (replay) | Không (job đã xong là mất) | Có, tua offset đọc lại được |
| Mô hình | Task ngắn hạn, xong thì biến mất | Lịch sử sự kiện, append-only |
| Vận hành | Nhẹ, dễ | Nặng, cần đội vận hành |
| Chi phí nhỏ | Rẻ | Đắt (disk, network, broker) |
| Chi phí biên khi lớn | Xấu dần (mọi job nằm trong Redis) | Tốt hơn (scale theo partition) |
Câu chốt: hai mô hình khác nhau ở chỗ dữ liệu xử lý xong thì đi đâu.
2. Kafka: bốn khái niệm cốt lõi
| Khái niệm | Định nghĩa | Vai trò |
|---|---|---|
| Topic | Cái tên, kênh logic | Đơn vị tổ chức sự kiện |
| Partition | Log có thứ tự bên trong topic | Đơn vị song song hóa |
| Offset | Con trỏ vị trí trong một partition | Đánh dấu consumer đã đọc tới đâu |
| Consumer group | Nhóm consumer chia nhau partition | Mỗi group giữ offset riêng, scale ngang |
Quy tắc vàng của partition
- Thứ tự chỉ được đảm bảo trong một partition, không đảm bảo toàn topic.
- Cùng một key (ví dụ
orderId) đi vào cùng partition, nên giữ được thứ tự cho key đó. - Số consumer active trong một group không vượt quá số partition (consumer thừa sẽ ngồi không).
- Muốn tăng song song hóa: tăng số partition.
This cheatsheet is part of the paid section. Sign in and purchase the course to view the full content. Sign in