您当前的位置:首页 > 互联网百科 > 物联网

MQTT与SSE的对比

时间:2020-07-28 12:56:54  来源:  作者:
MQTT与SSE的对比

 

构建实时web或移动应用程序比构建标准服务更具挑战性。这是因为您选择的将数据从服务器传递到客户端的协议将对总体体验产生重大影响。

当您需要数据从服务器快速地流向客户机时,需要一个持久连接。您可以使用长轮询(long polling)、WebSockets、服务器发送事件(SSE)或HTTP2推送来完成此操作。

今天,我们将具体看看MQTT和SSE,看看它们之间的比较。

MQTT和SSE的简要历史

MQTT,即消息队列遥测传输(Message Queuing Telemetry Transport),是一种发布-订阅(publish-subscribe)消息协议,最早出现于1999年。IBM的andy Stanford-Clark和eurotech的Arlen Nipper在那一年发布了该协议。

最初,它为沙漠管道段之间的连接提供支持,以便进行主动监测。这是通过将管道连接与卫星网络同步来实现的。

这个想法是创建一种轻量级的机器对机器通信协议,该协议甚至可以在带宽低,连接性无法预测的有限网络上以及低功耗设备上运行。它还合并了不同级别的服务质量(QoS)。

从那时起,MQTT已成为类似应用程序的公认协议,在CPU功率有限、电池限制和不可预测的通信实例之间桥接设备之间的连接。最近,MQTT已成为物联网解决方案的首选协议。

另一方面,SSE(Server-Sent Events)出现的时间要晚得多,在2006年。该协议基于服务器发送的DOM事件,它是Opera 9 web浏览器引入的。当时,它还是一项试验技术,仅在发生新事件或更新时才将内容从服务器推送到客户机或web浏览器。

首先,客户端使用EventSource接口建立连接。基于JAVAScript的API使HTTP流保持打开状态并接收更新,直到最终将其关闭。

这是一个新的EventSource对象的示例,该对象设置为从服务器接收事件:

它们有何不同

有两种主要的方法来处理数据传递。第一个称为客户端请求,它表示浏览器或应用正在从服务器请求数据。第二种方法称为服务器推送,这是远程服务器主动将数据推送到网站或应用程序。本质上,一个涉及客户端,另一个涉及服务器。

虽然只有两种方法可以进行数据传递,但是可以通过几种方法实现此过程:

1)长轮询或短轮询(客户端pull)

2)WebSockets(服务器推送)

3)服务器发送的事件(服务器推送)

轮询是在客户端完成的,当应用程序或网站定期向服务器请求数据时会发生轮询。

WebSockets是客户端和服务器之间的持久连接,主要用作通信协议。

最后,SSE(Server-Sent Events)是一种异步机制,通过活动连接将数据推送到客户端。当新的数据块或更新可用时,服务器也可以发送数据。连接可能保持打开状态,但这并不一定意味着数据正在传输。

仅从这些定义,您就可以看到客户机-服务器进程有多么不同。这也意味着它们各有优缺点,这使得它们在某些情况下非常适合使用,而在另一些情况下就不那么实用了。

MQTT作用概述

MQTT协议依赖于类似网络的系统,包括服务器,一个或多个客户端和代理。代理是MQTT服务器,连接的设备是客户端。发布者和客户端都不会处理这些工作。相反,处理能力和通信主要由代理处理。

因此,MQTT允许开发人员建立通信通道层次结构。从视觉上看,这就像一个树枝。发布者或服务器首先向代理发送新数据,以及传递控制说明。

然后,代理会促进另一端的客户之间的信息交换。高级客户端可以从发布服务器接收每一条消息或更新,而低级客户端只接收与其基本级别相关的消息。

所有发布并发送给代理的数据(以及接收到的数据)均采用二进制协议进行编码。 因此,必须先解释该消息,然后才能使用数据内容。

尽管如此,MQTT仅通过纯文本分发安全性凭证,因此它并不完全安全,并且不能为大多数应用程序提供足够的身份验证或安全性。开发人员可以通过实现SSL框架解决此问题,该框架通过加密保护任何传输的数据。

MQTT:优点和缺点

优点

1)MQTT是一种难以置信的轻量级协议,旨在连接资源最受限的设备。

2)它内置了多层服务质量(QoS)。

3)大多数云OT厂商和提供商已经支持MQTT,使其成为传感器不断收集和报告聚合数据的IoT解决方案的理想选择。

4)MQTT是双向的。

缺点

1)由于集中代理的性质,开发人员在使用MQTT时可能会遇到扩展限制,本地代理中心会限制其支持的扩展量。

2)具有讽刺意味的是,MQTT通常运行在TCP/IP网络堆栈的顶部,该堆栈是为具有更大内存和处理能力的设备而设计的。因此,唤醒和通讯时间可能会延长,这可能会影响长期的电池消耗。

