首页 > 其他分享 >如何解决MQTT消息积压

如何解决MQTT消息积压

时间:2023-06-28 10:22:47浏览次数:42  
标签:消费 积压 producer 性能 broker MQTT 消息 解决 consumer

什么是消息积压?

大量消息被堆积在broker端,没有被消费。

为什么会消息积压?

宏观角度主要原因是:producer端生产速度 > consumer端消费速度

导致producer端生产速度 > consumer端消费速度的情况有多种:

  1. 设计的时候就没有考虑消费速度要大于生产速度,这种情况最不应该。
  2. 某一时刻消息积压上涨
    1. 比如说抢购,导致生产端一下子并发量飙升,考虑水平扩容或者服务降级。
    2. 消费端有很多消费失败,导致消费性能下降

消息积压了该怎么办?

这里首先得有一个认识:消息队列本身的处理能力要远大于业务系统的处理能力。因此主要考虑业务逻辑中的性能优化。

紧急处理

问题的根在于consumer端消费速度慢导致的,最直接的方法就是水平扩容,增加消费端的并发数,来提升总体的消费性能。

需要注意的是:在Kafka或RocketMQ中 在扩容 Consumer 的实例数量的同时,必须同步扩容主题中的分区(也叫队列)数量,确保 Consumer 的实例数和分区数量是相等的。 否则水平扩容之后也是没有效果的。

紧急处理之后进行Consumer端优化

只要针对consumer端的业务逻辑进行优化。

我们的业务代码怎么和消息队列配合,达到一个最佳的性能?

producer端

发送端性能上不去,你需要优先检查一下,是不是发消息之前的业务逻辑耗时太多导致的。

提升发送性能的方法:设置合适的并发和批量大小。

Producer 发消息给 Broker,Broker 收到消息后返回确认响应,这是一次完整的交互。

提升发送性能就是为了在单位时间内增加交互的消息量

并发方式:对于响应时间短的友好

批量方式:对吞吐量大的友好

耗时分析

  • 1.准备发送:发送端准备数据、序列化消息、构造请求等逻辑的时间
  • 2.消息从producer端网络传输到broker端
  • 3.broker端处理消息
  • 4.消息响应从broker端网络传输到producer端

broker端

刚才已经提过了,消费队列性能远大于业务系统的处理能力,所以broker端的性能不用考虑,要考虑也可以通过水平扩容broker达到很好的效果。

consumer端

如上,只要针对consumer端的业务逻辑进行优化,或者进行水平扩容,且在broker增加分区。

总结

image.png

  链接:https://juejin.cn/post/7006553089054507045

标签:消费,积压,producer,性能,broker,MQTT,消息,解决,consumer
From: https://www.cnblogs.com/nayilvyangguang/p/17510677.html

相关文章

  • 如何解决跨域问题
    方法一在类上增加@CrossOrigin注解方法二在Gateway网关的application.yml配置文件中增加以下配置spring:cloud:gateway:globalcors:cors-configurations:'[/**]':allowedOrigins:"*"allowedMethods:"*"......
  • 快递业务激增,中科微至实力解决行业痛点
    国家邮政局监测数据显示,截至6月24日,今年我国快递业务量已达600亿件,比2019年提前了172天,比2022年提前了34天。业务数量的快速增长,对快递物流行业的工作效率提出了更高的要求。为提升包裹处理效率、包裹分拣准确度等,中科微至针对不同工作场景推出了多样化智能物流视觉系统,以......
  • Java并发(十二)----线程应用之多线程解决烧水泡茶问题
    1、背景统筹方法,是一种安排工作进程的数学方法。它的实用范围极广泛,在企业管理和基本建设中,以及关系复杂的科研项目的组织与管理中,都可以应用。怎样应用呢?主要是把工序安排好。比如,想泡壶茶喝。当时的情况是:开水没有;水壶要洗,茶壶、茶杯要洗;火已生了,茶叶也有了。怎么办?办法甲......
  • TCP连接中CLOSE_WAIT状态的原因与解决方法?
        关闭socket分为主动关闭和被动关闭两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接;将关闭部分的状态转移摘出来,就得到了下图: 产生原因?通过图上,我们来分析,什么情况下,连接处于CLOSE_WAIT状......
  • mac打开ddms卡住的问题解决
    https://blog.csdn.net/qq_35244415/article/details/110656444?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-110656444-blog-88994745.235^v38^pc_relevant_default_base&depth_1-utm_source=distribute.......
  • 解决了yum 安装httpd的3001问题
    Repositorybaseislistedmorethanonceintheconfiguration查了各种资料,没解决,最后发现了错误原因(只是其中一种原因);   蓝色框:这些错误尝试各种解决仍无效。红色框:最后发现是yum被占用了。论看全部信息的重要性绿色框:果然yum被占用kill掉配置阿里源  wget-O......
  • 前端解决跨域
    重新整理了下Vue的接口去跨域的事,其实就两个地方实际生效,其他地方乱写端口什么的反倒是阻碍了。这边展示Vue3+Vite的例子://写在vite.config里server:{port:81,//定义前端程序使用的端口disableHostCheck:true,proxy:{'api':{tar......
  • ubuntu安装卡死及关机卡死解决方法
    Ubuntu安装界面卡住给笔记本安装ubuntu的时候一直有这个问题,在安装界面就直接卡死,鼠标能动,但啥都不能点。实际上是由于我的显卡是GTX1060,是在1050ti以上,而ubuntu与n卡的高版本兼容性不好才导致卡死。这时候的处理方法是:1.在系统选择安装ubuntu界面,选到installub......
  • 如何解决谐振式传感器产生的异常谐振问题?
    如何解决谐振式传感器产生的异常谐振问题?解决谐振式传感器产生的异常谐振问题需要进行以下步骤: 1.找出谐振频率:使用震动测试仪器或者频谱分析仪器来找出传感器的谐振频率。2.调整谐振频率:可以通过调整传感器的质量、刚度或者惯性矩来改变谐振频率。也可以将传感器与质量块......
  • 麒麟操作系统无法打开美图秀秀解决方法
    麒麟操作系统2303安装美图秀秀双击无法打开提示如下使用脚本运行报错/opt/mtxx/mtxx.sh报错信息如下mtxx:/opt/mtxx/libcrypto.so.1.1:version`OPENSSL_1_1_1f'notfound(requiredby/lib/x86_64-linux-gnu/libssl.so.1.1)原因分析:操作系统模块libssl.so.1.1问题......