RabbitMq中的warren模式和shovel模式

Warren 集群模式:

Warren 集群模式,其中文含义为主备集群模式。那么什么是主备呢?

我们先来看一下主备的基础概念,主备这一名词的诞生并不是在我们所熟知的计算机领域,而是首先出现在我们的日常生活中,对一个具体问题提供了一个或多个解决方案。

对于要解决的一个具体问题而言,主备名词中的主,表示解决这一问题的首选方案,也可以理解为主要方案,即我要解决这个问题,我应该首先就使用这一首选方案;而主备名词中的备,则表示解决这一问题的备选方案,也可以理解为辅助方案,即当这一问题无法使用首选方案来解决时所采取的一种或多种辅助方案。

随着我们计算机领域不断地发展,以及逐渐增长的项目复杂度,主备这一名词逐渐渗透到我们的计算机领域中。在计算机领域中,主备往往表示的仅是集群的一种实现方式,或者架构模式,并不是 RabbitMQ 所特有的专业名词, 那么主备模式在 RabbitMQ 中到底是什么含义呢?

主备模式,在 RabbitMQ 中被称为 Warren 模式,即当我们需要部署 RabbitMQ 集群时,我们需要指定一个主 RabbitMQ Server 节点,然后指定两个或两个以上的从 RabbitMQ Server 节点,并且在主节点和从节点之间,通过一定的技术手段来实现主从节点间的通信,这一过程就是 RabbitMQ 中的 Warren 主备模式,其主备模式架构如下图所示:

从上图中我们可以看到,当消费者来消费 RabbitMQ 中的消息时,由于我们设置了主备集群模式,所以消费者会首先从主节点中获取消息并消费,如果主节点由于其他原因而挂掉了,或者主节点的服务器本身宕机了,那么消费者会继续从 RabbitMQ 从节点-1,RabbitMQ 从节点-2 去获取消息并消费,以此类推。

这就实现了一种,当主节点由于种种原因不能正常提供服务时,从节点还能继续提供服务的场景。

Tips:

  1. 主备模式中所有的 RabbitMQ Server 节点均分布在不同的服务器上,但是所有节点间的数据存储却是共享的,这也就是为什么从节点还能继续提供服务的原因;
  2. 主备模式是 RabbitMQ 官方提供的最基础的一种集群模式,但是确不是实际项目中经常使用的一种集群模式,同学们只需要对主备模式的概念有一个了解即可。

Shovel 集群模式:

Shovel 模式,其中文含义为远程模式,是 RabbitMQ 官方提供的第二种集群实现模式。

扫描二维码关注公众号,回复: 14760098 查看本文章

Shovel 远程模式的概念类似于上述的 Warren 主备模式,只不过他们的集群策略是不同的。Shovel 远程模式的实现,也是需要部署多个 RabbitMQ Server 节点,并且在不同的 RabbitMQ Server 节点中建立节点间的通信机制,以达到使用多个 RabbitMQ Server 节点的目的。

而无论是 Shovel 远程模式,还是 Warren 主备模式,都需要消费者通过远程的方式来调用相应的节点,来获取并消费消息,只不过 Shovel 模式在远程调用时多添加了一种集群策略。

Shovel 远程模式节点的部署不同于 Warren 主备模式,在部署 Shovel 远程模式时,通常需要我们根据地域环境来抉择所需要部署的节点所在位置,并考虑多个远程模式节点之间的通信成本,成本越小当然也就是最好的了,而 Warren 主备模式则不需要考虑地域这一因素,Shovel 远程模式的架构如下图所示:

从上图中我们可以看到,我们根据不同的地理位置,分别声明了三个节点,分别是北京节点、唐山节点,以及保定节点,这三个区域的地理位置挨得很近,很适合部署 Shovel 远程集群模式。

在我们的生产者将消息推送到 RabbitMQ Server 节点,也就是上图中的北京节点时,如果位于北京节点的 RabbitMQ Server 服务器的压力正常,则消息会被推送到 RabbitMQ 北京节点;如果 RabbitMQ 北京节点的服务器压力过大,或该节点中的 RabbitMQ 消息队列已满,则消息会被推送到与之相连的唐山节点,以此类推,直到保定节点。

在 RabbitMQ 中,上图中的 RabbitMQ 北京节点被称为远程主节点,而 RabbitMQ 唐山节点和 RabbitMQ 保定节点则被称为远程备用节点,这一点和主备模式的概念相似。

Tips:

  1. 远程模式虽然提供了对不同节点的 RabbitMQ Server 压力检测的功能,但是其配置起来过于繁琐,所以在实际工作中使用的也不是很多;
  2. 配置 Shovel 模式一定要考虑节点间不同的位置,如果节点之间的距离太远,则会造成节点间通信的延迟。

猜你喜欢

转载自blog.csdn.net/GBS20200720/article/details/127764969