SSE概述

SSE连接通常在客户端-服务器配置之间的链接的客户端开始。客户端通过在JavaScript中创建新的EventSource对象来启动并打开连接。它通过HTTP请求发送相关的URL。

建立连接后,客户端将期待并寻找事件消息流。只要传输数据,HTTP请求就保持打开状态。一段时间后,当客户端认为传输过时时,连接将关闭。如果取消了初始请求,则客户端也可以直接关闭连接。

如您所见,SSE比MQTT更简单,并且不涉及代理。

SSE:优点和缺点

优点

1)数据通过简单且广泛使用的HTTP协议而不是专有协议进行同步。

2)包括对重新建立连接和事件ID功能的内置支持。

3)对于利用单向通信的应用程序和服务非常有用。

缺点

1)不幸的是,SSE只支持UTF-8编码,不支持二进制数据。

2)对最大打开连接数的严格限制可能使事情变得困难,每个浏览器都设置了限制。

3)SSE是单向的。

MQTT与SSE

比较MQTT和SSE时要考虑的最重要的事情是它们的连接能力。例如,SSE是单向的,专门为需要从服务器提取信息的服务或应用程序而设计。另一方面,MQTT是一种健壮的双向通信选项,可以促进服务器与客户端之间来回的数据传输。

这意味着SSE非常适合将信息存储在服务器上并推送到客户端的应用程序,例如实时股票应用程序或基于新闻的服务。从本质上讲,不需要从客户端以相反的方向传递数据。

这也解释了为什么开发人员在物联网应用程序,传感器和设备中首选MQTT的原因,当然还有其他优点。由于信息具有双向结构,因此可以双向传递。

SSE开源解决方案

了解SSE之后,您可能已经准备好寻找可以帮助您入门的开源SSE软件。Gossed就是一个例子。它允许您将任何程序的标准输出作为服务器发送的事件推送到浏览器。

还有SSE Channel,可以将消息广播到所有连接的客户端。另外,此工具会自动维护历史记录。它的另一个功能是能够根据需要向客户端发送自动“保持活动(keep-alive)”数据包的功能。

MQTT开源解决方案

也有开放源码MQTT选项。Eclipse Mosquitto是轻量级的,适用于所有设备。它可以处理从智能手机到连接传感器的各种设备的消息传递需求。还有一个测试服务器,它允许您使用几个与MQTT相关的场景查看客户机的功能。

HiveMQ是MQTT的另一个代理,它在2019年4月成为一种开源软件。它专门用于处理与物联网设备相关的信息。该工具提供了一个实时监视界面,以及用于故障诊断的高级端到端MQTT分析。

实施中的困难

首先,为MQTT或SSE实现内部解决方案可能听起来可行。但是,有一些常见的问题需要克服,比如与消息顺序和有保障的传递相关的问题。您还必须牢记安全性,包括访问控制和配置。2019年,安全研究人员详细描述了至少3200个拥有智能家居技术的家庭是如何由于MQTT的不安全错误配置而可能受到黑客攻击的。

再加上其他必需的东西,比如创建开发人员文档,就很容易理解为什么您最终会认为,从操作和工程的角度来看,使用内部解决方案过于耗费人力和成本。随着最终用户数量的增长,你很可能会得出这样的结论。在加大努力的同时,这里列出的所有挑战可能会变得更成问题。

尽管如前所述,MQTT和SSE都具有开源选项,但更明智的选择是投资于商用的实时消息传递平台。 即使您扩大规模,它也可以帮助您始终获得较高的性能和可靠性。



