MQTT的发展历程与应用场景

个人简介 金千里,IBM消息传递产品和解决方案的高级开发经理,在企业消息传递基础构架,物联网,移动通讯和数据转换以及SOA业务集成领域拥有超过十年的专业知识和经验。 其经验领域包括丰富的银行、零售等行业企业消息传递基础构架开发; 移动消息传递解决方案、移动推送和企业即时消息平台开发;物联网,云,设备联接解决方案开发,以及成熟的管理软件和解决方案,如敏捷 和 Dev Opts的开发经验。他还拥有3项专利和20余项技术出版物和文章。

OIOT,即开放物联网技术大会,是OpenIOT的简称。以智能硬件为代表的物联网势不可挡,也引领着新一波的创业浪潮。作为一家以报道技术前沿趋势为重的社区媒体,InfoQ中国也见证并参与着这一历程。在12月的这次峰会上,我们将联合在物联网领域深有积累的公司和个人,基于他们的产品和技术,分享自己的真知灼见,以期共同推进物联网在国内的发展。通过深入的技术层面交流,本次大会也期望能够有更多的务实产出,让物联网技术更加开放。

   

1. 感谢金经理参加这次采访,我们知道MQTT是IBM在物联网方面的一个标准协议,已经被国际标准化组织所采用,那么您能先给我们介绍一下,MQTT到底是什么?

金千里:MQTT其实是一个缩写,中文翻译过来呢,就是消息队列遥测传输协议,在1999年物联网可能刚刚起步的时候,IBM跟一些合作伙伴一起分析了一些我们在互联网上传输数据的特征,专门针对物联网的一些应用场景来制订的一个异步的轻量级双向消息传输协议,它主要是为了解决物联化的设备,或者物联网上使用到的设备的互相通信的问题,以及这些设备与后端应用系统之间通信的问题。

   

2. 应该说IBM参与制订的相关的协议也是挺多的,包括工作流方面有BPMN,这个IBM也参与过,那么为什么不对已有的协议进行修改,而去创建一种新的协议呢?

金千里:因为在物联网的应用场景当中有一个非常大的挑战,就是智能设备,或者说是物联网的传感器设备的种类非常多,并且它传输的网络也非常多,换句话说,各种网络的有效范围,带宽,以及网络特性都不一样,这样就会给我们真正物联网场景上,具体要做的开发,运维,带来比较大的挑战,并且往往会导致成本也非常的高昂。在这样的情况下,IBM和合作伙伴一起希望用一种统一,或者说是开放而统一的形式,来适用于各种类型的网络,并且能够使得各种设备都有可能以一种统一的形式能够连接在一起。物联网协议发展到今天,也已经有15年了,刚才你也讲到,刚刚到去年,它才被国际标准化组织定义为物联网的推荐协议,我们也特别希望这个协议能够在物联网场景,或者说在不同的网络与设备接入的时候给大家提供一个很好的选择。

   

3. 在传输协议方面,应用在物联网上的还有ATTP,TCM还有我们的MQTT,那么相对于这些协议,MQTT它的优势在哪?

