MQTT具体实践
背景
百度开放云物联网(IoT)服务是一个全托管的云服务,帮助建立设备与云端之间安全可靠的双向连接,以支撑各种类型的物联网项目,而无需考虑服务的运维。
使用物联网服务提供如下好处:
从设备到云端以及从云端到设备可靠地进行大规模消息传输。
对设备认证与权限管理,并保证数据安全传输。
支持多种语言开发,兼容主流硬件设备。
与大数据服务无缝对接,以数据分析驱动业务进步。
为了更好地支持设备与云端之间的互联互通,百度开放云物联网服务原生支持MQTT(Message Queuing Telemetry Transport)协议。MQTT是基于二进制消息的发布/订阅编程模式的消息协议,最早由IBM提出的,如今已经成为OASIS规范。与HTTP、CoAP、XMPP等协议相比,MQTT协议有以下的优势:
MQTT基于TCP,在反控设备的时候比CoAP等基于UDP的协议更可靠,比如使用3G通讯的时候需要专门实现CoAP over TCP,否则反控很不稳定。
MQTT异步Pub/Sub实现,好比发个短信,无需等待对方确认便可以继续,而不像HTTP、CoAP那样必须等待对方应答才能返回的同步模式。
MQTT为物联网提供了许多体贴的设计,比如QoS,比如“遗言”等设计。
MQTT是二进制格式,比XMPP更轻量级。
总之,通过支持轻量级可扩展的MQTT,百度开放云物联网服务非常适合需要低功耗和网络带宽有限的物联网场景,国外的公有云供应商如AWS、Azure、Bluemix等都以各种形式加入了对MQTT的支持。