如何应用MQTT协议到物联网中(IOT)

传统的web应用可能不需要可靠的消息服务,但当前以物联网为代表的多样终端非常需要一个消息协议来提供服务。

建筑模式来来往往,如果说有一个永恒不变的事情,那就是需要一个可靠的消息传输。

消息队列也许在客户端/服务端世界有过它的盛世高峰,它处理大型机之间的信息交流并与我们的财务网络连接,但是它从来没有离开我们---尽管事实上直接访问api是大多数当前开发的主要特点。

直接访问api在大多数我们的web系统中工作良好,在有限的服务器资源及进程通信的后端。然而当我们转移到微型服务架构以及云---特别是我们面对物联网的时候,那么事情改变了。

突然,由于物联网的因素,我们将处理由不同规则部署的数不清的组件系统,还要处理终端发来的成千,可能不是上万条的业务消息。在这种情况下,著名的mvc设计模式将不能使用,所以我们需要转换到微服务-安全模式,回去计算机场景概念就像是参与者,使用参与者/消息模式去处理我们的服务如何与任意数量的终端进行通信。

发布订阅的救援

这是消息队列工具要发挥的作用,使用发布/订阅模式为将数据传输到服务器端提供可靠的方法。微服务参与者可订阅到已发布的连接并对接收到信息触发相应的动作。这种模式很适合将设备和服务连接起来,当有新的设备不断增加时仍能确保服务稳定。

由IBM开发的MQTT(消息队列传输协议)是一个轻量级的发布/订阅消息协议,目前已经被OASIS标准化。最初它被设计为大规模的WebSphere MQ系统与SCADA设备链接,后来MQTT演变成为通用的目的消息队列系统,它能允许一台服务器管理成千上万个终端,这是一个很简单的消息协议它并不限制于TCP/IP,能被很有限处理能力的设备所使用。

发布/订阅协议并不陌生。不过它也许在大多数开发者工具箱的底层里,它们是一个为服务架构创建消息大巴简单方法。MQTT是发布/订阅模相关的简单执行,通过消息发布到主题,而主题将会被客户端应用订阅。主题是按等级划分的,所以你可以订阅一个资源中的不同等级的信息元素。

等级划分的主题

例如,货车中的冷冻装置中的一系列传感器可以这么组成一个等级划分的主题格式:冷冻装置传感器/卡车/温度/区域,这里卡车和区域可用于标识过滤信息:一个车辆或一个区域下的多个车辆信息。

应用程序可订阅MQTT服务器上可用的主题,使用明确的订阅获取指定的消息种子,或使用通配符获取不同等级主题聚集的消息。你可以使用通配符替换一个等级架构中的一层或所有其余的元素。

在我们事例中,仪表货车+冷冻装置传感器+温度能让我们看到所有区域里所有卡车上的温度,同时,冷冻装置传感器/卡车1#将获得名字为卡车1上的所有冷冻传感器上的数据。这个方法意味着你可能使用多个微服务处理不同的主题--一个每天处理特定传感器或数据的监控,另一个处理观察错误情况等等。

MQTT提供保持最后一条消息发送的选项,因此当前的客户端连接到服务端时,就有可能在订阅的同时下载初始消息而不用等待从源发送新的消息。源还有一个选项"Will"--一个预先存储在服务器上的消息用于在断开连接时递送。客户端在will模式下可以断开连接,当然如果他们没有清空sesssion标记,可以重新连接并查看存在的订阅。联合使用session flags和wills令你可以处理源于不稳定的网络及自动化服务规模的问题。

设置服务质量

MQTT中一个非常有用的特色就为你的消息设置QoS规则的能力。这里有三个Qos级别可以使用:

Level 0:是最佳劳动选项,即出错后无条件重试。这种方法很适合用于持续的监测像趋势事务而不是实际的消息。作为控制系统的一部分,你可能使用level 0连接到流处理器或者一个机器学习系统来处理大量的消息。

Level 1:是”至少一次(at least once)“选项,用于消息可以保证被递送,尽管多次递送可能产生。如果你在处理消息量较少,通过编程处理重复项,这将是你的最佳选项。非常快,且低影响,并能与各种不同应用程序模块工作。

只有一次:是最为计算强调的层次,但它保证每个消息有且只有一次被接收到。

在内部,MQTT是一个非常简单的协议,它为构建物联网应用程序或超大规模云中的处理能力提供思想。当新的设备被添加到网络中,他们可以快速成为新的主题资源,同时新的客户端可以它们创建同时订阅主题。URI 方案令连接服务器接收消息非常简单。有大量的工具提供帮助测试MQTT连接,包括桌面和移动应用---即使是使用websockets的app应用。

使用MQTT为物联网创建消息驱动的服务非常简单,有各种服务包括知名的Mosquitto以及用于Arduino的事例代码及其它制造商。在客户端,MQTT同时被知名的工具支持,包括 Node.js-基于Secene microservices framework及visual Node-Red programming environment,伴随着成长的社区论坛帮你开始创建你的应用。

担心MQTT协议如何在现实世界中执行?这里有一个很好证明:它为互联网中最大也是最忙的应用提供支持,这就是:Facebook‘s Messenger

本文来自:http://www.totcms.com/html/201508-7/20150807133726.htm

