MQTT luôn được kết nối và tải dữ liệu 4G


10

Tôi đang làm việc trong một dự án IoT có hàng ngàn khách hàng MQTT được kết nối với một nhà môi giới (mosquitto) thông qua bộ định tuyến / modem 4G / WiFi. Ít hơn 10 khách hàng được kết nối với cùng một bộ định tuyến và các bộ định tuyến đến từ những nơi khác nhau (các thành phố khác nhau).

Ngay bây giờ chúng tôi có rất ít khách hàng và họ luôn được kết nối với nhà môi giới. Tôi biết từ cuộc thảo luận này rằng sẽ không có vấn đề gì ngay cả khi chúng sẽ tăng lên hơn 1000 đơn vị.

Câu hỏi của tôi là về tải lưu lượng trên kết nối 4G. Người dùng cuối sợ về mức tiêu thụ dữ liệu với tất cả các "kênh" được mở và không được sử dụng. Theo như tôi hiểu khi không có hoạt động thì chỉ có các gói duy trì được gửi đi , mặc dù tôi không thể tìm thấy thông tin này chắc chắn trong tài liệu MQTT.

Tôi có thể giả sử lưu lượng khi không có gói nào được xuất bản không đáng kể không?

Câu trả lời:


6

Thông số MQTT liệt kê chi tiết các gói PINGREQPINGRESP tạo nên giao dịch duy trì.

Mỗi cái chỉ có kích thước 2 byte nên một sự kiện toàn bộ sử dụng tổng cộng 4 byte. Vì bạn có thể kiểm soát tần suất các gói tin được gửi cho mỗi khách hàng dựa trên mức độ nhanh chóng bạn cần biết rằng kết nối bị mất, bạn có toàn quyền kiểm soát lượng dữ liệu được sử dụng khi không có tin nhắn nào được công bố.

Nếu bạn muốn giảm tải dữ liệu hơn nữa, bạn có thể có một nhà môi giới riêng chạy trước bộ định tuyến 4G mà 10 thiết bị kết nối với nhau sau đó được kết nối với nhà môi giới trung tâm. Điều này sẽ giảm số lượng gói tin còn sống xuống còn 1 trên mỗi bộ định tuyến 4G thay vì 1 trên mỗi máy khách. Điều này có lợi thế là 10 thiết bị cục bộ có thể tiếp tục truyền tin nhắn cho nhau nếu liên kết bị hỏng và bạn có thể sử dụng tin nhắn được giữ lại / Tin nhắn cuối cùng và Tin nhắn để theo dõi khi từng khách hàng gặp sự cố.


Sử dụng một nhà môi giới trung gian là một lời khuyên tốt, thậm chí tôi sợ rằng nó không phù hợp trong trường hợp cụ thể này. Hữu ích để biết, mặc dù!
Đánh dấu

Dù sao, tôi biết hành vi của PINGREQ / RESP, nhưng điều tôi không tìm thấy là chúng là các gói duy nhất được trao đổi khi không có hoạt động thực sự (tức là do ứng dụng người dùng khởi tạo). Tôi có thể suy luận điều này từ câu trả lời của bạn, nhưng các tài liệu dường như không nói rõ điều đó.
Đánh dấu

Bộ đếm thời gian duy trì được đặt lại mỗi khi nhận được gói, tôi không thể nhớ nơi nào trong thông số kỹ thuật này được nói ở trên đỉnh đầu của tôi
hardillb

2
Chỉ muốn chỉ ra rằng đề xuất giới thiệu một nhà môi giới địa phương thậm chí còn có ý nghĩa hơn nếu chúng ta không nói về 2 byte cho mỗi tin nhắn nhưng vì TCP / IP giống như 42 byte cho mỗi tin nhắn nên 84 cho một chu kỳ ping.
xwoker

1
@Mark Thực tế là chỉ các gói Ping là thứ duy nhất được gửi nếu không có tin nhắn nào được gửi đi được ngụ ý bởi các câu sau bảng này: docs.oocation-open.org/mqtt/mqtt/v3.1.1/os/ tựa
hardillb
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.