thảo luận Nên chọn message queue nào

  • Người tạo chủ đề Người tạo chủ đề chetdoi89
  • Ngày bắt đầu Ngày bắt đầu
Anh em nào dùng qua NATS rồi xin cho hỏi NATS JetStream có thay cho Kafka được không nhỉ? Đang muốn tìm một giải pháp lightweight dễ setup operation hơn Kafka.
Quy mô project cũng be bé dùng Kafka thấy to quá :bad_smelly:
 
Anh em nào dùng qua NATS rồi xin cho hỏi NATS JetStream có thay cho Kafka được không nhỉ? Đang muốn tìm một giải pháp lightweight dễ setup operation hơn Kafka.
Quy mô project cũng be bé dùng Kafka thấy to quá :bad_smelly:
Kafka bị dính Zookeeper maintain à anh
 
Kafka bị dính Zookeeper maintain à anh
Cơ bản để vận hành Kafka cluster tốn chi phí hơn là NATS. Hiện tại thì ko rõ nhứ hồi xưa để setup dc 1 cluster thì cũng phải 3 node (2 vCPU + 8GB RAM) chạy chung cho cả ZooKeeper + Kafka (recommend là chạy node riêng). Chưa kể phải monitor JVM, ZooKeeper, Kafka cũng tương đối phức tạp làm cost tăng nhiều.
Project hiện tại be bé ko cần đến mức như vậy nhưng mà cơ bản vẫn cần distributed logs như Kafka nên thấy NATS JetStream có vẻ ok.
 
Cơ bản để vận hành Kafka cluster tốn chi phí hơn là NATS. Hiện tại thì ko rõ nhứ hồi xưa để setup dc 1 cluster thì cũng phải 3 node (2 vCPU + 8GB RAM) chạy chung cho cả ZooKeeper + Kafka (recommend là chạy node riêng). Chưa kể phải monitor JVM, ZooKeeper, Kafka cũng tương đối phức tạp làm cost tăng nhiều.
Project hiện tại be bé ko cần đến mức như vậy nhưng mà cơ bản vẫn cần distributed logs như Kafka nên thấy NATS JetStream có vẻ ok.
NAT chắc có cả cái bi direct như RabbitMQ không anh nhỉ, còn Kafka chỉ 1 chiều. Kafka xưa em nhớ để 2n+1(số lẻ) cluster để 1 con lên Master. Monitor thì có Kafka admin đúng không nhỉ. Nhưng được cái có Kafka rest hỗ trợ Restful ngon lành :D, debug sướng
 
NAT chắc có cả cái bi direct như RabbitMQ không anh nhỉ, còn Kafka chỉ 1 chiều. Kafka xưa em nhớ để 2n+1(số lẻ) cluster để 1 con lên Master. Monitor thì có Kafka admin đúng không nhỉ. Nhưng được cái có Kafka rest hỗ trợ Restful ngon lành :D, debug sướng
NATS nó hỗ trợ nhiều kiểu topo, connectivity hơn Kafka. Dùng làm RPC (như RabbitMQ) cũng ổn.
Kafka thì có metrics exporter cho Prometheus nên cắm vào là xem dc.
 
Cơ bản để vận hành Kafka cluster tốn chi phí hơn là NATS. Hiện tại thì ko rõ nhứ hồi xưa để setup dc 1 cluster thì cũng phải 3 node (2 vCPU + 8GB RAM) chạy chung cho cả ZooKeeper + Kafka (recommend là chạy node riêng). Chưa kể phải monitor JVM, ZooKeeper, Kafka cũng tương đối phức tạp làm cost tăng nhiều.
Project hiện tại be bé ko cần đến mức như vậy nhưng mà cơ bản vẫn cần distributed logs như Kafka nên thấy NATS JetStream có vẻ ok.
Kafka kraft giờ bỏ được cục zookeeper rồi bác. Đỡ được 1 cục :feel_good:

via theNEXTvoz for iPhone
 
Bổ sung thêm mình làm bên mảng data thì nói đến kafka người ta thường nói đến concepts sub-second (dưới 1 giây). Đó là yêu cầu để làm source và sink khi viết etl job theo dạng streaming như Apache Flink/Spark Structed Steaming thì Kafka/Pulsar là yêu cầu bắt buộc nếu muốn hệ thống real-time.

Kafka còn được dùng để pipe ra 2 luồn xử lí (real-time vs cold storage/historical). Để dựng real-time pipeline với topic A -> flink job -> topic B -> flink job. Việc khó nhất ở dùng kafka theo kinh nghiệm của mình là drain out (ingress data to latest) và message order thì dùng để store real-time pipeline. Vì thế mỗi lần test là bao tạo topics luôn 😂
 

Trong rất nhiều tình huống thì queue thực sự chỉ cần implement bằng DB là đủ.
Ông Rick Branson này từng là Lead ở Instagram, giờ là CTO của Planetscale Data (Đằng sau Vitess).

Đến FB còn dùng MySQL để làm queue nữa.
https://engineering.fb.com/2021/02/...ng/foqs-scaling-a-distributed-priority-queue/






Screenshot_2023-06-02-22-38-54-519_com.twitter.android-edit.jpg
 
Prometheus cứ pull kafka metric về thôi bác. Muốn hiển thị gì thì grafana lấy lên thôi. Consumer lag, produce, consumer fetch, message in, bytes in, bytes out, ...

Grafana nó cho import dashboard của kafka nên chỉ cần lên trang chủ tài json về rồi import xài tẹt ga :p

Gửi từ Thợ code, lương vài đồng đông dương bằng vozFApp
 
Cơ bản để vận hành Kafka cluster tốn chi phí hơn là NATS. Hiện tại thì ko rõ nhứ hồi xưa để setup dc 1 cluster thì cũng phải 3 node (2 vCPU + 8GB RAM) chạy chung cho cả ZooKeeper + Kafka (recommend là chạy node riêng). Chưa kể phải monitor JVM, ZooKeeper, Kafka cũng tương đối phức tạp làm cost tăng nhiều.
Project hiện tại be bé ko cần đến mức như vậy nhưng mà cơ bản vẫn cần distributed logs như Kafka nên thấy NATS JetStream có vẻ ok.
Nên dùng redpanda: https://docs.redpanda.com/docs/home
  • 1 là nhỏ gọn, triển khai phát 1 là xong. Cần scale vẫn scale multi broker được (server hoặc k8s đều có). Có UI monitor cụm luôn chứ không phải cài riêng như kafka.
  • 2 là tương thích các lib với kafka (version <3.1), giả sử tới lúc cần tới kafka thì vẫn back về kafka được (ver 3.1) sau đó upgrade dần code lên sau.
  • 3 là hiệu năng ổn hơn kafka nhiều.

nats-io thì cũng ok, con này thuộc dạng siêu nhỏ gọn rồi nhưng đánh đổi lại có thể là vấn đề hiệu năng và development cho nó.
 

Thống kê chủ đề

Ngày tạo
chetdoi89,
Người trả lời cuối
the_ruler,
Trả lời
69
Lượt xem
23.831
Quay lại
Lên đầu trang