5分钟带你了解RabbitMQ的(普通/镜像)集群

前言

让我们深入探讨RabbitMQ的集群配置,了解各种集群模式的利弊。本次讨论的重点是帮助您快速理解RabbitMQ集群的运作方式,以及选择最适合您需求的模式。好的,话不多说。在RabbitMQ中,即使只有一个节点,该节点的服务也会被作为一个集群来处理。这意味着单节点系统也遵循集群架构的规范,确保一致性和可扩展性。

而多节点的集群有两种方式:普通集群和镜像集群(也称主从集群)。

普通集群

这种模式充分利用了Erlang语言天生具备的集群能力。在这个集群模式中,各个节点共享相同的元数据,例如队列结构,但消息不会冗余存储,而是只存在于某一个节点中。当消费者需要消费消息时,如果请求的节点并不存储所需的数据,RabbitMQ会在节点之间临时传输消息,将数据从存储节点传输到消费节点。

显然,这种集群模式存在一定的消息可靠性问题。当某个节点宕机时,该节点上的数据将无法被消费,必须等待节点恢复后才能继续处理。这可能导致消费者端无法正确应答已经消费的消息,在服务恢复后可能导致消息被重复消费。此外,如果消息未经持久化,重启后消息将会丢失。

另外,这种集群模式不支持高可用性。当某个节点服务故障时,需要手动重启该服务才能确保该节点上的消息能够正常消费。因此,这种模式只适合一些对消息安全性要求不高的场景。在使用这种模式时,消费者应尽量连接到每一个节点,以减少消息在集群中的传输。

镜像集群

这种模式是RabbitMQ官方HA(高可用)方案,在普通集群模式的基础上进行了增强。在搭建普通集群之后,需要进行额外的配置和部署。其本质区别在于,这种模式会在镜像节点之间主动进行消息同步,而不是在客户端拉取消息时临时同步。

在这种模式下,集群内部会通过算法选举产生主节点(master)和从节点(slave)。一旦主节点失效,集群将自动选举出新的主节点,确保整个集群的高可用性。

优缺点

首先看下普通集群

  • 共享元数据:各节点间共享队列结构等元数据,但缺点也很明显消息仅存在于某一个节点
  • 消息在消费时会在节点间临时传输,增加了传输延迟和复杂性
  • 节点宕机时,该节点上的消息无法被消费,且可能导致重复消费,需要手动重启宕机节点以恢复消息消费

再看下镜像模式:

  • 主动消息同步:在镜像节点之间主动进行消息同步,确保每个节点上都存有完整的消息数据。消息的可靠性大大提高,即使单个节点宕机,也不会导致消息丢失。但是集群内部的网络带宽会被主动同步大量占用,可能导致网络拥塞,影响整个集群的性能。
  • 通过选举机制,当主节点故障时,自动选出新的主节点,保证服务的连续性和可用性。

因此,并没有一种万能解决方案,最终还是要根据各业务需求来确定集群方案。例如,在金融交易系统或实时数据处理系统中,建议采用高可用的镜像模式。但如果带宽有限制且没有实时性要求,那么使用默认的普通集群可能更合适。

总结

通过本文我们深入了解了RabbitMQ的集群模式及其优缺点。无论是普通集群还是镜像集群,都有其适用的场景和局限性。

普通集群利用Erlang语言的集群能力,但消息可靠性和高可用性方面存在一定挑战;而镜像集群通过主动消息同步提高了消息的可靠性和高可用性,但可能会占用大量网络带宽。

因此,在选择集群方案时,需要综合考虑业务需求、系统性能和资源限制等因素。唯有根据实际情况来灵活选择最适合的方案,以确保系统的稳定性和可靠性。

相关推荐
代码改善世界2 小时前
【前瞻创想】Kurator:驾驭分布式云原生世界的“统一舰队”
分布式·云原生
行走正道2 小时前
【前瞻创想】标准之争:论Kurator在分布式云原生API标准化中的潜在角色
分布式·api·kurator·标准化·策略驱动
代码改善世界2 小时前
【探索实战】从零到一:Kurator 构建分布式云原生平台的探索与实践
分布式·云原生
9***Y483 小时前
后端在分布式中的Apache Kafka
分布式·kafka
初学者,亦行者3 小时前
【前瞻创想】集成与创新并举,引领分布式云原生新范式
分布式·云原生
i***58673 小时前
【RabbitMQ】超详细Windows系统下RabbitMQ的安装配置
windows·分布式·rabbitmq
小马过河R3 小时前
tRPC-GO 框架Helloworld实践初体验
开发语言·分布式·后端·架构·golang·gin·beego
小程故事多_804 小时前
Kthena 引爆云原生推理革命:K8s 分布式架构破解 LLM 编排困局,吞吐狂飙 273%
人工智能·分布式·云原生·kubernetes·aigc
西岭千秋雪_4 小时前
Kafka服务端日志梳理
java·分布式·zookeeper·kafka
初学者,亦行者4 小时前
【探索实战】从 30 分钟搭建到生产落地,分布式云原生管理新范式
分布式·云原生