CoAP có dấu chân thấp hơn MQTT không?


8

Gần đây tôi đã đọc một câu hỏi của Quora về việc CoAP hoặc MQTT có trọng lượng nhẹ hơn không, nhưng các câu trả lời dường như không thỏa mãn và tất cả đều mâu thuẫn với nhau: câu trả lời hàng đầu cho biết MQTT chiếm ít tài nguyên hơn và một câu hỏi khác bên dưới cho biết CoAP ít đòi hỏi hơn.

Từ những gì tôi đã tìm thấy, sẽ có nghĩa là CoAP sẽ ít đòi hỏi hơn MQTT , vì CoAP chỉ yêu cầu UDP và các thông điệp của nó chủ yếu là lửa và quên, không giống như MQTT hoạt động trên TCP (và do đó sẽ nhiều hơn bị liên lụy).

Giao thức nào đòi hỏi ít tài nguyên nhất để hoạt động?


Theo tài nguyên, tôi chủ yếu nghĩ về sức mạnh bộ xử lý, RAM và dữ liệu cần truyền. Ví dụ, trong câu hỏi Quora mà tôi đã liên kết, câu trả lời hàng đầu chỉ ra rằng một con chip ESP8266 đơn giản có thể chạy MQTT, chỉ có bộ xử lý 80 MHz và RAM dưới 1 MB. Tôi tò mò liệu CoAP có thể chạy trên một cái gì đó như thế này hay một môi trường thậm chí còn hạn chế hơn.

Loại trường hợp sử dụng mà tôi dự tính là nơi thiết bị chủ yếu sẽ nhận dữ liệu từ một thiết bị khác (ví dụ: các lệnh để bật / tắt), nhưng có thể cần không thường xuyên (có thể vài lần một giờ) gửi cập nhật với trạng thái của thiết bị . Tôi muốn sử dụng ít năng lượng xử lý nhất có thể để giảm chi phí thiết bị và truyền tải tương đối không thường xuyên để giảm mức sử dụng năng lượng nhiều nhất có thể.


1
Để tránh so sánh táo và cam, sẽ rất hữu ích nếu bạn có thể đưa ra một trường hợp sử dụng rất, rất cụ thể. Nhiệm vụ nào bạn muốn sử dụng làm cơ sở để so sánh?
goobering

@goobering Tôi đã chỉnh sửa với một số thông tin khác về trường hợp sử dụng cụ thể hơn; cho tôi biết nếu bạn cần thêm gì nữa
Aurora0001

Tại máy chủ / trung tâm, hoặc điểm cuối? Thiết bị mẫu của bạn dường như vượt quá thông số kỹ thuật cho điểm cuối bị ràng buộc.
Sean Houlihane

@SeanHoulihane Ở điểm cuối. Các tài nguyên cần thiết tại trung tâm không có quá nhiều yếu tố trong câu hỏi của tôi; chỉ nhằm mục đích giảm thiểu các tài nguyên điểm cuối.
Aurora0001

Câu trả lời:


7

CoAP và MQTT có cả mức sử dụng RAM bằng nhau, được đo bằng 10kbit [1].

Sự khác biệt là trong việc sử dụng cpu và mạng: [2]

Mọi khách hàng đều hỗ trợ TCP và giữ một kết nối mở cho nhà môi giới.

Vì vậy, CoAP có ít dấu chân hơn và theo toàn bộ trường hợp sử dụng (dữ liệu nhỏ thỉnh thoảng) có vẻ là sự lựa chọn tốt nhất của bạn.

Như bạn đã giới thiệu, CoAP sử dụng UDP. Nó không đảm bảo cung cấp dữ liệu. Tuy nhiên, nó vẫn hoạt động 'xuất sắc' trong điều kiện mất mát, trong khi MQTT chỉ là 'tốt'. Vì vậy, tôi sẽ không lo lắng nhiều về điều đó.

Nguồn:

[1] http://embedded-computing.com/articles/iNET-things-requirements-prot Protocol /

[2] http://www.altencalsoftlabs.com/bloss/2016/08/08/analyzing-mqtt-vs-coap/


Tham chiếu của bạn không xuất hiện để hỗ trợ cho kết luận của bạn: Bổ sung thêm 20 KB flash và 8 KB RAM để nâng cấp lên TCP điều. Nếu bạn làm tròn đến 10kbit hoặc thậm chí là 10kB, điều đó có nghĩa là sự khác biệt về mức sử dụng RAM giữa CoAP và MQTT là không đáng kể.
Gilles 'SO- ngừng trở nên xấu xa'

Phụ thuộc nếu TCP là một tiêu chí lựa chọn. Nó phản đối trường hợp bình thường cho giao thức, đó là UDP. Dùng CoAP gần như có nghĩa là chấp nhận UDP.
mico
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.