2015-10-27 20 views
5

Làm cách nào chúng tôi có thể sử dụng giao thức mqtt với kafka làm nhà môi giới thư?sử dụng giao thức mqtt với kafka làm nhà môi giới thư

Khách hàng (android/ios/ứng dụng java trên máy tính để bàn, v.v.) sẽ sản xuất và tiêu thụ thư bằng thư viện phía máy khách mqtt phao có sẵn bằng các ngôn ngữ khác nhau bằng cách sử dụng kafka làm nhà môi giới thư.

Bạn có lời khuyên nào không?

Trả lời

1

Đây không phải là ý hay. Một khách hàng MQTT thường rất nhẹ với nguồn lực hạn chế. Những thiết bị hoặc IoT có bộ nhớ nhỏ/sức mạnh CPU. Một khách hàng của Kafka thường có trọng lượng nặng. Ví dụ, khách hàng Kafka phải theo dõi bù đắp. Nó cũng đòi hỏi sự tương tác với Zookeepers. Tóm lại, Kafka không phù hợp với tư cách là nhà môi giới MQTT. Bạn nên chọn một nhà môi giới MQTT phổ biến như Mosquito.

3

AFAIK, không có đầu nối MQTT "chính thức" cho Kafka. Nhưng bạn có thể sử dụng cầu MQTT-Kafka. Để xem cảm hứng tại https://github.com/km4rcus/mqttKafkaBridge (Xin lưu ý rằng có lỗi trong việc triển khai này: chủ đề kafka không thể chứa "/", vì vậy bạn có thể muốn thay thế chúng bằng "_" trong messageArrived trong tệp Bridge.java)

Lưu ý rằng mã này chỉ là một giải pháp rất đơn giản, không thể mở rộng được. Bạn nên viết triển khai tùy chỉnh của mình để phù hợp với kỳ vọng của mình tốt hơn. Nhưng bạn nên giữ nó càng đơn giản càng tốt - đó là một điểm thất bại duy nhất. Miễn là bạn đưa dữ liệu của bạn vào Kafka, bạn sẽ nhận được một số bảo đảm nhưng bạn không nhận được sự bảo đảm nào từ nhà môi giới MQTT. Khi cây cầu treo, bạn chỉ đơn giản là mất dữ liệu của bạn ...

0

Như đã đề cập bởi @Miroslav Prymek không có cây cầu chính thức nào. Cái đã được tạo ra bởi Jacklund. Tôi đã nâng cấp cây cầu để hỗ trợ Kafka v 0.8.1.1. Cũng chứa một nhị phân dựng sẵn tương thích với JRE 1.7. Đây là liên kết tới số MQTT Kafka Bridge.

0

Bạn có thể sử dụng Mosca, bộ điều hợp mqtt được viết bằng javascript.

Mosca là một nhà môi giới mqtt Node.js, có thể được sử dụng độc lập hoặc nhúng vào trong một ứng dụng Node.js

Mosca hỗ trợ backends khác nhau như redis và MongoDB, nhưng cũng Kafka. Một ứng dụng Kafka MQTT Bridge là included in the Mosca examples.

This article on linkedin mô tả giải pháp đầy đủ hơn.

Tuyên bố từ chối trách nhiệm: Tôi là người đóng góp cho ứng dụng ví dụ về cầu Mosca Kafka.

4

Bạn có thể sử dụng trình kết nối nguồn Kafka sẽ truyền dữ liệu từ một nhà môi giới MQTT như Mosquitto vào một cụm Kafka. Xem https://github.com/evokly/kafka-connect-mqtt

Cách đơn giản nhất để chạy trình kết nối ở chế độ độc lập, trong đó một cá thể đơn lẻ sẽ chạy trên cụm Kafka trên một nút. Bạn cũng có thể chạy nó trong chế độ phân phối (mặc dù với cấu hình nhiều hơn nữa) và điều này sẽ phân phối các kết nối trên cụm để thông lượng lớn hơn. Trong chế độ phân tán, bạn có thể tạo ra một cấu trúc liên kết cho phép mở rộng theo chiều ngang, thông lượng song song và tính sẵn sàng cao. Việc thực hiện các bảo đảm bổ sung yêu cầu các cân bằng tải bổ sung, nhiều nhà môi giới MQTT và các kịch bản di chúc và cuối cùng để xử lý các kết nối bị lỗi, nhưng điều này có lẽ nằm ngoài phạm vi của câu hỏi này.

Sử dụng phương thức kết nối có lợi thế của cụm Kafka đảm bảo trình kết nối của bạn vẫn hoạt động và khởi động lại nếu cần. Chế độ phân phối cung cấp nhiều ưu điểm hơn nữa.

Các vấn đề liên quan