Kafka rất nhanh — nhưng tôi vẫn sẽ dùng Postgres
(topicpartition.io)Luận điểm cốt lõi
Ngành công nghệ thường chia thành hai phe:
- Phe 1: chạy theo từ khóa thời thượng và đưa vào những stack công nghệ mới nhất, phức tạp một cách thiếu chọn lọc
- Phe 2: tiếp cận hợp lý, thực dụng và chỉ dùng đúng mức cần thiết
Tác giả cho rằng trong phần lớn trường hợp, có thể dùng Postgres thay cho Kafka như một hệ thống pub/sub và queue.
Kết quả benchmark
Hiệu năng Pub/Sub
- 1 node 4 vCPU: ghi 5.036 message/giây, đọc 25.183 message/giây (fan-out 5x)
- 3 node sao chép, mỗi node 4 vCPU: giữ được throughput tương tự, độ trễ tăng nhẹ
- 1 node 96 vCPU: 243.000 message/giây, tốc độ đọc 1.16 GiB/s
Hiệu năng queue
- 1 node 4 vCPU: 2.885 message/giây
- 1 node 96 vCPU: 20.144 message/giây
Các luận điểm chính
- Tiến bộ phần cứng: phần cứng hiện đại (CPU 192 lõi, RAM 4TB) khiến một node đơn lẻ trở nên rất mạnh
- Thời kỳ phục hưng của Postgres: phong trào “dùng Postgres cho mọi thứ” đang phát triển
- Tính thực dụng: ngay cả các startup khổng lồ như OpenAI vẫn còn dùng một instance Postgres đơn lẻ
- Chi phí tổ chức: đưa vào công nghệ mới phát sinh chi phí về học tập, vận hành, giám sát, v.v.
Kết luận
"Cứ dùng Postgres cho đến khi nó không chịu nổi nữa"
Phần lớn công ty chỉ cần throughput ở mức vài MB mỗi giây, và Postgres hoàn toàn có thể gánh được. Thông điệp ở đây là chỉ nên đưa vào hệ thống phân tán phức tạp khi thực sự cần thiết.
8 bình luận
Kafka chậm mà...
Tôi không rõ liệu Ppogeuli có phù hợp cho mọi tình huống hay không, nhưng có vẻ tôi đã thấy khá nhiều trường hợp dùng Kafka dù không cần, khiến phát sinh thêm công sức.
Lại thêm một bài ca ngợi postgresql nữa... Điều quan trọng là dùng đúng mức cần thiết, và thiết kế sao cho có thể chuyển đổi linh hoạt.
Nhìn cái này làm tôi nhớ đến bài viết gợi ý dùng Postgresql cực đoan nhất.
Ồ, làm sao bạn đổi được tiêu đề theo ý mình vậy?
Tiêu đề à?
Cũng không hẳn là tôi đã dùng kỹ xảo gì ghê gớm đâu.
https://news.hada.io/guidelines
> Hỗ trợ Markdown
> Được hỗ trợ cả trong bài viết và bình luận.
> Về cơ bản tuân theo đặc tả CommonMark.
> Không hỗ trợ hình ảnh.
Ngoài ra, có vẻ như nếu là URL của GeekNews thì một biểu tượng sẽ được hiển thị trước tiêu đề liên kết
Cứ dùng SQLite cho đến khi nó hỏng thì thôi.