1.QoS含义 :

Quality of Service,服务质量

2.作用域

发布者的Qos

订阅者的Qos

3.等级与作用

level 0:最多一次的传输

level 1:至少一次的传输,(鸡肋)

level 2: 只有一次的传输

4.交互过程

qos0

对于qos1而言,对于client而言,有且仅发一次publish包,对于broker而言,有且仅发一次publish,简而言之,就是仅发一次包,是否收到完全不管,适合那些不是很重要的数据。

qos0.png

qos1

对于qos0而言,这个交互就是多了一次ack的作用,但是会有个问题,尽管我们可以通过确认来保证一定收到客户端或服务器的message,但是我们却不能保证message仅有一次,也就是当client没收到service的puback或者service没有收到client的puback,那么就会一直发送publisher

流程:(publisher -> broker)

publisher store msg -> publish ->broker (传递message)

broker -> puback -> publisher delete msg (确认传递成功)

注意:

publisher必须保存msg,这样才能在重发

publisher如果在一定时间或socket断开等异常情况,会继续重发msg

qos1.png

qos2

对于qos1而言,qos2可以实现仅仅接受一次message,其主要原理(对于publisher而言),

publisher和broker进行了缓存,其中publisher缓存了message和msgID,而broker缓存了msgID,两方都做记录所以可以保证消息不重复,但是由于记录是需要删除的,这个删除流程同样多了一倍

流程:(publisher -> broker)

publisher store msg -> publish ->broker -> broker store msgID(传递message)

broker -> puberc (确认传递成功)

publisher -> pubrel -> broker delete msgID (告诉broker删除msgID)

broker -> pubcomp -> publisher delete msg (告诉publisher删除msg)

注意:

第二步,即puberc不可以删除 publisher的msg,因为第三步未必成功,这个时候就需要第一步提醒第二步继续发,而提醒必须要msgID

qos2.png

5.问题

1.为什么 qos2不是3次,不和tcp握手一致

2.Qos对协议的影响

6.参考

php mqtt qos,Mqtt Qos 深度解读相关推荐

  1. MQTT(2)---MQTT协议

    MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早是IBM开发的一个即时通讯协议,MQTT协议是为大量计算能力有限且工作在低带宽.不 ...

  2. 管理节点连接不上sql节点_华为云IEF智能边缘平台十万边缘节点管理技术深度解读学习笔记...

    华为云智能边缘平台IEF首席架构师张琦在3月27-28日举办的华为开发者大会2020(Cloud)上,深度解读了十万边缘节点的管理技术,以及如何通过云原生技术和边缘计算结合,构建边缘计算实战场景中所需 ...

  3. 【MQTT】MQTT协议学习

    文章目录 MQTT协议 简述 特点 MQTT消息的QoS(服务质量) MQTT支持三种QoS等级: 协议实现方式 MQTT协议数据包(控制报文)结构 MQTT固定头 MQTT数据包类型 标识位 剩余长 ...

  4. 从云原生到智能化,深度解读行业首个「视频直播技术最佳实践图谱」

    在2022阿里云直播峰会上,多位直播产业领域技术专家与行业先行者,共同探讨超视频化时代视频直播技术的演进趋势与未来发展.会上,阿里云重磅发布了行业首个「视频直播技术最佳实践图谱」,将直播技术归纳总结为 ...

  5. DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计

    摘要:介绍在SaaS场景下如何技术选型,SaaS架构设计中关键的技术点等内容. 本文分享自华为云社区<DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计>,作者: 华 ...

  6. 【MQTT】MQTT简介+安装+使用

    目录 前言 MQTT 协议简介 为何选择 MQTT MQTT 通讯运作方式 MQTT 协议帧格式 MQTT服务器搭建和使用 公共MQTT 测试服务器 MQTT服务器搭建 各种MQTT代理服务程序比较 ...

  7. 万字长文:深度解读最新发布的《国家数据安全法》 by 傅一平

    来源:与数据同行本文约9900字,建议阅读15分钟本文将深度解读<国家数据安全法>. 2021年6月10日,第十三届全国人民代表大会常务委员会第二十九次会议通过<数据安全法>三 ...

  8. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能...

    转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...

  9. 深度解读谷歌开源的最精确自然语言解析器SyntaxNet

    深度解读谷歌开源的最精确自然语言解析器SyntaxNet 谷歌开源了SyntaxNet,也发布了针对英语的预训练解析程序 Parsey McParseface.除了让更多人使用到最先进的分析技术之外, ...

  10. 深度解读 OpenYurt:从边缘自治看 YurtHub 的扩展能力

    作者 | 新胜  阿里云技术专家 **导读:OpenYurt 开源两周以来,以非侵入式的架构设计融合云原生和边缘计算两大领域,引起了不少行业内同学的关注.阿里云推出开源项目 OpenYurt,一方面是 ...

最新文章

  1. java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序
  2. Divide and conquer:K Best(POJ 3111)
  3. Smalidea无源码调试 android 应用
  4. C#代码总结02---使用泛型来获取Asp前台页面全部控件,并进行属性修改
  5. 忙累了躺平,躺醒后该干点啥
  6. (软件工程复习核心重点)第二章可行性研究-第一节:可行性研究基本介绍
  7. 车牌识别的matlab程序(程序_讲解_模板),车牌识别的matlab程序(程序讲解模板)
  8. 宁波大学2020计算机技术复试线,宁波大学2020年考研复试分数线
  9. bzoj1625[Usaco2007 Dec]宝石手镯*
  10. 【Python数据分析】数据预处理2——数据集成
  11. java读取外部配置文件_SpringBoot读取外部配置文件的方法
  12. Leetcode: One Edit Distance
  13. 网页在线验证工具(W3C国际标准验证)
  14. android手机品牌排行,智能手机品牌排行榜2019前十名
  15. 多个圆通快递单号的物流信息如何在电脑上批量查询?
  16. 音乐分享网站(JavaSSH)
  17. android 手机 apk安装失败对应码
  18. 二分查找法--有序表
  19. 【cs231n】反向传播笔记
  20. 初次进入eclipse的设置

热门文章

  1. [leetcode] 14. 最长公共前缀
  2. mybatis基础学习3---特殊sql语句(备忘)
  3. 移动文件读/写指针----lseek
  4. C++ _countf
  5. 大学英语四六各项分值
  6. Windows Internet
  7. tcp窗口滑动以及拥塞控制
  8. 拆解前苏联产荧光数码管计算器,内部电路结构彪悍!
  9. Linux Ftrace 使用
  10. Android Input 子系统初探