集群
仲裁(Quorum)队列
1、概述
(1)实现基于 Raft 共识算法的持久、复制的 FIFO 队列
(2)从 RabbitMQ 3.8.0 开始可用
(3)Quorum 队列 + Streams 取代持久的镜像队列,即最初的复制队列类型,该队列现在已被废弃并计划被移除
(4)Quorum 队列是复制队列类型的默认选项
(5)对于那些受益于复制、可重复读取的情况,Streams 可能比 Quorum 队列更好
2、声明
(1)将 x-queue-type 队列参数设置为 quorum,默认为 classic
(2)参数必须由客户端在队列声明时提供,它不能使用策略来设置或改变,因为策略可以动态地改变,但队列类型不能,它必须在声明时被指定
(3)声明一个 x-queue-type 参数设置为 quorum 的队列,将声明一个最多有 5 个副本(默认复制因子)的 quorum 队列,每个集群节点一个
(4)在声明之后,一个 Quorum 队列可以像任何其他 RabbitMQ 队列一样,被绑定到任何交换
(5)如果使用 Management UI 进行声明,必须使用队列类型下拉菜单指定队列类型
HAProxy
1、提供高可用性、负载均衡,基于 TCP、HTTP 应用的代理,支持虚拟主机,免费、快速、可靠的一种解决方案
2、实现一种事件驱动、单一进程模型,此模型支持非常大的井发连接数
Keepalived
1、确保负载均衡服务的可靠性
2、通过自身健康检查、资源接管功能,做高可用(双机热备),实现故障转移
Federation Plugin
1、作用
(1)允许联合交换机、队列,一个联合交换机或队列,可以从一个或多个上游(其他 Broker 的远程交换机和队列)接收消息
(2)一个联合交换机可以将上游发布的消息,路由到本地队列
(3)一个联合队列可以让本地消费者,接收来自上游队列的消息
(4)使用 RabbitMQ Erlang 客户端连接到上游,因此,它们可以使用 TLS / 多种认证机制,连接到一个特定的 vhost
2、开启
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
(1)在集群中使用联合时,集群的所有节点都应启用联合插件
(2)有关联合上游的信息与用户、权限、队列等一起存储在 RabbitMQ 数据库中
(3)在联合中涉及三个级别的配置
(4)上游:每个上游定义了一个远程连接端点
(5)上游集:每个上游集将一组上游组合起来,用于联合
(6)策略:每个策略选择一组交换机 / 队列 / 两者都选,并对这些对象应用单个上游或上游集
(7)在开发中,对于简单的用例,几乎可以忽略上游集的存在,因为有一个隐式定义的上游集,叫做 all,所有的上游都被加入其中
(8)上游、上游集都是运行时参数的实例,像交换机和队列一样,每个虚拟主机都有自己独特的参数和策略集
(9)参数、策略的三种方式设置:通过调用 rabbitmqctl、调用管理 HTTP API(支持不完整,特别是不支持管理上游集)、(通常)通过 rabbitmq_federation_management 提供的 web UI
Federated Exchanges
1、允许通过一个上游交换机的信息流,被复制到下游交易所
(1)下游是独立的节点或集群,可以横跨广域网络(地理区域)
(2)复制过程是异步的,可以容忍连接失败
2、一个联合交换机链接到其他交换机
(1)从概念上讲,发布到上游交易所的信息,会被复制到联合交易所,就像它们直接发布到联合交易所一样
(2)上游交易所不需要被重新配置,它们被认为是位于一个单独的节点上,或一个单独的集群中
(3)上游定义是一个 URI,具有某些公认的查询参数,控制链接连接参数
(4)上游可以使用 CLI 工具,或带有额外插件的 HTTP API 进行管理
Federated Queues
1、在节点或集群之间,平衡单个逻辑队列的负载
2、实现:在本地队列没有消费者时,将消息转移到其他联合对等体(节点或群集)
3、联合交换机将其消息流,从上游复制到一个或多个下游
4、联合队列则将数据转移到消费者所在的地方,总是倾向于本地消费者,而不是远程消费者
(1)联合队列被认为是平等的对等物,它们之间不存在像联合交换机的 leader / follower 关系
(2)一个联合队列链接到它的其他联合对等体(上游队列),它将从上游队列检索消息,以满足本地消费者对消息的需求
(3)上游队列不需要被重新配置,它们被假定位于一个单独的节点上,或一个单独的集群中
(4)上游定义是一个 URI,具有某些公认的查询参数,控制链接连接参数
(5)上游可以使用 CLI 工具,或 HTTP API 与一个额外的插件进行管理
Shovel Plugin
1、类似 Federation Plugin,可将消息从源点,持续地、单向移动到目的地
2、允许自定义以下过程
(1)连接到源集群和目的集群
(2)从队列中获取消息
(3)重新发布到一个目的地
(4)在两端使用数据安全功能,并处理故障
3、开启
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战