我想为大量设备实现服务。该服务应该能够在服务器和客户端之间发送/接收(小 - 最大 1kB)消息,也能够在设备和设备之间发送/接收 p2p 消息。
目前我正在考虑使用 MQTT 来实现这一点,因为它似乎是一种轻量级的低流量生成协议(protocol)。如本question所述XMPP 也可能是替代方案,但我不确定这是否能提供我需要的性能。
总而言之,我对该协议(protocol)有以下期望:
- 开销小
- 小负载
- 大量客户(从 100.000 开始)
- 处理不稳定的网络连接
- 可扩展性,例如通过使用多个代理实例
- 客户端之间的 P2P 连接(可以通过相关服务器解决)
- 如果可能,使用 Java、JavaScript 和 C++ 实现开源
MQTT 对我来说是正确的方法还是我应该考虑一些替代方案?另请记住,我需要创建高度可扩展的服务。
最佳答案
我认为如果您以正确的方式使用 MQTT,您的所有期望除了 6. 都可以实现。你应该看看http://www.eclipse.org/paho/和 http://mosquitto.org/用于开源实现。
由于 MQTT 具有发布-订阅架构,其中每条消息都发送到消息代理(服务器)并由其分发,因此 P2P 可能是一个问题。您可以为两个客户端之间的每个连接使用专用主题,但消息仍必须通过消息代理传递。 作为解决方法,您可以通过 MQTT 在客户端之间协商 P2P 连接,然后将协商的 channel 与其他协议(protocol)一起使用。
关于javascript - MQTT 作为集中式通信协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022007/