Message Queue 30/08/2026 8 phút

Đặt hạn ngạch 5 MB/giây cho Kafka, client vẫn đẩy lọt 47 MB ở tốc độ 150 MB/giây — và khi bị bóp, nó chỉ thấy độ trễ 10,9 giây chứ không một lỗi nào

Một client viết sai có thể chiếm hết băng thông cả cụm. Kafka có hạn ngạch để chặn, và tôi đo xem nó thật sự làm gì: bóp đúng xuống 4,38 MB/giây, nhưng bóp bằng cách làm chậm phản hồi chứ không từ chối, nên không có lỗi nào để bắt — và vì nó đo trên cửa sổ trung bình 11 giây, một client vẫn bùng phát được tới gấp 11 lần hạn ngạch trước khi bị chặn.

Message Queue 30/08/2026 9 phút

Bật TLS cho Kafka làm việc ghi chậm 20%, nhưng việc đọc chậm tới 2,2 lần — cùng một tính năng, hai cái giá lệch hẳn, và lý do nằm ở một đường tắt chỉ phía đọc mới có

Tôi dựng một broker Kafka hai cổng — PLAINTEXT và SSL — rồi đo cùng phần cứng, cùng dữ liệu: ghi với TLS chậm 20%, nhưng đọc chậm 2,2 lần, và cột SSL gần như phẳng trong khi PLAINTEXT tăng dần. Khác biệt không phải ngẫu nhiên — mã hoá giết chết sendfile, cái đường tắt zero-copy mà chỉ phía đọc mới được hưởng.

Message Queue 30/08/2026 8 phút

Bật ACL cho Kafka và broker tự chặn chính mình không khởi động nổi — rồi một producer bị chặn nhận lỗi 'Cluster authorization failed' không hề nhắc tới topic nào

Xác thực trả lời 'bạn là ai', ACL trả lời 'bạn được làm gì'. Tôi bật ACL trên cụm thật rồi cấp quyền từng lớp: broker bị chính luật của nó chặn vì lưu lượng nội bộ là ANONYMOUS, đọc cần tới hai ACL, và lỗi của producer idempotent nói về cụm chứ không nói về topic. Mỗi lỗi đều chỉ sai chỗ cần sửa.

Message Queue 30/08/2026 8 phút

MirrorMaker 2 chép 200.000 tin sang cụm Kafka khác trong 8,7 giây — nhưng offset của consumer thì không sang, và nó hỏng mà không báo một tiếng; chép sách dễ, chép dấu trang mới khó

Sao chép Kafka giữa hai vùng là nền của mọi kế hoạch phục hồi thảm hoạ. Tôi dựng hai cụm thật, chạy MirrorMaker 2: dữ liệu sang hoàn hảo trong 8,7 giây, nhưng vị trí đọc của consumer thì không — topic checkpoint được tạo ra, rỗng, và im lặng. Đó là khác biệt giữa 'có bản sao dữ liệu' và 'có kế hoạch chuyển vùng'.

Message Queue 30/08/2026 8 phút

Tôi thay cả ba broker Kafka lên phiên bản mới không mất một tin nào — rồi phát hiện cụm vẫn chưa thật sự chạy bản mới; 'đã cài' không bao giờ là 'đã bật'

Nâng cấp Kafka không cần dừng dịch vụ, quy trình ngắn hơn nhiều người nghĩ. Tôi chạy nó thật trên cụm đang có producer và consumer hoạt động: thay từng broker, ISR đầy lại sau 1–22 giây, không mất tin. Nhưng nhị phân mới không có nghĩa giao thức đã mới — và khoảng cách đó là một cửa sổ lùi được đặt ra có chủ ý.

Message Queue 30/08/2026 8 phút

Quên đúng một dòng volume và 10.000 tin biến mất cùng cả topic — không một dòng log nào báo; bốn thứ Docker phải đổi trước khi chạy Kafka thật

Chạy Kafka trong Docker để thử nghiệm chỉ cần một lệnh. Chạy nó thật thì cần vài dòng nữa — và bài này đo chuyện gì xảy ra khi thiếu từng dòng: thiếu volume thì mất sạch dữ liệu không một dòng log, giới hạn bộ nhớ 400 MB thì broker bị OOMKilled giữa chừng, và advertised.listeners sai là chỗ hỏng nhiều nhất.