MQTT——服务质量Qos
目录
Qos简介
Qos等级及其说明
Qos的重要性
Qos工作模式
Qos=0
Qos=1
Qos=2
写MQTT项目的时候,没有感受到Qos服务质量参数的重要性,直到报错后一直无法解决,在曾经的代码尝试无误,合成的项目中就出现了错误,仔细对比代码逻辑是一样的,只有服务质量不同,抱着尝试的态度试了试,果然可以!
Qos简介
QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。QoS的保证对于容量有限的网络来说是十分重要的,特别是对于流多媒体应用,例如VoIP和IPTV等,因为这些应用常常需要固定的传输率,对延时也比较敏感。(百度百科)
当网络发生拥塞的时候,所有的数据流都有可能被丢弃;为满足用户对不同应用不同服务质量的要求,就需要网络能根据用户的要求分配和调度资源,对不同的数据流提供不同的服务质量:对实时性强且重要的数据报文优先处理;对于实时性不强的普通数据报文,提供较低的处理优先级,网络拥塞时甚至丢弃。QoS应运而生。支持QoS功能的设备,能够提供传输品质服务;针对某种类别的数据流,可以为它赋予某个级别的传输优先级,来标识它的相对重要性,并使用设备所提供的各种优先级转发策略、拥塞避免等机制为这些数据流提供特殊的传输服务。配置了QoS的网络环境,增加了网络性能的可预知性,并能够有效地分配网络带宽,更加合理地利用网络资源。
Qos等级及其说明
MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service):
- QoS0,At most once,至多一次;
- QoS1,At least once,至少一次;
- QoS2,Exactly once,确保只有一次。
QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议:
- QoS=0 代表,Sender 发送的一条消息,Receiver 最多能收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,也就算了;
- QoS=1 代表,Sender 发送的一条消息,Receiver 至少能收到一次,也就是说 Sender 向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,但是因为重传的原因,Receiver 有可能会收到重复的消息;
- QoS=2 代表,Sender 发送的一条消息,Receiver 确保能收到而且只收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,同时保证 Receiver 不会因为消息重传而收到重复的消息。
Qos的重要性
QoS 是MQTT的一个主要的功能。它使得在一个不稳定的网络环境里的信息交换更加的简单,因为协议控制了中继并保证了信息的交付,忽略了不可靠的下层的交互。并且,它授权给客户端来根据客户端的程序逻辑,网络可靠程度来决定QoS等级。
Qos工作模式
Qos=0
保证一次信息尽力交付,发出去了就不管了
Qos=1
保证消息可以被至少接受发送一次给接受者,可能被重复接受
发送者将会存储发送的信息直到发送者收到一次来自接收者的PUBACK格式的应答。
Qos=2
保证消息发送出去后,接收方接受且只接受一次,是最安全也是最慢的服务
如果接收端接收到了一个QoS 的PUBLISH消息,它将相应地处理 PUBLISH消息,并通过PUBREC消息向发送方确认。
使用 QoS0:
- Client 和 Broker 之间的网络连接非常稳定,例如一个通过有线网络连接到 Broker 的测试用 Client;
- 可以接受丢失部分消息,比如你有一个传感器以非常短的间隔发布状态数据,所以丢一些也可以接受;
- 你不需要离线消息。
使用 QoS1:
- 你需要接收所有的消息,而且你的应用可以接受并处理重复的消息;
- 你无法接受 QoS2 带来的额外开销,QoS1 发送消息的速度比 QoS2 快很多。
使用 QoS2:
- 你的应用必须接收到所有的消息,而且你的应用在重复的消息下无法正常工作,同时你也能接受 QoS2 带来的额外开销。
(参考百度百科)
MQTT——服务质量Qos相关推荐
- MQTT中QOS=2的四次包交互
MQTT协议在我们工作中经常用到,MQTT有三种QOS,分别为At most once delivery.At least once delivery.Exactly once delivery,每种 ...
- 什么是服务质量(QoS) ?—Vecloud微云
什么是服务质量(QoS) ? QoS是指网络能够利用各种基础技术为所选网络数据流提供更好的服务,这些技术包括帧中继.异步传输模式(ATM).以太网和802.1网络,SONET和IP路由的网络. QoS ...
- 网络切片技术缺点_网络切片和服务质量(QoS)有什么区别?
原标题:网络切片和服务质量(QoS)有什么区别? [OEM合作]小鸟云OEM能够为合作商提供完整的OEM公有云业务管理系统 + 无限制资源池API接口,合作商无需考虑复杂的资源池建设方案,也无需考虑庞 ...
- 网络切片技术缺点_一文读懂网络切片和服务质量(QoS)的差异
网络切片几乎在5G出现的每个行中都有提及,但通常情况下其定义是模糊的.网络切片究竟是什么,它与已经存在多年的服务质量(QoS)有何不同? 网络切片是一种特定的虚拟化形式,允许多个逻辑网络在共享的物理网 ...
- 了解什么是服务质量QoS以及如何提高网络性能
服务质量(QoS)是任何成功网络的关键组成部分.它确保您的数据按时交付到目的地,没有中断或损坏.这有助于提高网络的性能,以及连接到网络的用户的体验.在这篇文章中,我们将探讨什么是服务质量(QoS),如 ...
- MQTT:QoS服务质量 0,1,2(Quality of Service 0, 1 2)
原文链接:http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels 转载链接:http://bl ...
- 服务质量QoS(Quality of Service)的基础知识
QoS概述 浅谈QoS--QoS概述 网络抓包工具Wireshark下载安装&使用详细教程 QoS简介 在传统的计算机网络中,网络设备对于数据包的处理方式都是相同的,平等的对待所有的数据流量. ...
- K8S的服务质量QoS —— 筑梦之路
K8S中的应用服务质量(QoS)介绍 服务质量(QoS)类是Kubernetes的概念,它确定Pod的调度和驱逐优先级 Kubelet使用它来管理驱逐pod的顺序,以及使用高级CPU管理策略允许更复杂 ...
- dscp值_值得收藏 网络服务质量QOS分类中的DSCP详解
在QOS分类当中,有个比较重要的概念-DSCP DSCP差分服务代码点(Differentiated Services Code Point),是IETF于1998年12月发布的Diff-Serv(D ...
- MQTT QoS 设计:车联网平台消息传输质量保障
在本专题系列文章中,我们将根据 EMQ 在车联网领域的实践经验,从协议选择等理论知识,到平台架构设计等实战操作,与大家分享如何搭建一个可靠.高效.符合行业场景需求的车联网平台. 在此之前,我们已经介绍 ...
最新文章
- android标题栏添加按钮_改善Android布局性能
- 使用Java处理除法运算的陷阱
- 卫星通信频段:C频段、Ku频段和Ka频段
- asp.net中的窗体身份验证
- 外部中断器1C语言程序,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
- echarts 卡_图表太丑怎么破,ECharts神器带你飞!
- java undo_用JAVA实现Undo、Redo,Copy、Paste、Cut_java
- Codeforces Round #371 (Div. 2) C. Sonya and Queries —— 二进制压缩
- 百度SEO抖音无水印解析网站源码
- js 防止重复提交方案
- slam无人车清除地图残影
- 深度学习-图解卷积运算
- PHP进销存源码 ERP多仓库管理系统源码 手机端+小程序版进销存 全开源可二开 uniapp
- 从单机到分布式数据库存储系统的演进
- 小米生态链成功的12个关键因素
- 米家电磁炉显示e10_MIJIA 米家 电磁炉
- 基于[三星6818]I2C驱动开发的0.96寸oled屏
- Android分享wifi给电脑,安卓手机怎么通过USB共享网络给mac电脑
- 【元胞自动机】元胞自动机双边教室疏散【含Matlab源码 1208期】
- Python基础教程书籍案例:新闻采集(新闻聚合)【上】