金千里:首先从网络层面来讲,由于它从定制的一开始就是为物联网这个场景所特别经过了一些优化的,所以在各个方面,包括网络的可达性,消息的连通性,以及使用的过程中的能耗等等方面,都是会有优势的。具体有几个方面,一是它本身是特别轻量级的,我们知道嵌入式设备的计算能力,往往会比我们传统意义上的像PC要弱很多,那么在一个八位的系统当中,可能我只要30K的空间,就能把相应的MQTT的客户端给跑起来,就可以传输信息了。第二点就是它本身是为预定义不稳定的网络而设计的一个传输协议。因为我们通常意义上的传输协议都是基于稳定网络的传输的,会专门为了这种稳定的网络去做一些优化,以使传输的效率最高,但是MQTT是正好相反过来,它是预定义为不稳定的网络,这个网络会频繁中断,在这样的情况下设计一个协议,它的最小的传输字节只有两个,以此来保证在非常恶劣的网络条件下,仍然有很好的消息可达率。第三部分是它的消息的交互模式跟传统意义上不太一样,它采用了发布和订阅的模式。这种模式有什么好处呢?就是它除了可以做一对一的消息传输以外也可以做一对多的消息传输,也就是说当数据源发布一条消息的时候,可以有多个接收端同时能收到这个消息,这样对于很多的物联网场景来说,就会变得比较灵活。第四就是安全性,虽然它是一个非常轻量级的协议,但是它在客户端到服务器端的JAAS认证,包括在通讯传输层的SSL的加密过程当中,是完全能支持这些安全的特性的,以保证有一些场景如果需要安全的数据传输的话,它也能提供非常好的支持。最后一部分就是它提供了多种消息质量的服务,也就是说可以根据场景定义消息或者数据,是最多一次传输,还是最少一次传输,还是只保证有一次传输。那各种不同类型的消息服务有不同的网络开销,在每一个场景下面,MQTT传输和传统的别的通讯方式的传输对比起来,它的能耗一般只是1/4,或者更低。

   

4. 从开发的角度讲,一个协议诞生之后,它的学习成本是相对比较高的,为了方便开发人员去入手,我们有没有开发相关的工具,或者集成开发环境去帮助开发人员更快的用我们的协议开发产品了?或者应用到我们的产品里?

金千里:是有的,因为MQTT这个协议已经经过了15年的发展,大家也可以看到,最新的版本是3.1和3.1.1了,也就是它在这个过程当中已经经过了大量的优化,以及落地实际案例的考验。MQTT它有一个网站是MQTT.org.,这个网站包含了绝大多数的MQTT相关的资源。这其中就包含了几部分内容,一部分内容是MQTT协议本身,它是开源的,第二部分,就是目前它有80多个客户端,适用于不同类型的设备平台,对于某些比较热的类型的平台,它甚至有超过一种的实现,都是开源的。它也有一些比客户端更大一层的,更贴近于解决方案的一些资产,代码,可以从网站下载到开发人员的开发板上,或者硬件设备上尝试MQTT的链接,这些都是有。

   

5. 也就是我们的开发相对是比较容易的,您刚才提到了MQTT实际上经过了一个很长的发展,中间有3.1,现在都是3.1.1了,可以给大家介绍一下主要的发展历程,中间各个协议在制订过程中,都遇到了一些什么样的比较难解决的问题?

金千里:其实MQTT协议从1999年刚刚诞生的时候,只是IBM和几个合作伙伴一起来做事情,大概经过了5年以后,到了2005年,随着互联网的发展,物联网才真正更多的进入了大家的视野。到04年,05年的时候,我们认为MQTT这个协议,可能更多的要以一种更开放的态度来迎接大家的考验,同时也有更大规模的推广,所以在那个时候开放了整个MQTT协议本身的内容,也开放了一个论坛让大家能够参与进来,提供各自的意见,一起帮助这个协议往前。大概又过了五到六年的时间,在11年的时候,我们觉得这个开放程度还不够,我们的故事可能要讲的更公开,更开放一点,所以在那个时间点我们就把手里的所有已经做过的MQTT客户端,所有的内容全部开源了。在这个过程当中,您刚才问到了,会有什么样的一些技术上的挑战,最主要的还是刚才讲到的就是对于这个协议的在不停的做修正,这些修正最最重要的因素,就是保证它在带宽非常低而且网络特别不稳定的情况下,怎么样能提高它的连接能力,以及提高它数据传输的能力。第二部分,就是对于物联网这样的场景来说,是不是对协议能有进一步的优化。我可以举个例子,在目前新版MQTT协议里边,有一个功能叫做遗嘱和遗愿,大家听这个名字就觉得还是蛮新鲜的,因为在IT世界里面我们很少有这样一个概念,但是它理解起来也蛮直观的,在协议里面加入这个功能,主要就是因为我们是一个物联化的世界,我们所有设备是成千上万的,并且很多的设备工作在非常不稳定的环境当中,甚至有很多可能都工作在野外环境当中,所以一个设备它连不上网络,或者连不上背后的系统是一个常态,遗嘱和遗愿的机制就是为了保证当一个设备连不上的时候,服务器端有一个专门的机制能够保证马上能够收到消息,这个设备出了什么状况,从而可以有非常快的反馈,这个反馈可以是人工的,也可以是系统自动做出的,对某一个结点做出一些补偿。这些内容,其实就是这个协议适应物联网场景所做出的一些特别挑战。

   

