当前位置:   article > 正文

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

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) 的 持久化或非持久化 方式 和 磁盘节点/内存节点 没有任何关系,持久化就存磁盘,非持久化就存内存;

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

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/436786
推荐阅读
相关标签
  

闽ICP备14008679号