当前位置: 首页 > news >正文

关于消息队列的一些事~

一、如果有一百万消息积压在MQ中,应该如何解决?

首先先分析一下为什么会有这么多消息积压,原因只有一个消费者处理消息的速度远小于生产者生产消息的速度。那解决这个问题的角度就可以有两个,一个是降低生产者生产消息的速度,另一个是消费者处理消息。

如果要降低生产消息的速度的话,可以使用一些限流算法,比如说漏桶算法和令牌桶算法(这两种算法的介绍会在下面解释)。

如果要提高消费者处理消息的能力的话,可以增加消费者的个数,还可以使用多线程处理消息。

还有一种方法就是使用惰性队列来缓解内存存储压力,可以将需要处理的消息存储至磁盘中(防止消息丢失、降低内存压力),这样的话内存就不需要保留很多消息。

二、RabbitMq的高可用集群包括哪些?

目前我知道的有两种集群,第一种集群甚至算不上可用集群。。。

1.普通集群,在RabbitMq集群中呢,每一个节点上都会有消息队列和相应的元数据信息,然后每一个节点上还会存在其他节点的元数据信息(比如说交换机、相关路由绑定信息、队列名称、消息总数等一些无关紧要的信息),消息的内容是不会存储在其他节点上的。因此呢集群中的一个节点gg了,那基本的消息存储服务也会gg。

2.镜像集群,这种集群呢是解决了普通集群的缺点。可以通过配置文件中镜像数量,会随机选择n个节点来存储我们节点上的消息内容。比如说一个集群中有5个节点,然后镜像数量为2,那么每个节点除了存储自己的消息之外,还会随机选择两个节点的消息进行存储。

http://www.xdnf.cn/news/199639.html

相关文章:

  • LeetCode【剑指offer】系列(图和其他篇)
  • 某校多档口食堂就餐行为可视化分析-Tableau
  • MySQL基础篇 | 1-数据库概述与MySQL安装
  • 常见算法的总结与实现思路
  • 【补题】ACPC Kickoff 2025 F. Kinan The Bank Robber
  • tensor 的计算操作
  • C#核心知识
  • Allegro23.1新功能之如何解冻动态铜皮操作指导
  • Druid监控sql导致的内存溢出
  • [Windows] MousePlus 5.5.9
  • 盈飞无限再出重磅新品 AI版质量智能双星璀璨
  • QML文件中如何创建QML对象并打开
  • 机器学习day3 - KNN的api调用
  • Vue3 项目中 Pinia 与 JavaScript 循环依赖问题深度解析
  • 三小时快速上手TypeScript之接口
  • SoapUi测试1——REST(WebAPi、Json协议/HTTP、Post通讯方式)接口测试
  • 【AI 工业应用 】AI大模型在工业领域(CAD等)的前景与实战
  • 1.8空间几何与场论
  • OpenGL进阶系列21 - OpenGL SuperBible - blendmatrix 例子学习
  • [26] cuda 应用之 nppi 实现图像格式转换
  • 企业 AD 域安全10大风险场景解析
  • Redis常用数据结构解析:从原理到实战应用
  • Python(14)推导式
  • Linux文件的一般权限
  • 2799. 统计完全子数组的数目
  • [Spring] Sentinel详解
  • Linux常见基础命令
  • i/o复用函数的使用——epoll
  • jclasslib 与 BinEd 结合的二进制分析技术指南
  • 【计算机系统结构】第四章