作为物联网世界玩家,我们知道你想通过设备快速传递信息。你希望一直保持更新,从而获得最新的实时信息。然而,我们也知道要找到合适的技术来实现此愿望是十分困难的。幸运的是,MQTT或许对你有所帮助。
MQTT指消息队列遥测传输,是物联网的机器对机器(M2M,machine-to-machine)连接协议。MQTT是一个轻量级的发布和订阅协议,通过它可以在低带宽环境中发送和接收机器对机器的遥测消息。例如,通过卫星链路与broker沟通或在家庭自动化和一些小型设备场景中,MQTT是非常适用的。因为它体积小,功耗低,数据包最小化,并能有效地将信息分发到一个或多个接收者,因此MQTT也是移动应用的理想选择。
MQTT最初由Andy Stanford-Clark(IBM)和Arlen Nipper(Arcom)于1999年设计,用于通过卫星连接石油管道遥测系统。尽管MQTT是在很久之前创建的,目的仅在特定场景下进行有限使用,但它正在迅速成为物联网(Internet of Things)的主要协议之一,其中包含了大量的应用程序。它一开始只是一个专有协议,但这些年来对它的需求日益增大,因此它在2010年发布了免税版,并在2014年成为OASIS标准。
自从其标准化以来,该协议一直很容易适应各种物联网设备、平台和操作系统。Microsoft、Azure等企业云平台通过MQTT公开其IoT PaaS,而那些没有使用MQTT的物联网应用开发者都无法取得更进一步的突破。
首先是发布和订阅机制。在一个发布和订阅系统中,一个设备可以在一个主题上发布消息,或者它可以订阅一个特定的主题来接收消息。当有更新时,消息会自动推送给相应主题的订阅者。
Figure 2: MQTT流量
Messages是在设备之间交换的信息,是一个命令或一组数据。
另一个重要的概念是topics。它是为传入信息注册感兴趣的方式,或者指定要在何处发布消息的方式。
主题用字符串表示,用正斜杠隔开。每一个正斜杠表示一个主题级别。
MQTT clients就是我们所说的订阅了一个或多个主题的设备(如果没有选择一个特定的主题,将会看到它们全部)。当其他客户端在这些主题中发布东西时,它们要以信息的形式接收数据包。对于MQTT 3.1.1版本,Eclipse Paho项目提供了几乎所有编程语言和主要操作系统Linux、Windows、Mac的客户端软件。
MQTT client的对应部MQTT broker。Broker是任何发布和订阅协议的核心。根据不同的实现方式,一个broker可以处理多达数千个同时连接的MQTT client。Broker负责接收和过滤所有信息,确定每条信息的订阅者,并将信息发送给这些订阅的客户端。Broker还持有所有持续存在的客户端的会话,包括订阅和错过的消息。
MQTT Security 是指其支持各种认证和数据安全机制的能力。需要注意的是,这些安全机制是在MQTT broker上配置的,而客户端则要遵守现有的机制。
MQTT使用发布和订阅模式,将有关各方相互连接起来。它通过将该模式与接收和订阅模式解耦来实现这一点。发布者向一个中心主题发送消息,该主题有多个订阅者等待接收消息。发布者和订阅者是自主的,这意味着他们不需要知道对方的存在。
尽管有缺点,MQTT仍然是物联网项目中最受欢迎的协议之一,因为使用它的好处远远超过了缺点。例如,RAKwireless通过使用内置的MQTT桥接器增强了他们的LoRaWAN网关的能力。商业网关,如RAK7249和RAK7258具有带有MQTT桥接器的嵌入式LoRa网络和应用服务器。
这将Semtech Packet-forwarder UDP协议抽象为MQTT上的JSON,直接安全地将数据传输到应用程序。这正在成为其他制造商的一种做法,并不限于LoRaWAN,也包括其他物联网技术。
最后,MQTT有很多优势,因此我们相信,在未来的几年里,通过更多自然的采用和改进它会变得更加主流。
全部0条评论
快来发表一下你的评论吧 !