2、rabbitMq的高可用性方式
2022-03-31 本文已影响0人
松松木tell
我们都知道MQ的稳定性至关重要,如果只是单机的应用是无法在生产环境应用。
rabbitmq的几种模式
rabbitmq在消息中间件中是比较具有代表性的,它主要基于主从模式进行高可用的。
rabbitmq主要有三种模式:单机、普通集群、镜像集群。
2.1 单机模式
这个单机模式,就是指单应用,我们可以用来学习mq的使用,不具备生产价值。
2.2 普通集群模式
这种模式,其实是启动了多个mq实例在不同机器上,组合成一个集群。每个实例都会同步queue的元数据(可以理解成配置信息,如exchange,queue的配置),通过元数据可以找到queue所在的实例,获取到数据。但是我们创建的queue只会放在一mq个实例上。
当然这也不是个好的模式
- 首先数据只会放在一个实例上,不具备副本能力,存在风险。
- 其次虽然消费者可以连接多个实例,但如果连接的不是数据所在的实例,需要通过元数据将实际数据拉取的过程,存在大量数据开销。
所以这个方案也只是比第一个好些,部署了多台机器,可以支撑更多的消息,提高吞吐量,但不具备高可用
2.3 镜像集群模式(高可用、非分布式)
镜像模式其实就是每个mq实例都有一份完整的镜像。当我们将往queue里写数据时,都会自动将消息同步到多个实例的queue中。
- 生产者向任一服务节点注册队列,该队列内容会同步到其他节点中。
- 任何消费者向任何节点请求消息,都可以直接获取到数据。
- 任何节点宕机,不影响消息在其他节点消费。
这种模式虽然保证了高可用,但缺点也十分明显:
- 性能开销很大,消息要同步到相应的节点,网络带宽和消耗很重。
- 非分布式的,没有横向扩展能力。所有的节点都有全量数据,增加节点不能提高系统的处理能力。