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 官方提供的第二种集群实现模式。

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 模式一定要考虑节点间不同的位置,如果节点之间的距离太远,则会造成节点间通信的延迟。

RabbitMq中的warren模式和shovel模式相关推荐

  1. rabbitmq中的三种交换器(匹配模式)

    direct(直接交换模式) 消息中的路由键(routing key)如果和Binding中的binding key一致,交换器就将消息发到对应的队列中.它是完全匹配,单播的模式. fanout(广播 ...

  2. RabbitMQ中交换机的几种模式

    目录 简述 交换机模式 Fanout模式 Direct模式 Topic模式 Headers模式 简述 生产者不直接跟队列打交道,而是通过交换机.交换机类似于生产者和队列直接的一个管理者,它将生产的消息 ...

  3. RabbitMQ中的生产者消费者与订阅发布者两种模式

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进 ...

  4. RabbitMQ:Shovel模式的搭建和测试

    1.声明 当前内容用于本人学习和复习之用,内容包括创建和使用Shovel模式 当前项目的节点和ip为:Federation中的节点 2.开启Shovel插件 ./rabbitmq-plugins en ...

  5. RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)

    1. simple 模式 simple 模式是最简单最常用的模式 2. work 模式 work 模式有多个消费者 消息产生者将消息放入队列.生产者系统不需知道哪一个任务执行系统在空闲,直接将任务扔到 ...

  6. rabbitmq几种工作模式_RabbitMQ六种队列模式-简单队列模式

    在官网的教程中,描述了如上六类工作队列模式: 简单队列模式:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列.也称为点对点模式. 工作模式:一个消息生产者,一个交换器,一个消息队列,多个 ...

  7. RabbitMQ六种队列模式-简单队列模式

    前言 RabbitMQ六种队列模式-简单队列 [本文] RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列 ...

  8. 【转】RabbitMQ六种队列模式-5.主题模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题 ...

  9. 【转】RabbitMQ六种队列模式-4.路由模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 [本文] RabbitMQ六种队列 ...

最新文章

  1. Unity3D-RayMarch-几何图元0
  2. 青藤云安全张福:我们可以用“免疫系统”对抗黑客入侵吗?
  3. labelimg选中高亮
  4. Tomcat 总体结构
  5. iOS8开发-Swift编程
  6. hdu 4496 D-City 并查集
  7. iOS-更新CocoaPods出现错误 提示重复文件
  8. 01-Python简介
  9. 两步搞定经验模态分解与离散小波变换
  10. Selenium面试问题及答案30题版
  11. 科学巨星的美丽轨迹——走近博弈论大师纳什
  12. 性价比最高处理器和国产处理器I.MX6UL/A40I/T3对比
  13. xampp中MySQL启动错误问题
  14. 百度地图SDK无法定位到当前所在位置;一直显示天安门
  15. 大数据可视化课程笔记 6
  16. 熟知ghost参数 恢复系统没烦恼【xpghost】
  17. JetLinks学习笔记一
  18. mysql exists 使用的意义
  19. 在线升级,下载升级包过程中提示网络异常导致升级失败。
  20. 手游低延迟高性价比蓝牙耳机,300元学生党最爱五款蓝牙耳机

热门文章

  1. 软件实施整体方案之实施进度表
  2. 2021年中国饮料酒行业现状分析:产量有所下降[图]
  3. windows7英文系统如何将电脑屏幕背景色改成保护眼睛的淡绿色
  4. Win10家庭版 傻瓜安装datahub的备忘一则
  5. vue3自定义开发酒店房态时间组件
  6. Kubernetes - CPU 单位
  7. AI会让AI工程师失业吗?
  8. 微信小程序毕业设计论文求职招聘|兼职管理系统+后台管理项目源代码
  9. pycharm远程连接服务器完整教程
  10. SQL注入--利用cookie进行注入