RabbitMQ 4.0 版本弃用公告
在 RabbitMQ 4.0 中,我们计划移除一些 RabbitMQ 功能,以
- 提高核心 Broker 的弹性
- 减少可用的次优配置数量
- 从团队中移除技术表面积(维护旧代码)
- 减轻支持负担
我们不断创新以满足并超越用户的期望。移除不再符合这些期望或为用户服务的旧功能意味着我们可以专注于我们的使命,即提供一个稳定、高性能且灵活的消息传递系统。
我们宣布弃用的功能之所以被选中,是因为(或者)
- 在某些情况下,它们的行为不尽如人意
- 它们很少被使用
鉴于每个功能都有更新、更安全的替代方案来实现相同的结果,我们不认为任何人应该使用这些功能。
本文档旨在解释这些更改,并提供提供反馈的机会。
这些更改何时生效?
我们计划在 RabbitMQ 4.0 版本发布时进行这些更改。目前尚未设定此版本的发布时间表。
在进行更改之前,我们将审查通过调查提供的反馈。
如何提供反馈?
如果您想对此公告提供反馈,请填写此调查问卷。
公告内容
禁用通过管理 API / UI 传递指标
我们为何做出此决定?
管理 API 一直在执行两个功能:控制平面和指标传递系统。这种双重用途意味着在极少数情况下(即极端负载),指标会被延迟。
存在哪些替代方案?
自 2019 年 10 月发布的 3.8 版本以来,Prometheus 插件即使在负载下也能提供指标。它还具有比管理 API 提供的指标更广泛的优点。有关 Prometheus 和 Grafana 仪表板的文档在此。
移除全局 QoS
我们为何做出此决定?
全局 QoS(为整个通道使用单个共享预取)不是推荐的做法。
存在哪些替代方案?
应改为设置按消费者 QoS(非全局)。
移除 RAM 节点
我们为何做出此决定?
RAM 节点将其所有内部元数据保存在内存中,包括用户、策略、队列和 RabbitMQ 集群成员资格。当 Broker 节点重启时,所有这些都将丢失,这意味着不建议在高度可用的集群中使用 RAM 节点,因为它可能导致数据丢失。
存在哪些替代方案?
应将磁盘节点与快速存储一起使用。
移除经典队列镜像
我们为何做出此决定?
与经典镜像队列相比,Quorum 队列提供更高的数据安全性。
存在哪些替代方案?
客户应使用 Quorum 队列来实现复制和数据安全。经典镜像队列的 TTL 可以用流 (streams) 替换。
移除瞬态、非独占队列
我们为何做出此决定?
瞬态队列是其生命周期与声明它们的节点的正常运行时间相关的队列。在单节点集群中,它们在节点重启时被移除。在集群环境中,它们在托管它们的节点重启时被移除。
正确使用瞬态队列要求应用程序开发人员了解一些关于节点正常运行时间的信息。此外,节点重启不是移除未使用队列的好方法。
有一种瞬态队列不在此次弃用范围内;即独占队列。独占队列与其声明连接的生命周期相关联,这是应用程序开发人员可以考虑和利用的。
通过弃用瞬态队列,我们正在移除一个可能令人困惑的队列选项。我们还减轻了启动过程的压力,因为瞬态队列目前在启动时被移除。
存在哪些替代方案?
队列 TTL 应用于自动删除一段时间不活动后未使用的空闲队列。
独占队列:这些队列在移除所有到队列的连接后被删除。
不再对经典队列的发布者确认使用 fsync
我们为何做出此决定?
与使用非镜像经典队列相比,Quorum 队列提供更高的数据安全性,无论是否使用 fsync。与让内核决定何时刷新到磁盘相比,手动调用 fsync 会导致性能下降。
存在哪些替代方案?
客户应使用 Quorum 队列来实现复制和数据安全。
感谢您
感谢您的阅读。如果您对以上内容有任何想法,请填写我们的调查问卷,让我们知道您对拟议变更的看法!