【退役之重学Java】如何保证消息队列的高可用?

通过上一篇博客,我们知道,虽然引入消息队列可以优化系统的性能、稳定性和可维护性,提升系统的整体效率和用户体验。但是也需要注意其可能带来的复杂性、一致性、可用性、延迟、数据一致性等方面的缺点。

RabbitMQ

一、RabbitMQ 普通集群模式

  • 缺点
    1. 在 RabbitMQ 集群内部产生大量的数据传输
    2. 不能保障可用性,如果 queue 所在的节点宕机了,就导致哪个 queue 的数据丢失

二、镜像集群模式

这是 RabbitMQ 的高可用模式,跟不同集群模式不一样的是,你创建的 queue, 无论元数据还是 queue 里的消息都会存在于多个实例上,然后每次你写消息到 queue 的时候,都会自动把消息放到多个实例的 queue 里进行消息同步。

  • 优点
    1. 能够极大地保证可用性
  • 缺点
    1. 性能开销太大
    2. 没有扩展性
  • 解决办法
    在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候可以要求数据同步到所有节点,也可以要求同步到指定数量的节点,然后你再次创建queue 的时候,应用这个策略,就会自动将数据同步到其他节点上去。
相关推荐
码少女16 分钟前
Linux--多路转接之select
java·服务器·数据库
nvvas1 小时前
Java 入门(四):数组——数据的集合管理
java·开发语言
Lambert2812 小时前
AgentScope Java 从零(07):官方有权限引擎,我却在工具里写了个 if
java·后端·ai编程
Kyrie_kk2 小时前
Java--ThreadLocal线程副本(一)
java·后端
Y3815326622 小时前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库
君顾12 小时前
本地城市低空经济管理系统定制:城市级低空运营平台架构与落地实战
java·开发语言·飞手
奈斯先生Vector2 小时前
当模型版本不断变化,RelayRouter 能否帮助 AI 应用摆脱深度绑定
android·java·人工智能·开源·aigc
用户8181870627462 小时前
第28章 消息积压应急处理实录:一次真实大促故障复盘
java·后端
宸津-代码粉碎机3 小时前
微服务线上踩坑复盘:接口超时、负载倾斜隐形问题根治方案(生产级配置)
java·大数据·人工智能·python·spring
多多鼠3 小时前
System Prompt 的“版本漂移”问题:从变更管理到 A/B 测试体系
开发语言·网络·人工智能·python·langchain