收集的RabbitMQ相关知识点

本文详细解答了RabbitMQ的相关知识点,包括broker、cluster的定义,元数据的类型、分布及保存方式,RAM node与disk node的区别,以及RabbitMQ中queue、exchange、channel、vhost的作用。此外,还探讨了cluster中声明queue、exchange和binding的差异,以及client连接、node失效的影响。最后,解释了为何在某些场景下不建议使用disk node,并分析了message持久化、死信queue和避免blackholed问题的方法。
摘要由CSDN通过智能技术生成

问题一:RabbitMQ 中的 broker 是指什么?cluster 又是指什么?

答:broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用

程序。cluster 是在 broker 的基础之上,增加了 node 之间共享元数据的约束。

问题二:什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据

有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的?

答:在非 cluster 模式下,元数据主要分为 Queue 元数据(queue 名字和属性等)、

Exchange 元数据(exchange 名字、类型和属性等)、Binding 元数据(存放路由关系的查

找表)、Vhost 元数据(vhost 范围内针对前三者的名字空间约束和安全属性设置)。在

cluster 模式下,还包括 cluster 中 node 位置信息和 node 关系信息。元数据按照 erlang

node 的类型确定是仅保存于 RAM 中,还是同时保存在 RAM 和 disk 上。元数据在

cluster 中是全 node 分布的。

问题三:RAM node 和 disk node 的区别?

答:RAM node 仅将 fabric(即 queue、exchange 和 binding 等 RabbitMQ 基础构件)相

关元数据保存到内存中,但 disk node 会在内存和磁盘中均进行存储。RAM node 上唯一

会存储到磁盘上的元数据是 cluster 中使用的 disk node 的地址。要求在 RabbitMQ cluster

中至少存在一个 disk node 。

问题四:RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?

答:可以认为是无限制,因为限制取决于机器的内存,但是消息过多会导致处理效率的下

降。

问题五:RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对应着进程实体?这些东东分别起什么作用?

答:queue 具有自己的 erlang 进程;exchange 内部实现为保存 binding 关系的查找表;

channel 是实际进行路由工作的实体,即负责按照 routing_key 将 message 投递给

queue 。由 AMQP 协议描述可知,channel 是真实 TCP 连接之上的虚拟连接,所有

AMQP 命令都是通过 channel 发送的,且每一个 channel 有唯一的 ID。一个 channel 只

能被单独一个操作系统线程使用,故投递到特定 channel 上的 message 是有顺序的。但

一个操作系统线程上允许使用多个 channel 。channel 号为 0 的 channel 用于处理所有

对于当前 connection 全局有效的帧,而 1-65535 号 channel 用于处理和特定 channel 相

关的帧。AMQP 协议给出的 channel 复用模型如下

其中每一个 channel 运行在一个独立的线程上,多线程共享同一个 socket。

问题六:vhost 是什么?起什么作用?

答:vhost 可以理解为虚拟 broker ,即 mini-RabbitMQ server。其内部均含有独立的

queue、exchange 和 binding 等,但最最重要的是,其拥有独立的权限系统,可以做到<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值