RocketMQ系统性学习-RocketMQ高级特性之消息大量堆积处理、部署架构和高可用机制

本文主要是介绍RocketMQ系统性学习-RocketMQ高级特性之消息大量堆积处理、部署架构和高可用机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🌈🌈🌈🌈🌈🌈🌈🌈
【11来了】文章导读地址:点击查看文章导读!
🍁🍁🍁🍁🍁🍁🍁🍁

消息大量堆积如何处理?

消息出现大量堆积的原因是:生产者速度 >> 消费者速度

首先需要排除 代码层面 的问题,再去对 RocketMQ 的配置做处理!

那么对于消息堆积的处理,就分为两种情况:

  • 事发时处理:

    • 扩容消费者(在消费者数量 < MessageQueue 的情况下)

      这里 增加消费者的数量 是有依据的,比如一个 Topic 下有 8 个 MessageQueue,那么最多将消费者数量增加到 8 个,因为 Topic 下一个队列只可以被同一消费者组的一个消费者消费,如果消费者的数量比 Topic 下的队列数量多的话,会有部分消费者分不到队列,因此消费者数量最多和 Topic 下的队列数量相同

    • 设置消费者的并发线程数

      提高单个消费者的消费并发线程,RocketMQ 支持批量消费消息,可以通过修改 DefaultMQPushConsumer 类中的 consumeThreadMin、consumeThreadMax 来提高单个消费者的并发能力

    • 消费者批量拉取消息

    • 新建临时 Topic 并设置 MessageQueue 数量多一点,将当前堆积信息转发到新建 Topic 中,再使用大量消费者去消费新的 Topic

  • 提前设计预防:

    • 生产者:限流,评估 Topic 峰值流量合理设计 Topic 的队列数量,添加异常监控
    • 存储端:限流,将次要消息转移
    • 消费者:降级次要消息消费,将重要消息落库(数据库或ES),再异步处理,合理根据 Topic 队列的数量和应用性能来部署消费者机器数量
    • 上线前,采用灰度发布,先灰度小范围用户进行使用,没问题之后,再全量发布

部署架构和高可用机制

部署架构分为(这里的 Master ):

  • 单 Mastaer

    (图片来源于网络)

    在这里插入图片描述

    • 入门学习时常使用
  • 单 Msater 单 Slave:Master 宕机后集群不可写入消息,但是可以从 Slave 读取消息

    (图片来源于网络)

    在这里插入图片描述

    • 生产上不怎么使用,一般用作自己学习搭建主从使用
  • 多 Master ,无 Slave

    (图片来源于网络)

    在这里插入图片描述

    • 部署方式简单,生产常用
    • 单个 Master 宕机后,不影响整体集群的读写服务,但是宕机的在这台服务中未被消费的消息,在这台服务下次重启之前无法被消费
  • 多 Master,多 Slave,异步复制

    (图片来源于网络)

    在这里插入图片描述

    • Slave 作为备份节点,提供数据保障
    • 但是异步复制,可能丢失部分 Master 中的数据
  • 多 Msater,多 Slave,同步复制

    (图片来源于网络)

    在这里插入图片描述

    • 同步复制中,避免了丢失 Master 数据的风险
    • 但是同步复制限制了整个集群的吞吐量
  • Dledger 模式

    在这里插入图片描述

    • 提供了在主从模式中,Master 挂了之后,自动将 Slave 选举为 Master 的功能
    • 但是在 Dledger Group 中,至少需要 3 个 Broker 才可以完成选举

这篇关于RocketMQ系统性学习-RocketMQ高级特性之消息大量堆积处理、部署架构和高可用机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525979

相关文章

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.