Động cơ chính đằng sau kafka đang mở rộng quy mô.
MQTT là giao thức có đặc điểm kỹ thuật công khai cho truyền thông khách hàng/nhắn tin nhẹ, cho phép xuất bản/đăng ký trao đổi. Việc triển khai nhiều thư viện và môi giới của khách hàng (Mosquitto, JoramMQ ...) tồn tại và hầu như tương thích. MQTT chỉ xác định giao thông và phần mơ hồ của ứng dụng (tức là cách dữ liệu được xử lý và có thể được lưu trữ, cách khách hàng được ủy quyền ...). Thông số kỹ thuật không rõ ràng nếu dữ liệu được tiêu thụ trên một chủ đề chỉ là thời gian thực hoặc có thể tồn tại. Thông số này không nêu rõ bất kỳ điều gì về cách nhà môi giới tin nhắn triển khai MQTT có thể/nên mở rộng quy mô. Mặt khác, Apache Kafka là một nhà môi giới tin nhắn dựa trên một "đăng nhập cam kết" nội bộ: trọng tâm của nó là lưu trữ lượng lớn dữ liệu trên đĩa, và cho phép tiêu thụ trong thời gian thực hoặc sau đó (miễn là dữ liệu vẫn có sẵn trên đĩa). Nó được thiết kế để có thể triển khai dưới dạng cụm nhiều nút, với các thuộc tính scalabily tốt. Kafka sử dụng giao thức mạng riêng của mình.
Vì vậy, bạn đang so sánh hai thứ khác nhau ở đây: giao thức phụ/pub chuẩn (với nhiều triển khai) và phần mềm lưu trữ/phân phối tin nhắn cụ thể, vaguley của cùng một gia đình với giao thức riêng.
Tôi muốn nói rằng nếu bạn cần lưu trữ lượng lớn thư, để đảm bảo xử lý theo lô, hãy xem thêm tại Kafka. Nếu bạn có rất nhiều khách hàng/ứng dụng trao đổi thư trong thời gian thực trên nhiều chủ đề công khai, hãy xem xét nhiều hơn các triển khai của người môi giới thư MQTT (hoặc thậm chí AMQP).
Nguồn
2016-05-24 07:30:49
Stackoverflow không phải là địa điểm để yêu cầu so sánh các công nghệ – hardillb