rabbitmq集群中 磁盘节点和内存节点区别

为何需要分析区别?

理解 集群节点 存储类型 有利于理解 集群中各个模式的运行机制; 从而根据自己业务 选择不同存储类型的节点 和 选择 持久化或非持久化 的队列;

 

官方原文链接:https://www.rabbitmq.com/clustering.html#cluster-node-types

 

磁盘节点和 内存节点(Disk and RAM Nodes)

一个节点可以是内存或磁盘节点类型;内存节点只在内存中存储 内部数据库表, 不包括 消息,消息存储索引,队列索引和其他节点状态;

多少情况下,用户会希望所有节点是 磁盘节点; 内存节点是一种特殊的存储类型,主要用来 通过 exchange(交换机),binding churn,队列 等提高集群性能; 内存节点 不会提高消息速率.当有疑问时,请只使用磁盘节点

 

使用内存节点的集群(Clusters with RAM nodes)

内存节点只将 元数据 保存在内存中. 内存节点 不用像磁盘节点那样写入磁盘,因此 可以表现的更优秀. 然而, 由于持久化队列的数据 总是存储在磁盘上,所有 只会对资源管理(如添加删除 队列,交换机,vhost等)的 性能得以提升,对于 生产和消费 消息的速度不会有任何提升;

内存节点 是高级别用法;在用户设置第一个集群时,最好别用内存节点,用户应该 有足够的磁盘节点 出来荣誉的需求,然后 如果需要可以添加额外的 内存节点 用以扩展集群;

一个集群如果只有内存节点则不能提供稳定的服务;如果集群停止 会丢失 包括队列,交换机等等 任何所有的数据; rabbitmq在多少情况下会阻止创建只有内存节点的集群,但是 无法绝对阻止这种骚操作;

 

总结:

内存节点 只是 将 元数据 存在内存中; 磁盘节点 只是 将 元数据 存在磁盘中; 对于 队列(queue),消息(message) 的 持久化或非持久化 方式 和 磁盘节点/内存节点 没有任何关系,持久化就存磁盘,非持久化就存内存;

在持久化队列中,无论 选择哪种节点存储类型, 消息存取 速度没有任何区别; 言下 之意 在非持久化队列中, 消息存取会得到很大提升,但是 会出现 重启消息丢失的情况(无论节点存储类型);

因此 在 镜像模式中, 某些 非至关重要的 队列需求中,可以将 队列的 生产者 消费者 设置为 非持久化,再加上 好几个节点 进行容错, 在 只要不是狗屎运的情况下(所有节点都同时宕机),应该能 得到 很好的 消息存取速率,和保证消息不丢失;

 

### RabbitMQ节点集群搭建教程 #### 准备工作 为了成功构建RabbitMQ节点集群,需准备三个服务器实例或者虚拟机来作为集群中的各个节点。确保这些机器之间可以互相通信,并且安装有相同版本的ErlangRabbitMQ软件包。 #### 配置 Erlang Cookie 文件同步 在所有计划成为集群成员的主机上,必须保证`.erlang.cookie`文件的内容一致。这可以通过复制其中一个节点上的cookie文件到其他两个节点上来完成[^2]: ```bash scp /var/lib/rabbitmq/.erlang.cookie user@node2:/var/lib/rabbitmq/ scp /var/lib/rabbitmq/.erlang.cookie user@node3:/var/lib/rabbitmq/ ``` #### 停止并启动 RabbitMQ 服务 对于每一个新加入集群节点,在执行任何操作之前应该先停止其本地运行的服务再重新启动它以便应用最新的配置更改: ```bash systemctl stop rabbitmq-server.service systemctl start rabbitmq-server.service ``` #### 加入现有集群 当新的节点准备好之后就可以通过命令让它们加入已存在的集群当中去了。这里假设第一个节点名为`rabbit@p_cluster1`,那么后续节点可使用如下指令连接至该主节点形成集群关系: ```bash rabbitmqctl join_cluster --ram rabbit@p_cluster1 ``` 此过程会使得当前节点变为内存型(即RAM节点),这类节点主要用于提高性能而不存储持久化数据;如果希望创建磁盘类型的副本,则去掉`--ram`参数即可。 #### 更新集群状态信息 一旦所有的节点都加入了集群,应当再次确认整个系统的健康状况以及各组件之间的协作情况。可通过管理插件提供的Web界面查看集群的状态,也可以利用CLI工具查询集群成员列表其他相关信息。 #### 实现高可用性 除了基本的功能外,还可以进一步优化设置以增强系统的稳定性可靠性。例如启用自动故障转移机制、定期备份重要数据等措施都可以有效提升整体服务水平[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值