6. 一个协议它的多版本一般来说,并不是说用最新的版本就一定好,要根据自己的场景选择合适的产本,那我们MQTT是不是也需要针对这些不同的场景去选择版本呢?

金千里:其实是这样子,目前来说比较稳定,或者说大家用的比较多的还是3.1和3.1.1这两个版本。这两个版本的区别不是特别大,但是今年OASIS认证为国际标准协议的3.1.1版本,相对来说可能更稳定一些,使用的人也比较多,所以我们也推荐使用3.1.1的版本。除此以外,MQTT还有一个比较大的和其他协议不太一样的区别在于,通常意义上,我们在网络上讲一个协议,它基本上都是基于TCP/IP这样的网络来做得,MQTT的标准协议也是基于TCPIP的,但是MQTT同时也包含了一系列的扩展协议,以适应扩展的网络,比方说在UDP网络里边它有一个扩展协议叫MQTT-SN,它有自己的一条支线,把UDP网络当中的设备也可以接入,比方说在一些电力线载波的网络PLC的里边,它也有一些自己的扩展协议,比如说MQTT-P。之所以这样设计,就是为了在非标准的TCP/IP网络当中的设备也能通过这样一种统一的方式能把它都接入到物联网的场景中来。

   

7. 刚才你也有提到,我们最近已经把我们内部的一些基于MQTT的工具也开源出来了,现在市场上有哪些产品,是基于我们这些开放的工具,或者说协议做的?

金千里:MQTT这个协议的适用的范围还是特别广泛的,从最传统的物联网,就是把传感器的数据采集上来,那是最经典的物联网场景,一直到现在比较火的,经常被大家提到的,比方说像车联网,像智能家居,智慧的能源,智慧的水利,等等的,都是适用于MQTT的应用场景的。从IBM角度来讲,我们也和很多合作伙伴在很多领域进行过一些合作,也有很多落地的案例。我可以举几个例子,比方说在传统的传感器领域,IBM和万创公司有比较紧密的合作,这是在全球范围内的一个合作,万创是一个非常重要的各类传感器的生产厂商,我们和他们合作也是希望在工业领域能够更多的推广MQTT协议。另外举一个关于车联网的案例,IBM跟福特是全球战略合作伙伴,在福特新出品的几款车上,都安装了一些基于MQTT的车载设备,在先装市场上,IBM和福特一起来提供这样的一个汽车车载信息服务。包括在国内我们跟北大千方的全国货运管理平台一起合作,来构建生态系统,这部分可能属于车联网的后装市场的一个基于位置信息的服务,使用MQTT来做消息流的传输。除此以外,MQTT包括物联网和移动方面也有很多的应用场景,比如我们知道Facebook就是用MQTT来做他所有的移动应用的消息传输。在国内我们也在各个行业,包括像电信,交通等等行业都有企业的即时通讯系统的落地的案例,这些企业即时通讯的案例也是基于MQTT的技术或者平台来做的。这里面帮助这些企业主要是来做像移动办公,消息推送,还有在线客服等等的一些服务,帮助他们在移动端打造垂直的生态系统,做一个技术的支撑。

你可能感兴趣的:(MQTT的发展历程与应用场景)