你好,游客 登录
背景:
阅读新闻

三分钟弄懂物联网流行协议——MQTT

[日期:2018-01-16] 来源:冰尘无极  作者: [字体: ]

  2017年最热门的技术莫过于:人工智能,区块链物联网。笔者今天就花三分钟给大家介绍一个物联网中非常的基础一个常用的流行协议,MQTT。

  

1_副本.jpg

 

  为什么使用MQTT 协议?

  MQTT(英语全称,Message Queue Telemetry Transport),中文翻译过来就是遥测传输协议:其主要提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),属于物联网(Internet of Thing)的一个传输协议。设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:

  特别适合于网络代价昂贵,带宽低、不可靠的环境。

  能在处理器和内存资源有限的嵌入式设备中运行。

  使用发布/订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合。

  使用 TCP/IP 提供网络连接。

  提供Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

  对消息中间件,估计大家不得不关心的就是消息的可靠性,也就是消息的发布服务质量,可喜的是,MQTT支持三种消息发布服务质量(QoS):

  “至多一次”(QoS==0),消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

  “至少一次”(QoS==1),确保消息到达,但消息重复可能会发生。

  “只有一次”(QoS==2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

  协议规范的版本

  MQTT的协议最新的三个版本是:3.1.1,3.1.0和5.0的协议。

  3.1.0的规范如下

  http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

  3.1.1的规范如下

  http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718029

  5.0 的规范如下

  http://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html

  其中5.0还只是一个提案(2017年7月13日发布的一个草稿版的提案),所以本篇文章暂时不涉及MQTT 5.0的协议,考虑到目前主流和成熟的MQTT协议的应用都是MQTT 3.1.1的协议,所以笔者还是以MQTT 3.1.1的协议为基准,给大家分享,只要这个会了,其他的自然不在话下。需要注意的是,MQTT 3.1.0和3.1.1 规范,还是有小部分的区别的。比如可变头部中,在3.1.0的规范中,其关键字是,“MQISdP”。

  支持MQTT协议消息中间件产品?

  目前有很多的MQTT消息中间件服务器,如下,都是MQTT协议的服务器端的实现。

  IBM Websphere

  MQ Telemetry

  IBM MessageSight

  Mosquitto

  Eclipse Paho

  emqttd Xively

  M2M.io

  webMethods

  Nirvana Messaging

  RabbitMQ

  Apache ActiveMQ

  Apache Apollo

  Moquette

  HiveMQ

  Mosca

  Litmus Automation Loop

  JoramMQ

  ThingMQ

  VerneMQ

  支持一对多的消息订阅

  MQTT协议,支持一对多的基于消息主题(Topic)的消息订阅,也就是一个MQTT的客户端,发送一条特定主题的消息,

  能同时支持多个订阅者同时订阅。

  如下图所示意,笔记本和手机都订阅了消息主题为temperature的消息,当温度传感器发布了temperature的消息(当前温度为21 C), 笔记本和手机都会受到温度传感器发布的温度。

 

  MQTT客户端的语言支持

  目前市面上的主流语言都支持。

  Java

  Javascript

  C/C++

  Python

  Ruby

  Objective-C

 

  ...

收藏 推荐 打印 | 录入:admin | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款