[经验]物联⽹项⽬开发必读深度分析MQTT协议优缺点
物联⽹并不仅仅是⼀种⽹络,⽽是⼀个新的⽣态环境,它描述的本质是越来越多的使⽤物品通过⽹络连接在⼀起并可使⽤单个或者多个的终端设备对它们进⾏各种控制和使⽤—当然,⼯业上的物联⽹通常连接到的⽯⿎传感器或者其他数据采集仪器以及⾏为单位。思科曾经预测过,物联⽹市场的规模可能在14万亿美⾦左右,前景极为光明。
众所周知,物联⽹是在传统互联⽹基础上延伸和扩展⽽出的概念,⽤户端从传统的计算机延伸和扩展到了任何物品与物品之间,⽽物品则通过各种传感器进⾏信息采集,然后通过计算设备进⾏⽹络信息交换与。但是当前移动互联⽹正处于起步阶段,很多时候⽆法提供可靠的⽹络保障,因此,IBM主导并提出了MQTT协议,致⼒于解决这⼀⽅⾯的问题。
什么是MQTT协议?
MQTT是⼀个由IBM主导开发的物联⽹传输协议,它被设计⽤于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的⽹络环境中的物联⽹设备提供可靠的⽹络服务。它的核⼼设计思想是开源、可靠、轻巧、简单,具有以下主要的⼏项特性:
1.  ⾮常⼩的通信开销(最⼩的消息⼤⼩为 2 字节);
2.  ⽀持各种流⾏编程语⾔(包括C,Java,Ruby,Python 等等)且易于使⽤的客户端;
3.  ⽀持发布 / 预定模型,简化应⽤程序的开发;
4.  提供三种不同消息传递等级,让消息能按需到达⽬的地,适应在不稳定⼯作的⽹络传输需求
对于传统的HTTP和MQ协议,MQTT的优势在哪⾥呢?这有⼀张表格能清楚的展⽰这⼀点
低协议开销
MQTT 的独特之处在于,它的每消息标题可以短⾄ 2 个字节。MQ 和 HTTP 都拥有⾼得多的每消息开销。对于 HTTP,为每个新请求消息重新建⽴ HTTP 连接会导致重⼤的开销。MQ 和 MQTT 所使⽤的永久连接显著减少了这⼀开销。
对不稳定⽹络的容忍
MQTT 和 MQ 能够从断开等故障中恢复,⽽且没有进⼀步的代码需求。但是,HTTP ⽆法原⽣地实现此⽬的,需要客户端重试编码,这可能增加幂等性问题。低功耗
MQTT 是专门针对低功耗⽬标⽽设计的。HTTP 的设计没有考虑此因素,因此增加了功耗。
数百万个连接的客户端
在 HTTP 堆栈上,维护数百万个并发连接,需要做许多的⼯作来提供⽀持。尽管可以实现此⽀持,但⼤多数商业产品都为处理这⼀数量级的永久连接⽽进⾏了优化。IBM 提供了 IBM MessageSight,这是⼀个单机架装载服务器,经过测试能处理多达 100 万个通过 MQTT 并发连接的设备。相反,MQ 不是为⼤量并发客户端⽽设计的。
开源mqtt服务器推送通知
您需要能够及时地将通知传递给客户。为此,必须采⽤某种定期轮询或推送⽅法;从电池、系统负载和带宽⾓度讲,推送是最佳解决⽅案。
我们的企业可能需要在没有第三⽅中介的情况下发送敏感的信息。这降低了特定于操作系统的解决⽅案(⽐如 Apple iOS、Google Play 通知)作为主要传输机制的价值。
HTTP 只允许使⽤⼀种称为COMET 的⽅法,使⽤持久的 HTTP 请求来执⾏推送。从客户端和服务器的⾓度讲,此⽅法都很昂贵。MQ 和 MQTT 都⽀持推送,这是它们的⼀个基本特性。
客户端平台差异
HTTP 和 MQTT 客户端都已在⼤量平台上实现。MQTT 的简单性有助于以极少的精⼒在额外的客户端上实现 MQTT。
防⽕墙容错
⼀些企业防⽕墙将出站连接限制到⼀些已定义的端⼝。这些端⼝通常被限制为 HTTP(80 端⼝)、HTTPS(443 端⼝)等。HTTP 显然可以在这些情况下运⾏。MQTT 可在⼀个 WebSockets 连接中,显⽰为⼀个 HTTP 升级请求,从⽽允许在这些情况下运⾏。MQ 不允许采⽤这种模式。
事实上,MQTT的应⽤⾮常之⼴泛,⼏乎现在随便⼀家⼤型的硬件、互联⽹企业,都可以到MQTT的⾝影,例如Facebook、BP、alibaba、baidu等等MQTT协议的缺陷以及MQTT+概念的提出
由于MQTT本⾝的各项技术优势,越来越多的企业倾向于选⽤MQTT作为物联⽹产品通讯的标准协议,也因此,⼯程师们渐渐发现MQTT协议要想⼤规模商⽤,也有⼀些有待完善的功能。⽐如:
——没有齐备的SDK,不同的异构终端,需要有对应的与MQTT服务器通信的软件SDK包,⽐如MCU、Linux、Android、IOS、WEB等之间要实现互联互通必
然需要不同的SDK包
——不⽀持File和AV,有些应⽤场景,需要传输的信息可能不仅仅限于指令,⽐如声⾳信号和视频信号,这些需要通过File和AV来实现通信。
——不⽀持与第三⽅HTTP的集成,虽然MQTT协议优于普通的HTTP协议,但是基于传统的HTTP协议的WEB服务器仍然占主流市场,那么这些服务器要实现与MQTT协议的互联互通,以降低升级成本也尤为关键。
——不⽀持负载均衡,为防⽌⾼并发和恶意攻击,负载均衡服务器也必不可少。
—不⽀持⽤户管理接⼝,⽤户在进⾏设备的⾏为数据分析的时候,显得尤为重要,这⼜是⼯业4.0、⼤数据时代的必然需求。
——不⽀持离线消息,弥补设备离线以后,MQTT服务器对设备的控制信息丢失的问题。
——不⽀持点对点通信,采⽤标准的MQTT协议,理论上可以通过相互订阅的⽅式实现点对点通信,但是逻辑相对复杂,并且对设备的安全性⽅⾯存在担忧。当设备B和设备C在同⼀主题的情况下,设备A⽆法知道是设备B还是设备C发送的消息,也有可能消息被设备D窃听。
——不⽀持通信和管理,实现了对组成员的管理,组成员之间能互通消息,这在⼀个设备被多⼈控制,或者多个设备被⼀⼈控制的这种场景下,尤为有⽤。
这些问题阻碍了MQTT技术在国内市场的进⼀步发展,毕竟对于单个的公司或者⼯程师⽽⾔,想要解决它们需要耗费⼤量的资源和时间,并且稳定性的验证也需要⼀个较长的时间周期。但近期,国内的⼀⽀物联⽹开发团队经过两年艰苦的研发和商业化验证,在MQTT协议的基础上,正式提出了⼀套新的解决⽅案,称之为ET-iLink MQTT+物联⽹解决⽅案,团队同步公布了其中的⼀些细节和技术指标,引起了业界的关注。
MQTT+连接云是什么?
ET-iLink MQTT+物联⽹解决⽅案是⼀套综合性的⽅案,下图是使⽤MQTT+作为设备接⼊协议的整体解决⽅案框图。
设备使⽤MQTT+客户端可以在特定的主题上发布消息,也可以通过订阅特定的主题以接收其他设备或者⽤户发布的消息,从⽽实现M2M,M2P,P2M的通信。云⽹关LB Sever负责设备的接⼊,协议适配,消息转发等功能,如果要⽀持海量设备的接⼊,LB Sever集是必须的。
设备管理负责设备接⼊认证,设备与⽤户绑定,操作授权等相关的功能。
账号管理负责⽤户账号安全认证,授权认证等相关的功能,同时也⽀持第三⽅账号安全认证。
云服务负责设备业务逻辑。不同的设备⼚商都有⼀套⾃⼰的业务逻辑和服务,这种服务可以和容易的运⾏在云端提供的容器中,使⽤基于容器的微服务使得应⽤程序能够更快地进⾏创建,并且更易于维护,同时⼜能够得到更⾼的质量。⽽数据的存储和分析使⽤云平台提供的通⽤的存储服务和⼤数据分析引擎。
⽤户只要注册账号,绑定设备,就可以通过 APP,或者web等终端轻松查看设备信息,与设备进⾏交互操作。
此解决⽅案具有的优势有:
·移动设备
能在 8bit 位处理器上很好的运⾏ C /JavaScript/Java 的 client 库分别只有 30/75/100KB
在移动设备上耗电率低,⼤约只需要 HTTP 的⼀半
·很好的适应各种复杂⽹络,特别是受限⽹络
预期并适应频繁的⽹络中断,能应对低速、低质量的⽹络
压缩优化过后的协议,可以有效降低⽹络流量,从⽽节约⽹络成本
完成同样的数据通信,MQTT只需要 HTTP 约 1/4 得数据流量
·发布 - 订阅的消息通信协议,允许⼀条消息只发布⼀次,便可被多个消费端(应⽤程序 / 设备)所接收
·能够实现设备与设备之间的点对点的双向通信。
·对HTTP接⼝的兼容,能实现系统间松耦合,简化开发,⽅便扩展,整合。
·提供灵活便捷的系统整合能⼒
使⽤微服务+docker的⽅式,快速部署⾼效运⾏云端服务
提供可靠的设备管理和账号管理体系,您只需要关注核⼼业务
提供通⽤的数据存储和数据分析服务
提供与第三⽅云平台的对接功能
提供协议适配功能,客户端可以使⽤多种通信协议与设备进⾏通信。
·提供丰富的安全性
使⽤ SSL 提供的认证和加密来保证传输安全性
采⽤账号安全认证+设备安全认证结合的⽅式保证内容安全
·强⼤的性能提⾼系统的⾼可靠性
⾼连接数下系统低计算资源使⽤
⾼连接数下系统⾼信息处理速度
·提供多种消息服务质量,满⾜不同场景需求
0 :消息最多被传递⼀次,⽐如⼀般类⼴告,通知
1 :消息会被传递但可能会重复传递,⽐如账户余额通知
2 :消息保证传递且仅有⼀次传递,⽐如交易⽀付批复通知
硬件+软件+私有云平台开发套件/免费的公有云平台⽀持
⼩e MQTT系列全功能是为了帮助⼯程师们快速实现物联⽹项⽬的开发⽽提供⼀款配套开发板。考虑到实际的项⽬应⽤环境,它有两个不同的版本:
⼩e1Wi-Fi全功能开发板采⽤ESP8266 WiFi SOC  ,采⽤Free RTOS实时操作系统,主频可达160MHZ。⽀持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈,具有丰富的硬件接⼝,并配备OLED屏,温湿度传感器,⼤⽓压传感器,RGB,IR等,利⽤进⾏远程控制与语⾳互动,代码开源。
⼩e2 2G透明串⼝开发板,是利⽤SIM卡和运营商的GPRS⽹络提供⽆线数据传输功能的开发板,通过此开发板的2G模块,可以提供各种设备(PC、⼿机、服务器)到模块间的透明的数据交互。
整套的解决⽅案包含配套的硬件开发板、APP/DEMO/免费的公有云⽀持/企业级私有云服务套机/7⼤平台SDK包/上百个技术⽂档等等⼀系列内容,⽀持⽆缝对接现有产品的物联⽹升级,现正在聚丰平台上进⾏众筹,有兴趣的⼯程师不妨去了解⼀下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。