时间: 2024-11-14 01:05:54

如何应用MQTT协议到物联网中(IOT)的相关文章

基于MQTT协议谈谈物联网开发

1.MQTT协议: MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于TCP/IP实现发布/订阅模式的应用层协议,其主要特点有: (1)基于发布/订阅模式,应用程序解耦; (2)基于TCP/IP建立网络连接; (3)协议交换最小化,降低网络流量; 2.基于MQTT协议应用: (1)简单的发布订阅应用: (2)消息系统推送应用: (3)阿里云物联网应用: 由于知识能力受限,无法一一列举基于MQTT协议的各种应用,下面就以上述消息推送

MQTT 协议学习:001-有关概念入门

背景 MQTT 协议是物联网中常见的协议之一,"轻量级物联网消息推送协议" 概念 MQTT是机器对机器(M2M)/物联网(IoT)连接协议.它被设计为一个极其轻量级的发布/订阅消息传输协议.对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽.高延迟或不可靠的网络而设计.这些原则也使该协议成为新兴的"机器到机器"(M2M)或物联网(IoT)世界的连接设备,以及带宽和电池功率非常高的移动应用的理想选择.例如,它已被用于通过卫星链路与

物联网MQTT协议分析和开源Mosquitto部署验证

在<物联网核心协议—消息推送技术演进>一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信.Ajax轮询.Websocket.MQTT.CoAP等,其中MQTT协议为IBM制定并力推,其具有开放.简单.轻量级以及易于实现的特点使得其即便在资源受限的环境中也能得到很好的使用,比如运行在资源紧缺型的嵌入式系统中或网络带宽非常昂贵的环境中,除此之外,它也被广泛用于遥感勘测.智能家居.能源监测和医疗应用程序等各个领域,是物联网的重要组成部分,将来可能会成为物联网的事实标准. 本篇文章将帮助

物联网协议测评平台——吊兰使用指南-MQTT协议 Python Paho

在忙了一个周末之后,还是小有成果的.发布了一个简单的物联网平台: http://mqtt.phodal.com,简单地写一下使用指南. CoAP协议 使用Libcoap的话可以用 <code style="box-sizing: border-box; font-family: Consolas, Menlo, Monaco, 'Courier New', monospace; font-size: 1em; padding: 0px; color: inherit; border-top

海鑫智圣:物联网漫谈之MQTT协议

什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端应用系统之间通信的问题. 为什么需要MQTT(或类似)协议 随着智能硬件和移动互联网技术的快速发展,传统的互联网协议越来越难以满足物联网的需要,体现在:移动网络代价昂贵,带宽低.可靠性差:在嵌入设备中运行,处理器和内存资源有限:海量在线设备产生庞大数据,给云端带来很大的网络开销和处理压力. MQTT

Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上

前言 诞生及优势 MQTT由Andy Stanford-Clark(IBM)和Arlen Nipper(Eurotech,现为Cirrus Link)于1999年开发,用于监测穿越沙漠的石油管道.目标是拥有一个带宽有效且使用很少电池电量的协议,因为这些设备是通过卫星链路连接的,当时这种设备非常昂贵. 与HTTP及其请求/响应范例相比,该协议使用发布/订阅体系结构.发布/订阅是事件驱动的,可以将消息推送到客户端.中央通信点是MQTT代理,它负责调度发送者和合法接收者之间的所有消息.向代理发布消息的

转战物联网&#183;基础篇05-通俗理解MQTT协议的实现原理和异步方式

??网络上搜索MQTT协议,会出现太多的解释,这里就不做官方标准释义的复制了.这一节我们从实战理解角度,通俗的将MQTT协议的作用及实现原理说一下,旨在可以快速理解MQTT协议.所以可能会出现很多看似不标准的解释,但是更容易理解MQTT的内涵,对MQTT十分精通者请忽略此文. ??在物联网项目中,经常出现的要求是"有限环境".什么意思呢,通俗说就是网络可能不太稳定,带宽也可能很小,网速也比较低,硬件MCU性能也很低,要求在这种情况下也能可靠联网传输信息.看到这里大家就会想到我前面提到的

好文转载--无线物联网中CoAP协议的研究与实现

无线物联网中CoAP协议的研究与实现 时间:2013-04-09?来源:电子科技 作者:汤春明,张 荧,吴宇平 关键字:CoAP???无线???物联网???协议?????? 摘要:由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用.IETF的CoRE工作组提出了一种基于REST架构的CoAP协议.CoAP是6LowPAN协议栈中的应用层协议.该文在详细介绍了CoAP协议的内容.特点和交互模型后,在uIPv6 S

转战物联网&#183;基础篇06-深入理解MQTT协议之基本术语

??通过上一节我们对MQTT协议已经有了初步的印象,这一节我们开始深入的理解一下MQTT协议,介绍常用的MQTT 3.1.1版本,5.0版本后面指介绍新增部分即可.这一节我们先介绍MQTT里常用的术语(非官方文档直接复制). ??网络连接(Network Connection): ??MQTT 是一种连接协议,底层使用 TCP/IP (传输层协议)提供网络连接,提供有序.可靠的.双向字节流传输.这个连接需要互联网通信的基础设施支撑,客户端使用它连接到服务端(MQTT代理服务的服务器或服务器集群)