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

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

RabbitMQ

一、RabbitMQ 普通集群模式

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

二、镜像集群模式

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

  • 优点
    1. 能够极大地保证可用性
  • 缺点
    1. 性能开销太大
    2. 没有扩展性
  • 解决办法
    在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候可以要求数据同步到所有节点,也可以要求同步到指定数量的节点,然后你再次创建queue 的时候,应用这个策略,就会自动将数据同步到其他节点上去。
相关推荐
软件黑马王子13 分钟前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
闲猫16 分钟前
go orm GORM
开发语言·后端·golang
4277240018 分钟前
IDEA使用git不提示账号密码登录,而是输入token问题解决
java·git·intellij-idea
chengooooooo39 分钟前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
李长渊哦42 分钟前
常用的 JVM 参数:配置与优化指南
java·jvm
计算机小白一个42 分钟前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
李白同学2 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?3 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
青龙小码农3 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿3 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法