47.什么是元数据?元数据分为哪些类型?包括哪些内容?

在非 Cluster 模式下,元数据主要分为:

  • Queue 元数据(queue 名字和属性等)
  • Exchange 元数据(exchange 名字、类型和属性等)
  • Binding 元数据(存放路由关系的查找表)
  • Vhost 元数据(vhost 范围内针对前三者的名字空间约束和安全属性设置)。

? 与 Cluster 相关的元数据有哪些?元数据是如何保存的?元数据在 Cluster 中是如何分布的?

在 Cluster 模式下,还包括 Cluster 中 node 位置信息和 node 关系信息。

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

下图所示为 queue 的元数据在单 node 和 cluster 两种模式下的分布图:

分布图

分布图

? RAM node 和 Disk node 的区别?

  • RAM node 仅将 fabric(即 queue、exchange 和 binding等 RabbitMQ基础构件)相关元数据保存到内存中,但 Disk node 会在内存和磁盘中均进行存储。
  • RAM node 上唯一会存储到磁盘上的元数据是 Cluster 中使用的 Disk node 的地址。并且要求在 RabbitMQ Cluster 中至少存在一个 Disk node 。