RabbitMQ集群高可用
RabbitMq集群模式分为两种:普通集群;镜像集群模式
普通集群模式
多台机器上启动多个RabbitMQ实例,每个实例中的exchange和queue都包含meta、contents、state等信息,exchange在集群中的每个节点都保存一份数据,但是queue不一样,queue在集群中对于contents只存储一份,其他节点只存储meta信息
也就是说:
- 对于publish,客户端任意连接集群的一个节点,转发给创建queue的节点存储消息的所有信息
- 对于consumer,客户端任意连接集群中的一个节点,如果数据不在该节点中,则从存储该消息data的节点拉取。
可见当存储有queue内容的节点失效后,只要等待该节点恢复后,queue中存在的消息才可以获取消费的到
所以这个普通集群比较尴尬了,这就没有什么所谓的高可用性可言了,这方案主要是提高吞吐量的,就是说让集群中多个节点来服务某个queue的读写操作。高可用方面就差一点了
镜像集群模式
镜像集群是RabbitMQ高可用的一种模式,相对于普通集群模式,你创建