首页 > PHP资讯 > Python培训 > 玩转物联网之MQTT

玩转物联网之MQTT

Python培训

物联网概述

物联网——即Internet-of-Things,其实这个概念由来已久,简单来讲,物联网是物与物、人与物之间的信息传递与控制简称。它和能源、电子信息、医疗、交通、零售、物流、工业制造等行业息息相关。要实现物联网,首先需要将具备信息感知和通信能力的设备嵌入到我们关心的物品中,使其能连接到因特网或企业网络之上,实现互联互通。之后,互通的物品不仅要通过设备采集信息、实现智能的感知,更要结合一切先进的信息处理、数据挖掘等手段,与业务应用相结合,从后台到前端设备,实现智能的控制。一句话来理解物联网就是把所有物品通过信息传感设备与互联网连接起来,以实现智能化识别和管理。


MQTT简介

MQTT是一个由IBM开发的物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带 宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设 备,做了特殊的优化,使得其能适应各种物联网应用场景。

MQTT 既有完全高级版可以在 TCP/IP 上运行,也有简化版 MQTT-SN 用于非 IP 设备。其发布/订阅模式能够在让拓扑结构进行扩展的同时保留实时的特性以及服务质量的可配置性。

MQTT的设计思想是开源、可靠、轻巧、简单,MQTT的传输格式非常精小,最小的数据包只有2个比特,且无应用消息头。MQTT可以保证消息的可 靠性,它包括三种不同的服务质量(最多只传一次、最少被传一次、一次且只传一次),如果客户端意外掉线,可以使用“遗愿”发布一条消息,同时支持持久订 阅。MQTT在物联网应用中的优势有:

 

  • 可靠传输。MQTT可以保证消息可靠安全的传输,并可以与企业应用简易集成。
  • 消息推送。支持消息实时通知、丰富的推送内容、灵活的Pub-Sub以及消息存储和过滤。
  • 低带宽、低耗能、低成本。占用移动应用程序带宽小,并且带宽利用率高,耗电量较少。

 

物联网接入的挑战

当前物联网领域的消息传输依采用单一的实施规范,它是在互联网基础上的延伸和扩展的网络,用户端从传统的计算机延伸和扩展到了任何物品与物品之间,物品通过嵌入的传感器进行信息采集,然后通过小型计算设备进行网络信息交换与通信。然而当前移动互联网正处于起步阶段,物联网中的数据传输会面临很多问题,比如在网络不稳定的情况下,如何保证数据的传输没有问题,如何保证数据不被重复发送,连接断开后如何进行重连。总体来说,物联网的接入会面临以下几个方面的挑战:

 

  • 设备、传感器。物联网接入对终端采集和控制设备要求高,且终端的改造以及网络费用成本也比较高。另外,其对终端的能耗要求也比较高。
  • 通信协议。设备往往不具备较高的计算能力和存储空间,因此很难支持诸如 HTTP、SSL 和 XML 这样的传输协议,它需要一套简单高效的传输协议以满足通信需求。
  • 网络。现有的网络传输贷款参差不齐,传输网络不稳定。
  • 信息安全。如何保证信息传输的安全以及业务层身份鉴别。

 

基于物联网的MQTT技术则恰好可以很好地弥补这一方面的缺陷,在云计算和移动设备之间架起一道桥梁,在低带宽和不稳定的网络环境中提供可靠的网络服务。

对于信息安全,并不仅仅是信息传输安全,物联网时代的安全是物理安全、信息采集安全、信息传输安全和信息处理安全的综合,物联网时代还需要一个强大的云以完成信息传输安全,信息处理安全以及信息的存储,分析等,当然您还需要一个强大的服务管理系统来管理您为了处理特定的业务逻辑而运行的服务。

使用MQTT连接云

设备使用MQTT客户端可以在特定的主题上发布消息,也可以通过订阅特定的主题以接收其他设备或者用户发布的消息,从而实现M2M,M2P,P2M的通信。

下图是使用MQTT作为设备接入协议的整体解决方案。

云网关gateway负责设备的接入,协议适配,消息转发等功能,如果要支持海量设备的接入,gateway集群是必须的。

设备管理负责设备接入认证,设备与用户绑定,操作授权等相关的功能。

账号管理负责用户账号安全认证,授权认证等相关的功能,同时也支持第三方账号安全认证。

云服务负责设备业务逻辑。不同的设备厂商都有一套自己的业务逻辑和服务,这种服务可以和容易的运行在云端提供的容器中,使用基于容器的微服务使得应用程序能够更快地进行创建,并且更易于维护,同时 又能够得到更高的质量。而数据的存储和分析使用云平台提供的通用的存储服务和大数据分析引擎。

用户只要注册账号,绑定设备,就可以通过手机APP,微信或者web等终端轻松查看设备信息,与设备进行交互操作。

此解决方案具有的优势有:

·  移动设备

   能在 8bit 位处理器上很好的运行 C /JavaScript/Java 的 client 库分别只有 30/75/100KB

   在移动设备上耗电率低,大约只需要 HTTP 的一半

·  很好的适应各种复杂网络,特别是受限网络

   预期并适应频繁的网络中断,能应对低速、低质量的网络

   压缩优化过后的协议,可以有效降低网络流量,从而节约网络成本

   完成同样的数据通信,MQTT 只需要 HTTP 约 1/4 得数据流量

·  发布 - 订阅的消息通信协议,允许一条消息只发布一次,便可被多个消费端(应用程序 / 设备)所接收

   实现系统间松耦合,简化开发,方便扩展,整合。

·  提供灵活便捷的系统整合能力

   使用微服务+docker的方式,快速部署高效运行云端服务

   提供可靠的设备管理和账号管理体系,您只需要关注核心业务

   提供通用的数据存储和数据分析服务

   提供与第三方云平台的对接功能

   提供协议适配功能,客户端可以使用多种通信协议与设备进行通信。

·  提供丰富的安全性

   使用 SSL 提供的认证和加密来保证传输安全性

   采用账号安全认证+设备安全认证结合的方式保证内容安全

·  强大的性能提高系统的高可靠性

   高连接数下系统低计算资源使用

   高连接数下系统高信息处理速度

·  提供多种消息服务质量,满足不同场景需求

   0 :消息最多被传递一次,比如一般类广告,通知

   1 :消息会被传递但可能会重复传递,比如账户余额通知

   2 :消息保证传递且仅有一次传递,比如交易支付批复通知

结束语

人类正走向“物联网”时代,但是这个过程可能需要很长的时间。毫无疑问,如果“物联网”时代来临,人们的日常生活将发生翻天覆地的变化。不管物联网如何发展,在未来几年,相信MQTT的应用会越来越广。

作者:贺大伟,AbleCloud云平台高级开发工程师。曾在大唐负责通信领域LTE协议一致性仪表软件开发,负责高性能10000兆安网闸捕包平台开发和参与网络分析系统架构设计开发。2014年加入AbleCloud,主要负责AbleCloud云平台设备接入网关和OTA升级分布式开发部署维护等工作,对分布式,高并发充满兴趣。


本文由欣才IT学院整理发布,未经许可,禁止转载。