MQTT作为集中通信协议

时间:2015-06-24 08:53:37

标签: javascript java c++ p2p mqtt

我想为大量设备实施服务。此服务应该能够在服务器和客户端之间发送/接收(小 - 最大1kB)消息,还能在设备和设备之间发送/接收p2p。

目前我正在考虑使用MQTT实现这一目标,因为它似乎是一种轻量级的低流量生成协议。正如本question中所述,XMPP也可能是另一种选择,但我不确定这是否能给我提供所需的性能。

总结我对协议有以下期望:

  1. 小开销
  2. 小额负载
  3. 客户数量很大(从100.000开始)
  4. 处理不稳定的网络连接
  5. 可扩展性,例如使用多个代理实例
  6. 客户端之间的P2P连接(可以通过涉及的服务器解决)
  7. 如果可能的话,Java,JavaScript和C ++中的开源实现
  8. MQTT对我来说是正确的方法还是我应该更好地看一些替代方案?请记住,我需要创建一个高度可扩展的服务。

2 个答案:

答案 0 :(得分:2)

如果您以正确的方式使用它,我认为除了6。之外的所有期望都可以通过MQTT来实现。您应该查看http://www.eclipse.org/paho/http://mosquitto.org/的OpenSource实现。

由于MQTT具有发布 - 订阅体系结构,其中每条消息都由消息代理(服务器)发送和分发,因此P2P可能是个问题。您可以为两个客户端之间的每个连接使用专用主题,但消息仍然必须通过消息代理。 作为一种解决方法,您可以通过MQTT协商客户端之间的P2P连接,然后将协商的通道与其他协议一起使用。

答案 1 :(得分:1)

正如莱克斯所说,使用MQTT,您拥有所需的所有功能,第6点是使用经纪人实现的。 MQTT的最大缺点是它本身不支持请求/回复模式(如HTTP或AMQP),但完全支持发布/订阅模式。 当然,如果您需要请求/回复,您需要在协议本身之上的层中定义正确的主题和有效负载,以在请求和响应之间创建匹配/关联逻辑。

保罗。