我最近阅读了一个关于CoAP或MQTT是否更轻量级的Quora问题,但是答案似乎并没有特别令人满意,并且彼此矛盾:顶部的答案表示MQTT占用的资源较少,而下面的答案表示CoAP的需求较少。 br />
从我发现的结果来看,CoAP的要求不如MQTT有意义,因为CoAP只需要UDP,并且其消息主要是一劳永逸的,而MQTT不支持TCP (因此将涉及更多)。

哪个协议需要最少的资源来运行?


通过资源,我主要是在考虑所需的处理器电源,RAM和要传输的数据。例如,在我链接的Quora问题中,最高答案指出,一个简单的ESP8266芯片可以运行MQTT,该处理器只有80MHz的处理器和少于1MB的RAM。我很好奇CoAP是否可以在这样的环境下运行,甚至可以在更受限的环境下运行。

我设想的那种用例是设备将主要从另一个设备接收数据设备(例如,打开/关闭命令),但可能不经常(可能是每小时几次)发送有关设备状态的更新。我想使用尽可能少的处理能力来降低设备成本,并传输相对不频繁的信号以尽可能减少功耗。

评论

为了避免比较苹果和橘子,如果您可以列出一个非常非常具体的用例,将很有用。您想将什么任务用作比较的基础?

@goobering我已经编辑了有关更具体用例的更多信息;让我知道您是否还有其他需求。

在服务器/集线器还是端点?对于受约束的端点,您的示例设备似乎超出规格。

@SeanHoulihane在端点处。在我的问题中,枢纽所需的资源并不是很重要。只是为了尽量减少端点资源。

#1 楼

CoAP和MQTT的RAM使用率均相等,以10kbits为单位[1]。

cpu和网络使用率不同:[2]


每个客户端都支持TCP并保持对代理开放的连接。


因此,CoAP的占地面积更少,并且根据整个用例(偶尔有少量数据),这似乎是您的最佳选择选择。

正如您所提到的,CoAP使用UDP。它不保证数据传送。在有损条件下,它仍然表现出“出色”,而MQTT只是“良好”。因此,我对此不必担心。

来源:

[1] http://embedded-computing.com/articles/internet-things-requirements-protocols /

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

评论


您的参考文献似乎不支持您的结论:“额外的20 KB闪存和8 KB RAM升级到TCP”。如果舍入到10kbit或什至10kB,这确实意味着CoAP和MQTT在RAM使用率上的差异是不可忽略的。

–吉尔斯'所以-不再是邪恶的'
17年5月27日在20:14



取决于TCP是否为选择标准。它与协议的正常情况(UDP)相反。采用CoAP几乎意味着接受UDP。

–mico
17年5月27日在20:33