物联网消息传递,第1部分:介绍MQTT

让物联网设备通信需要低开销协议,比如MQTT

在物联网的世界里,除了东西之外,还有很多信息。当物联网设备产生信息时,它们会发送状态报告和环境测量等信息;当他们接收时,他们被告知要做什么(“打开那个阀门”或“发送您的状态”),或者他们正在存储来自其他设备的数据,或者,或者,或者……有无数的用例。此外,物联网设备的数量正以令人难以置信的速度增长,只有它们的合并消息流量增长得更快。除了物联网的爆炸式增长,在智能手机、平板电脑和电脑上运行的应用程序都需要相同类型的信息服务。

现在有很多方法来处理物联网消息,但最强大的一个,对于这个问题最有趣的,技术是消息代理。维基百科解释该消息代理是

...那转换来自发送者的正式消息传送协议向接收器的正式消息传送协议的消息的中介程序模块。消息代理是在软件应用程序通过交换正式定义的消息通信电信或计算机网络元件。消息代理是面向消息的中间件的一个积木...一个消息代理为消息验证,转换和路由的架构模式。它介导通信应用之中,最大限度地减少了相互了解的应用程序应该以能够交换信息,有效地实现解耦有相互的。

消息代理实现了发布-订阅(又称发布-订阅)模型,其中“订阅者”与一个或多个消息代理通信,以接收由“发布者”发送给代理的消息,并且,有些明显的是,订阅者也可以同时是发布者。

理论已经足够了!我们要看看最流行和最有效的消息代理协议之一,MQ遥测传输,或MQTT。请注意,原来的名称是现在很少使用,缩写​​已演变成作为协议的名称。为MQTT其他历史的名字是“SCADA协议”中,“MQ集成SCADA设备协议”(MQIsdp),和“的WebSphere MQTT”(WMQTT)。mqtt.org解释说这是MQTT:

...一个发布/订阅,非常简单,重量轻的消息传递协议,设计用于受限设备和低带宽,高等待时间或不可靠的网络。该设计原则是,同时还试图确保可靠性和某种程度的递送保证的最小化[原文如此]网络带宽和设备资源需求。这些原则也变成使新出现的“机器对机器”(M2M)的协议理想的或所连接的设备的“物联网”的世界,以及对于在其中带宽和电池功率是非常宝贵的移动应用。

换句话说,MQTT实现是极好的选择对端点设备,如树莓派,Arduinos,智能手机操作系统,以及几乎任何平台,可以从简单和低开销的消息中获益。

MQTT协议,作为书写的,在3.1.1版并已成为绿洲标准虽然有在市场上仍然有许多实现支持版本3.1.0。最新的规范有主要改进较规范,还规定,MQTT“经纪人”,现在应该叫MQTT“服务器”。

IANA保留了用于MQTT代理、呃……服务器的TCP/IP端口1883,以及用于SSL上的MQTT的端口8883(注意,使用SSL会引入额外的通信性能开销)。许多MQTT服务器实现也支持WebSockets。

MQTT协议有五个主要特点:

  • 基于主题的路由。在MQTT实现消息由主题层次如状态/建筑物/间/装置/传感器和订阅可以使用通配符这样,例如,所有对在加利福尼亚的所有建筑物所有实验室传感器数据的可订阅作为加利福尼亚/标记+/laboratory/# (+ is a single level wildcard while # matches all following lower levels; we’ll come back to topics later).
  • 支持Clean会话。当端点第一次连接到MQTT服务器并创建新的MQTT会话时,服务器和客户机都通过存储有关状态的数据来记录会话。此保存的会话状态允许代理在重新连接后恢复消息传递,以便可以传递由于断开连接而尚未发送或接收的消息。干净会话是一种选择。
  • 服务质量。MQTT的QoS支持使用户和发行商(统称为“客户”)选择三个级别的服务之一:
    • QoS的0,也被称为“发射后不管”,不从已经收到客户需要确认。这个水平潜在地牺牲交货可靠性(消息可能丢失),用于速度,从而更适合于可靠的连接。
    • 的QoS 1,“至少一次”传递,要求发送者(服务器或客户端适当的)来重试,如果没有确认超时窗口内接收。在质量差的连接的QoS 1重会影响性能和重复的消息是可能的。
    • 服务质量2,“正好一次”传递,就像是服务质量1,但随后状态交换,以确保重复的邮件不传递。额外的通信具有比1的QoS更高的潜在开销。
  • 保留信息。当发布者在主题中标记“保留”消息时,当端点首次订阅该主题时,该消息将首先被传递。每个主题只允许保留一条消息。请将此视为来自发布者的“欢迎”或“最后状态”消息。
  • 遗嘱的消息。当连接到服务器,发布者或订阅者可以为主题指定一个LWT消息,以便如果该端点不正常地断开连接,该主题的所有订阅者都将收到该消息。在适当的断开连接后,将处理LWT消息。

你现在可能会想,鉴于近期服务攻击的规模庞大的拒绝这是由15万增选物联网设备,怎么样安全僵尸网络交付?第五章最新标准讨论了安全性,但指出:

本章仅供参考,不规范。但是,强烈建议提供TLS [RFC5246]的服务器实现应该使用TCP端口8883 (IANA服务名称:secure-mqtt)。

这就是说,所有严重的和有用的MQTT实现包括认证服务。

有许多非常有用的、免费的、开源的MQTT平台,在下一部分中,我们将重点介绍一个在物联网系统中广泛使用的平台:Mosquitto

评论?想法吗?给我留言或评论,然后关注我推特脸谱网。并注册我的新通讯

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对最重要的话题发表评论。
有关:

版权所有©2016Raybet2

工资调查:结果是