RabbitMQ集群简介
RabbitMQ本身是基于Erlang编写,Erlang语言天生具备分布式特性,因此RabbitMQ天然支持集群。
RabbitMQ 集群中节点包括内存节点(RAM)、 磁盘节点(Disk, 消息持久化), 集群中至少有一个 Disk 节点。
RabbitMQ集群作用
RabbitMQ集群主要有两个作用:
1.集群是保证可靠性的一种方式,采用多节点,是数据高可靠性的有效解决方案。
2.同时可以增加节点,通过水平扩展以达到增加消息吞吐量能力的目的。
RabbitMQ集群模式
RabbitMQ集群模式主要包含如下4种:
1.主备模式
主备模式:也就是主节点提供读写,备用节点不提供任何读写的,只用来实现当主节点宕机的情况下能顶上去。
如下图所示:
可通过haproxy来配置:
listen rabbitmq_cluster bind 0.0.0.0:5672 # 配置TCP模式 mode tcp #简单的轮询 balance roundrobin # 主节点 server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 2 server bhz76 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2 # 备用节点
2.远程模式
远程模式:就是我们可以把消息进行不同数据中心的复制工作,可以跨地域的让两个mq集群互联远距离通信和复制。
如下图所示:
远程模式,在实际应用种不太常用。
3.镜像模式
镜像模式(Mirror),就是集群里面的每个节点都会存储Queue的数据副本,在实际工作中也是用的最多。
如下图所示,一般是3个节点:
集群镜像模式,意味着每次生产消息的时候,都需要把消息内容同步给集群中的其他节点,这种方式能够保证Queue的高可用性。
一般互联网大厂都会构建这种镜像集群模式,在实际工作中也是用的最多的。
4.多活模式
这种模式也是实现异地数据复制的主流模式,模型如下图所示:
RabbitMQ部署架构采用:双中心模式(多中心),在两套或多套数据中心各部署一套RabbitMQ集群,可以避免一个集群挂掉,整个系统就挂掉了。
各个中心的RabbitMQ服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》