以发布-订阅模式为模型的协议,例如MQTT和AMQP,需要一个集中的消息代理来协调发送和接收的消息。当您的物联网网络基于星形拓扑时,这不会造成太大的问题,在该拓扑中,所有消息都必须通过中央集线器,但是我一直在思考网状网络的好处以及这些因素可能受到的影响协议选择。
“线程简介”演讲特别概述了线程的网状网络的若干优点(但是这些优点通常应适用):

✔无单点故障
✔自修复
✔干扰鲁棒性
✔自扩展
✔对关键基础架构足够可靠

尽管我无法想象后四点会受到协议选择的影响,但我我对使用消息代理协议是否会抵消网状网络“没有单点故障”的任何优势感到好奇。
使用基于发布-订阅的协议是否会引入不可避免的单点故障? ,这就是为什么“线程简介”演示文稿建议将CoAP作为

我已经问过Mosquitto支持多个经纪人以消除单点故障的问题,但是我要问的是这是否是网状网络与发布之间的根本冲突? -订阅协议。

#1 楼

是和否。

两种技术都涉及提供连接的不同级别。通常,网状网络由3级或4级甚至两个ISO OSI模型提供,具体取决于实现的扩展范围。网络和传输层提供了网状网络的基本可靠性。当节点断开时,通常不会阻碍可靠性。

MQTT和AMQP是第7层的应用层协议。因此,就基本模型而言,这些协议取决于较低层的可靠性。 。但是,实施安全措施以应对较低级别的故障始终是较高OSI级别的特权。例如,如果应用程序检测到网络故障,则可以切换到完全不同的网络,例如从Wi-Fi到4G。当我们进入或离开具有已配置Wi-Fi的位置时,智能手机始终在执行此操作。

下层也有可能适应上层故障。例如,OSI 4级负载平衡可以容纳其后面的故障节点。当然,这要求可以为负载平衡和/或故障转移解决方案寻址的每个节点都必须提供相同的服务。同样显然,您至少需要两次中央组件。因为MQTT基本上是基于主题的应用程序级路由,所以通过简单的复制就可以实现主题。这是采用HiveMQ实现的MQTT群集解决方案的一个示例。

请记住,不能得出结论,选择任何一种都不能否定网络和传输级别的可靠性。更高级别的协议。但是,这不适用于用户体验。对于用户而言,较低级别的协议仅是车辆。使用具有单点故障的应用程序层协议仍然意味着,如果该节点已损坏,则可以,即使我的网络仍在工作,功能也会被破坏。

无论如何,应用层及以上层负责为用户提供可靠性。网状网络只能提供基础知识。

还有最后一件事要考虑。除非每个组件都有冗余,否则总会有用例具有单点故障。用户最可能与之交互的节点。在家庭自动化例如每个失败的节点很可能意味着一个刚刚失去了一个用例。