Tôi có nên sử dụng giao thức MQTT?


8

Tôi đang lên kế hoạch để bắt đầu thực hiện trường hợp sử dụng IoT dưới đây.

Ca sử dụng

Các thiết bị IoT sẽ gửi 100k tin nhắn / phút đến cổng thông qua các bộ lặp và cổng sẽ chuyển các tin nhắn lên đám mây. Tôi muốn theo dõi các nhân viên trong một tổ chức. Các cảm biến sẽ được cố định trên thẻ ID của họ. Cảm biến sẽ gửi dữ liệu liên quan đến vị trí (khoảng 15KB / tin nhắn) đến cổng thông qua các bộ lặp. Đó là cho mục đích phân tích. Sau khi dữ liệu được chuyển lên đám mây, tôi sẽ thực hiện một số phân tích và lưu trữ vào DB và hiển thị trên trang web. Dựa trên dữ liệu phân tích này, tôi sẽ hiển thị vị trí hiện tại của người dùng và cả vị trí di chuyển của người dùng trong một khoảng thời gian nhất định (1 giờ trước hoặc 2 giờ hoặc 1 ngày).

Tôi sẽ thực hiện một số xử lý dữ liệu và gửi nó đến giao diện người dùng / DB.

Tôi đã trải qua những điều cơ bản về IoT và kiến ​​trúc của nó. Sau đó, tôi quyết định sử dụng kiến ​​trúc stack "SMACK" (Spark, Mesos, Akka, Cassandra, Kafka).

Tôi quyết định sử dụng "Kafka client client" trong cổng để xuất bản các tin nhắn lên đám mây.

Tôi có nên sử dụng giao thức MQTT để chuyển tin nhắn đến Kafka không? Hoặc MQTT không cần thiết cho trường hợp sử dụng ở trên?

Nếu có, lợi ích của việc sử dụng MQTT với kiến ​​trúc "SMACK" là gì?


2
1,5 Megabyte mỗi phút? Mỗi nhân viên, cả ngày? Quên về các giao thức, có lẽ bạn nên lùi lại một bước và xem xét lại dữ liệu, tìm cách chắt lọc nó trước khi truyền.
Chris Stratton

Suy nghĩ của tôi chính xác (+1). bạn co bao nhiêu nhân viên? Đã bao giờ trên một trang web lớn (ish) với 2.000 nhân viên, bạn đang theo dõi vị trí của họ gần như một lần mỗi giây - ai cần sự chính xác đó? bạn có thể làm gì với nó? Và tại sao cần 15kB cho lat / long? Phần còn lại của nó là gì và nó có thường xuyên thay đổi không?
Mawg nói rằng phục hồi Monica

Chỉ tò mò - làm thế nào bạn theo dõi Id? RFID thụ động tầm xa? Bluetooth? Nếu bất cứ điều gì khác ngoài RFID thụ động, tôi có thể thấy trước các vấn đề về pin.
Mawg nói rằng phục hồi Monica

Câu trả lời:


5

Bạn không phải sử dụng MQTT. Các máy khách Kafka được cài đặt trên thẻ ID nhân viên có thể gửi dữ liệu tới nhà môi giới kafka trên đám mây trực tiếp. Vì vậy, trong khi bạn đang sử dụng Kafka cho cổng, bạn thực sự có thể sử dụng kafka cho chính các cảm biến.

Kafka và MQTT không thể thay thế cho nhau, chúng có các mặt mạnh khác nhau (tiêu thụ năng lượng, tiêu thụ băng thông, thông lượng ...) nhưng tôi nghĩ bạn biết điều đó, giả sử từ sự phức tạp của ngăn xếp của bạn. Kafka có thể xử lý 100k tin nhắn / phút.

Nếu bạn quyết định sử dụng MQTT, đây là một bài đăng trên blog về cách IBM sử dụng MQTT và Kafka trong cùng một dự án. Dự án của họ cũng là về tính di động, vì vậy tôi nghĩ rằng nó thực sự có thể giúp ích.

Quản lý thiết bị IoT với Kafka và MQTT


atayenel, Cảm ơn đã giải thích chi tiết. Trong trường hợp của tôi, tôi nên sử dụng cổng thay vì trực tiếp đẩy tin nhắn từ cảm biến. Google (MQTT) và nhà cung cấp dịch vụ IOT của IBM sử dụng MQTT? Sau khi đọc liên kết dưới đây, tôi có một số nhầm lẫn ... Bạn có biết tại sao, Có lý do cụ thể nào không? cloud.google.com/iot/docs/con accept / prot Protocol
SKK

Kafka có thể xử lý lượng dữ liệu đó không?
Mawg nói rằng phục hồi Monica

Kafka tốt hơn mqtt ở thông lượng dữ liệu. Vì vậy, nếu mqtt xử lý nó, kafka cũng có thể xử lý nó.
atakanyenel

@atayenel cảm ơn ý kiến ​​của bạn. Bạn gợi ý cho tôi những yêu cầu phần cứng tối thiểu gần đúng cho trường hợp sử dụng của tôi?
SKK

@SKK Tôi không thể nói chính xác, nhưng bạn có thể xem câu hỏi này .
atakanyenel

2

Hầu như không có vấn đề với hầu hết mọi nhà môi giới MQTT để xử lý tải này, đặc biệt là đối với các tin nhắn qos = 0 (có thể trong trường hợp của bạn). Chúng tôi có tải liên tục cho nhà môi giới của chúng tôi với 100.000 tin nhắn đến (0,5KB) mỗi giây (+ SSL). Vấn đề có thể xuất hiện từ phía giao thông, không phải từ pps.

Về kiến ​​trúc hệ thống của bạn, lời khuyên cá nhân của tôi - hãy cố gắng làm cho nó đơn giản nhất có thể. Và có nghĩa là đơn giản - chỉ một vài thành phần / dịch vụ trung gian. Nếu bạn có thể kết nối trực tiếp hai dịch vụ - hãy làm điều đó. Bạn sẽ luôn có khả năng làm cho nó phức tạp hơn khi bạn sẽ bắt đầu thêm các tính năng.


Cảm ơn bạn. Bạn có muốn tôi sử dụng kiến ​​trúc đơn giản chứ không phải SMACK?
SKK

Bạn có thể vui lòng xem iot.stackexchange.com/q/2718/5382 này không?
SKK

Điều đó hoàn toàn phụ thuộc vào bạn, nhưng theo tôi, tôi sẽ tạo ra nó đơn giản nhất có thể, chỉ tập trung vào các nhiệm vụ quan trọng ngay từ đầu. Trường hợp thông thường là sự hiểu biết của bạn về dự án trước và sau (hoặc ở giữa) là hoàn toàn khác nhau và thường bạn có một kết luận cuối cùng "nếu tôi làm lại tôi sẽ làm nó khác"))
shal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.