1、协议更标准
MQTT是标准的RFC协议,相比于私有协议而言更加标准。好处在于:
(1)协议非常完整,能够马上用于生产。各端实现同一套协议之后,就能进行通信;私有协议还需要进行大量的验证,看有无缺陷或欠考虑的地方等。
(2)协议的标准化带来大量的开源组件,降低开发难度。随着物联网+5G生态越来越好,开源组件越来越多,可以减少重复编码量。
(3)标准协议利于第三方接入。当第三方设备、平台想要对接的时候,拿出一套标准的MQTT协议拍在他们脸上,再也没人有理由要求改接口了。
2、MQTT协议制定好了很多利于物联网的功能
当然TCP自己开发协议也能做到,但MQTT都已经把功能做好了,自己开发协议反而增加难度。有利的功能包括:
(1)心跳机制。不需要自己做业务协议层的心跳了。
(2)遗嘱消息。这对于经常掉线的物联网设备而言非常有用。
(3)QoS质量等级+离线消息。持久会话离线的消息也能接收到,对于网络不稳定但要求必须送达的物联网场景很有用。
(4)异步机制。MQTT将消息以QoS1/2发送出去后,设备端就不需要再管了,一切由云端负责失败重传。
(5)订阅发布机制。一次发布,多个客户端订阅,这对于M2M场景很省电、省流量。
(6)主题和安全。可以用主题来方便地控制客户端权限。
3、理解数据内容,用数据产生价值
IoT目前主流设计有两部分:
(1)设备影子价值
设备影子包含了设备的状态,不用一个一个透传查询设备,直接在云端访问设备影子就能够得到当前所有设备的状态数据,这蕴含着巨大的利益,比如统计数据用于引导开发新产品和功能、统计数据用于修复bug等等。
(2)规则引擎价值
AWS、阿里云、腾讯云、百度云,都叫规则引擎(Rule Engine)。由于MQTT细分了具体的主题,当业务以主题区别的时候,直接将对应主题的数据通过规则引擎配置的规则自动分发给其他的数据接收者,这些都是TCP透传这种云不理解业务数据内容做不到的。
虽然MQTT在很多方面具有一定优势,但是选择MQTT还是TCP长连接透传还是需要看具体的业务场景,选择最合适的才是最重要的。