rabbitMQ高可用方案
2024-09-05 04:23:17
普通模式
默认的集群模式,以两个节点(rabbit01、rabbit02)为例来进行说明。对于Queue来说,消息实体只存在于其中一个节点rabbit01(或者rabbit02),rabbit01和rabbit02两个节点仅有相同的元数据,即队列的结构。当消息进入rabbit01节点的Queue后,consumer从rabbit02节点消费时,RabbitMQ会临时在rabbit01、rabbit02间进行消息传输,把A中的消息实体取出并经过B发送给consumer。所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连rabbit01或rabbit02,出口总在rabbit01,会产生瓶颈。当rabbit01节点故障后,rabbit02节点无法取到rabbit01节点中还未消费的消息实体。如果做了消息持久化,那么得等rabbit01节点恢复,然后才可被消费;如果没有持久化的话,就会产生消息丢失的现象。
下面表示在集群配置下的不同节点创建队列的情况
下图表示在集群配置下的不同节点创建交换器和队列的绑定的情况
镜像模式
将需要消费的队列变为镜像队列,存在于多个节点,这样就可以实现RabbitMQ的HA高可用性。作用就是消息实体会主动在镜像节点之间实现同步,而不是像普通模式那样,在consumer消费数据时临时读取。缺点就是,集群内部的同步通讯会占用大量的网络带宽。
最新文章
- Window.document对象 轮播练习
- openSSL命令、PKI、CA、SSL证书原理
- python--字符工厂函数dict()
- nyoj 904 hashmap
- javascript中call和apply方法
- 查看Mysql执行计划
- android学习笔记----JNI中的c控制java
- 在基于阿里云serverCentOS6.5下安装Subversion 1.6.5服务
- python编程快速上手之第3章实践项目参考答案
- python处理点云数据并生成三维点云模型
- String的trim()用于去掉字符串前后的空格
- LeetCode算法题-Nth Digit(Java实现)
- 微信如何获取unionid 并且打通微信公众号和小程序
- GsonFormat根据返回值json快速构建Model
- 《linux性能及调优指南》 3.4 硬盘瓶颈
- SpringMVC自定义视图Excel视图和PDF视图
- 【译】第三篇 Integration Services:增量加载-Adding Rows
- HDUOJ---1133(卡特兰数扩展)Buy the Ticket
- java中Map,List与Set的差别
- MyBatis 一级缓存避坑