Tags:MQTT   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一.MQTT简介MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布/订阅信息传输协议。MQTT在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进...【详细内容】
2021-12-07  Tags: MQTT  点击:(33)  评论:(0)  加入收藏
在这篇文章中,大家将了解MQTT协议,以及为什么在许多物联网应用中使用它。 MQTT协议最初由IBM开发,并且是专有的。它的开发是为了解决石油和天然气行业的传感器通过卫星与远程服...【详细内容】
2021-10-21  Tags: MQTT  点击:(32)  评论:(0)  加入收藏
为什么要使用ssl加密通讯随着互联网快速发展,网络安全越来越得到人们的关注。谁都不想自己的数据被人窃听或利用,而当我们直接使用TCP连接一个服务器通讯时,此时是明文传输的,...【详细内容】
2021-04-12  Tags: MQTT  点击:(333)  评论:(0)  加入收藏
对于软件公司来说,IoT 模式为其硬件设计以及所提供的服务带来决定性的改变。其中影响最大的一个方面是通信协议。通信协议可以被认为是一种语言,即两台或两台以上的设备可以相...【详细内容】
2020-12-30  Tags: MQTT  点击:(185)  评论:(0)  加入收藏
Python 是一种广泛使用的解释型、高级编程、通用型编程语言。Python 的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。Pyth...【详细内容】
2020-08-18  Tags: MQTT  点击:(54)  评论:(0)  加入收藏
大家好,我是银基Tiger Team的BaCde,今天来说说MQTT协议的安全。MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是是ISO 标准(ISO/IEC PRF 20922)下基于...【详细内容】
2020-08-10  Tags: MQTT  点击:(136)  评论:(0)  加入收藏
构建实时web或移动应用程序比构建标准服务更具挑战性。这是因为您选择的将数据从服务器传递到客户端的协议将对总体体验产生重大影响。当您需要数据从服务器快速地流向客户...【详细内容】
2020-07-28  Tags: MQTT  点击:(83)  评论:(0)  加入收藏
MQTT与Kafka完全不同。MQTT是由OASIS技术委员会的成员(大多数是IBM和Microsoft的高级工程师)开发的协议和技术标准。Kafka是LinkedIn首次实现的开源流平台。2011年开放源码...【详细内容】
2020-07-17  Tags: MQTT  点击:(645)  评论:(0)  加入收藏
一、安装预置条件EMQ X 可以跨平台运行在 Linux、FreeBSD、MacOS 或 Windows 服务器甚至是树莓派上。服务器最低配置为 512MB 内存且至少保留 1 GB 以上硬盘空间。二、二...【详细内容】
2020-07-16  Tags: MQTT  点击:(290)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是志明。上一期我们聊了物联网的发展。今天我想和大家聊一聊物联网(IOT)的落地应用:共享设备。 相信各位对这个词并不陌生,随着互联网技术的快速发展,以共享设备为代表的...【详细内容】
2021-12-24  物联网系统开发大观    Tags:物联网   点击:(14)  评论:(0)  加入收藏
随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题。通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联...【详细内容】
2021-12-16  pheenet菲尼特    Tags:物联网   点击:(16)  评论:(0)  加入收藏
安科瑞 于洋 周洁摘要:现代物联网技术高速发展,许多场所已经开始合理应用物联网照明系统,作为工厂生产的重要因素之一,工厂照明系统的智能化控制可以有效提高工厂对能源的利用率...【详细内容】
2021-12-14  安科瑞于洋    Tags:物联网   点击:(19)  评论:(0)  加入收藏
来源:内容由半导体行业观察(ID:icbank)来自Ctimes,谢谢。在数字化实体世界中,物联网技术的应用相当广泛,市场潜能与商机庞大。麦肯锡(MGI)《物联网:超越市场炒作价值(The Internet o...【详细内容】
2021-11-30  半导体行业观察    Tags:物联网   点击:(20)  评论:(0)  加入收藏
计讯物联无线数传终端DTU,对接充电桩与后端管理中心,多量分散充电桩统一集中管控,工业设计,无线部署、远程状态监测。  无线DTU充电桩联网  1、无线数据终端DTU建立充电桩...【详细内容】
2021-11-05  物联界的程序猿    Tags:充电桩   点击:(40)  评论:(0)  加入收藏
物联网(IoT)行业正蓬勃发展,成功的物联网项目需要大量工程,本文讨论了完整物联网项目所需的开发人员技能:包括嵌入式开发技术,应用程序编程,大数据分析等等。硬件设计师大多数物...【详细内容】
2021-11-03  粤嵌教育    Tags:物联网   点击:(28)  评论:(0)  加入收藏
M2M我的一般的理解就是机器到机器(Machine to Machine),点对点的机器链接。从概念上也可以理解为人到人(Man to Man)、人到机器(Man to Machine)。即时通信工具就是人到人的交互,人...【详细内容】
2021-10-29  喻喻嗒    Tags:物联网   点击:(71)  评论:(0)  加入收藏
在这篇文章中,大家将了解MQTT协议,以及为什么在许多物联网应用中使用它。 MQTT协议最初由IBM开发,并且是专有的。它的开发是为了解决石油和天然气行业的传感器通过卫星与远程服...【详细内容】
2021-10-21  亿佰特物联网实验室    Tags:MQTT   点击:(32)  评论:(0)  加入收藏
介绍IconPark是字节跳动团队开源的一个开源图标库,一共提供超过2000个高质量的图标,提供可视化界面配置来实现不同的方案,非常适合开发者和设计师来使用! GithubGitHub:https://...【详细内容】
2021-07-19  爱分享Coder    Tags:IconPark   点击:(189)  评论:(0)  加入收藏
背景介绍在 IoT 物联网场景中,因为消费者分布全球各地,设备会被销售到多个国家或地区使用。 如果需要通过某个固定的服务器,远程管理多个国家或地区的设备,那么可能会出现如下情...【详细内容】
2021-07-16  公田    Tags:物联网   点击:(78)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条