跳至主内容

RabbitMQ 中 Khepri 作为默认元数据存储的路线图

·3 分钟阅读

Khepri,RabbitMQ 新的基于 Raft 的 元数据存储,在 RabbitMQ 4.0 中已获得完全支持。从下一个发布系列 RabbitMQ 4.2 开始,我们认为 Khepri 已足够成熟,可以成为默认的元数据存储,尤其考虑到其在数据安全性和恢复性方面相比 Mnesia 有了显著的改进。

我们进行了一系列基准测试,显示在许多元数据操作中性能得到了显著提升。下文附有对比表格。

Khepri 功能标志现已稳定

khepri_db 功能标志已升级为 Stable,这意味着在运行 rabbitmqctl enable_feature_flag all 命令后,该标志将被启用。该命令应在每次成功升级版本后执行。

从 4.2 版本开始,强烈建议所有 RabbitMQ 集群通过启用 khepri_db 功能标志来采用 Khepri。此功能标志在 4.2 及更高版本升级时 **很可能成为强制性要求**。

虽然最终决定取决于社区反馈,但我们预计从 RabbitMQ 4.3 开始,khepri_db 功能标志将 升级Required

功能标志子系统

RabbitMQ 的 功能标志子系统 最近得到了改进,引入了一种新的功能标志类别,称为 Soft Required。如果一个功能标志从 N 版本开始为 Soft Required,则在所有 RabbitMQ 节点都升级到 RabbitMQ N 版本后,该标志将自动启用。这与以前 Required 的行为不同,在以前,在 N 版本中变为必需的功能标志必须在升级到 N 版本之前启用。

尽管如此,我们仍建议尽快启用功能标志,一旦它们变为 Stable,通常在成功升级后立即通过运行 rabbitmqctl enable_feature_flag all 命令。然而,我们认为引入 Soft Required 功能标志是一种用户体验的改进,因为任何未启用的必需功能标志将在需要时自动启用。

Khepri 性能提升

以下基准测试是在 Kubernetes 上运行的 3 节点集群上进行的

1000 个队列,每个队列有 100 个绑定

基准测试mnesiakhepri
导入446 秒51 秒
重新导入16 秒46 秒
停止应用1.6 秒1.7 秒
启动应用22 秒4.3 秒
滚动集群重启108 秒67 秒
mnesia 到 khepri 迁移12.7 秒

1000 个 Vhost

基准测试mnesiakhepri
导入284 秒21 秒
重新导入2.2 秒2.2 秒
停止应用2.6 秒2.4 秒
启动应用419 秒16 秒
滚动集群重启1447 秒106 秒
mnesia 到 khepri 迁移5.5 秒

100,000 个经典队列

基准测试mnesiakhepri
导入76 秒76 秒
重新导入5.4 秒5.3 秒
停止应用13 秒6 秒
启动应用26 秒40 秒
滚动集群重启185 秒307 秒
mnesia 到 khepri 迁移9.7 秒

10,000 个仲裁队列

基准测试mnesiakhepri
导入49 秒46 秒
重新导入1.9 秒1.8 秒
停止应用1.9 秒1.7 秒
启动应用44 秒44 秒
滚动集群重启285 秒267 秒
mnesia 到 khepri 迁移4.7 秒

1,000 个流

基准测试mnesiakhepri
导入3.5 秒1.2 秒
重新导入1.6 秒1.2 秒
停止应用1.9 秒1.2 秒
启动应用2.5 秒2.3 秒
滚动集群重启56 秒55 秒
mnesia 到 khepri 迁移5 秒
© . This site is unofficial and not affiliated with VMware.