目录

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

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

RabbitMQ

一、RabbitMQ 普通集群模式

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

二、镜像集群模式

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

  • 优点
    1. 能够极大地保证可用性
  • 缺点
    1. 性能开销太大
    2. 没有扩展性
  • 解决办法
    在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候可以要求数据同步到所有节点,也可以要求同步到指定数量的节点,然后你再次创建queue 的时候,应用这个策略,就会自动将数据同步到其他节点上去。
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
禾小西1 小时前
Java 逐梦力扣之旅_[204. 计数质数]
java·算法·leetcode
ゞ 正在缓冲99%…1 小时前
leetcode295.数据流的中位数
java·数据结构·算法·leetcode·
xy_optics2 小时前
用matlab探索卷积神经网络(Convolutional Neural Networks)-3
开发语言·matlab·cnn
有梦想的攻城狮2 小时前
spring-cloud-alibaba-nacos-config使用说明
java·spring·nacos·springcloud·配置中心
独好紫罗兰2 小时前
洛谷题单3-P1720 月落乌啼算钱(斐波那契数列)-python-流程图重构
开发语言·算法·leetcode
慕容莞青4 小时前
MATLAB语言的进程管理
开发语言·后端·golang
Yan-英杰4 小时前
【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查
java·数据库·sql
jimin_callon4 小时前
VBA第三十八期 VBA自贡分把表格图表生成PPT
开发语言·python·powerpoint·编程·vba·deepseek
矛取矛求5 小时前
C++ 标准库参考手册深度解析
java·开发语言·c++
cijiancao5 小时前
23 种设计模式中的解释器模式
java·设计模式·解释器模式