论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
Oracle
›
【RabbitMQ】之高可用集群搭建
【RabbitMQ】之高可用集群搭建
耶耶耶耶耶
论坛元老
|
2024-11-11 06:50:18
|
显示全部楼层
|
阅读模式
楼主
主题
1650
|
帖子
1650
|
积分
4950
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
一、RabbitMQ 集群简介
1、默认集群原理
1-1、RabbitMQ 集群简介
单台 RabbitMQ 服务器处理消息的本领是有瓶颈的,而且可靠性还无法包管,所以需要通过集群来进步消息的吞吐量和进步数据可靠性。
由于 RabbitMQ 本身是基于 Erlang 编写,而 Erlang 语言天生具备分布式特性(通过同步 Erlang 集群各节点的 erlang.cookie 来实现)。因此,RabbitMQ 自然支持集群,并且还能通过水平扩展节点的方式进步吞吐量。
在一个多节点的 RabbitMQ 集群中,Exchange(互换器)的元数据(Metadata)信息在所有节点上都是一致的,而 Queue(存放消息的队列)的完备数据只会存在于创建它的那个节点上,其他节点只知道这个 Queue 的 Qetadata 信息和一个指向 Queue 的 owner node 的指针(起到消息转发作用)。
1-2、RabbitMQ 集群同步的元数据
RabbitMQ 集群会始终同步以下四种类型的内部元数据:
Queue 元数据:队列名称和它的属性;
Exchange 元数据:互换器名称、类型和属性;
Binding 元数据:一张简朴的表格展示了如何将消息路由到队列;
VHost 元数据:为 VHost 内的队列、互换器和绑定提供定名空间和安全属性;
所以,当用户访问其中任何一个 RabbitMQ 节点时,通过 rabbitmqctl 查询到的 Queue/Exchange/Binding/VHost 等信息都是雷同的。
1-3、为什么 RabbitMQ 集群只同步元数据
第一,存储空间。如果每个集群节点都拥有所有 Queue 的完全数据,那么每个节点的存储空间会非常大,集群的消息积蓄本领会非常弱(无法通过集群节点的扩容进步消息积蓄本领);
第二,性能。消息的发布者需要将消息复制到每一个集群节点,对于消息持久化、网络和磁盘同步复制的开销都会显着增长。
1-4、RabbitMQ 集群发布/订阅消息的基本原理
集群原理图如下:
客户端消息收发有以下两种情况
:
客户端直接连接队列所在的节点
: 如果消息生产者或者消耗者通过 amqp-client 的客户端连接至节点 1 举行消息的发布或者订阅,那么此时的集群中的消息收发只与节点 1相关。
客户端连接的是非队列数据所在的节点
: 如果消息生产者所连接的是节点 2 或者节点 3,此时,由于队列 1 的完备数据不在该两个节点上,所以在发送消息时这两个节点会根据节点上队列 1 的元数据将消息转发至节点1上,终极发送的消息照旧会存储至节点 1 的队列 1 上(这两个节点主要起了一个路由转发作用)。同样,如果消息消耗者所连接的节点在 2 或者 3,那这两个节点也会作为路由节点起到转发作用,将会从节点 1 的队列 1中 拉取消息举行消耗。
1-5、集群节点类型
RabbitMQ 集群节点分为磁盘节点和内存节点两种类型:
磁盘节点
: 将设置信息和元信息存储在磁盘上(单节点系统必须是磁盘节点,否则每次重启 RabbitMQ 之后所有的系统设置信息都会丢失)。
内存节点
: 将设置信息和元信息存储在内存中,性能是优于磁盘节点的。
RabbitMQ 要求集群中至少有一个磁盘节点,当节点加入和离开集群时,必须关照磁盘节点(如果集群中唯一的磁盘节点崩溃了,则不能举行创建队列、创建互换器、创建绑定、添加用户、更改权限、添加和删除集群节点)。
总之如果唯一磁盘的磁盘节点崩溃,集群是可以保持运行的,但不能更改任何东西。因此建议在集群中设置两个磁盘节点,只要一个可以,就能正常操纵。
rabbitMQ的设置文件来指定其他设置,如监听的接口和端口等。RabbitMQ的设置文件通常位于 /etc/rabbitmq/rabbitmq.conf
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
耶耶耶耶耶
论坛元老
这个人很懒什么都没写!
楼主热帖
为什么你应该停止依赖Jenkins的插件? ...
蜻蜓优化算法(Matlab完整代码实现) ...
集合论第6-8章
axios&spring前后端分离传参规范总结 ...
SQL 教程之 10 个 SQL 操作用于 80% 的 ...
关于Maven的使用
Python知识点(史上最全)
腾讯云多媒体文件处理总结
JVM常用调优配置参数
20220319编译OpenHarmony-v3.1-beta出 ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
容器及微服务
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表