RabbitMQ 分布式系统

RabbitMQ支持的amqp或者其他消息传递协议(通过插件)生来就是分布式的,多个机器链接到一个中间人(RabbitMQ服务器)上是很常见的,有时需要RabbitMQ中间人本身也是分布式的,则有三种形式:

集群

集群是多个机器(erlang结点)连接在一起作为一个逻辑上的中间人,通过erlang的消息系统通信,所以集群中的所有结点需要有相同的erlang cookie,之间的网络连接必须稳定,同时集群中的机器上安装的RabbitMQ和erlang版本相同。

虚拟机、exchange、user、权限等设置会自动在集群中的所有结点共享,客户端连接到任意结点都可以获得集群中的所有信息。一般来说使用集群方式是为了高可用性或增加吞吐量,所以机器一般是在一个机房内。

复制

所有的数据和状态在所有结点之间都是相同的,但是队列不是,尽管所有结点都知道这些队列的存在,但是默认只有一个结点有该队列,可以配置该行为(通过高可用性中的配置)。

另外需要主机名的解析

复制队列

默认队列是存储在第一个声明队列的结点上,相对于exchange和binding来说(他们是可以视为所有结点上都有)。可以设置为一个主节点,其他结点为从节点,在主节点挂掉后可以得到新的主节点。而发送到复制队列上的消息是会发送给所有节点的,而接收者无论是连接到哪个节点,都是把ack发送给主节点的。

联邦

联邦允许一个exchange或队列,在收到消息后转发给另一个exchange或队列,通过amqp协议来通信,所以还需要合适的用户和权限设置。

shovel

相比联邦可以提供更多的控制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于消息队列,从前年开始断断续续看了些资料,想写很久了,但一直没腾出空,近来分别碰到几个朋友聊这块的技术选型,是时...
    预流阅读 586,113评论 51 787
  • RabbitMQ 原理介绍及安装部署 标签:RabbitMQ 安装 简介 RabbitMQ 是一个用 Erlang...
    神仙CGod阅读 12,732评论 0 60
  • 整体架构 部署步骤 基于 Docker 基本概念内存节点只保存状态到内存,例外情况是:持久的 queue 的内容将...
    mvictor阅读 14,369评论 5 30
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 10086好阅读 1,036评论 0 0

友情链接更多精彩内容