跳至主内容

Erlang 24 支持路线图

·5 分钟阅读

TL;DR

  • Erlang 24 将于 5 月发布,它将为 RabbitMQ 用户带来显著的性能提升
  • 同时支持 Erlang 24 和 22 不可行,因此在 2021 年 5 月初,将停止支持 Erlang 22
  • 如果您使用的是 Erlang 22,请立即升级到 23.2:它应该是一个兼容的替代品
  • 使用 RabbitMQ Kubernetes OperatorDocker 社区镜像VMware Tanzu RabbitMQ for VMs 的现代版本的用户不受影响,因为这些项目目前都使用 Erlang 23

Erlang 新版本即将发布

核心团队近期已将 RabbitMQ 适配到 Erlang 24,我们预计它将在五月发布。这是一个重要的版本,RabbitMQ 用户将从中受益。在此过程中,我们得出结论,同时支持 Erlang 22 和 24 是不可行的。我们相信,考虑到 Erlang 24 的优势(见下文),大多数用户会强烈倾向于迁移到 Erlang 24,而不是继续使用 Erlang 22。

因此,Erlang 22 的支持将在比我们标准Erlang 版本支持策略规定的时间提前约三个月停止:2021 年 5 月 3 日。Erlang 24 的正式发布版预计在五月上旬到中旬发布。

您今天应该做什么

为避免任何不便,您可以立即迁移到 Erlang 23。我们预计该版本将至少支持到 2022 年 4 月。Erlang 23 已不再是最新发布的版本,并且已被广大 RabbitMQ 用户广泛使用。例如,Docker 社区镜像提供了最新的 Erlang 23 版本,并且在 RabbitMQ、Erlang 或 OpenSSL 发布新版本时,该镜像会自动重新构建。

Erlang 24 的优势

Erlang 24 带来了一系列积极的变更,这些变更直接或间接影响着几乎所有 RabbitMQ 用户。

性能提升

Erlang 24 在运行时引入了 JIT(即时编译),这使得包括 RabbitMQ 节点在内的真实系统吞吐量显著提升。Erlang/OTP 的维护者和我们的团队都观察到了性能提升,幅度在 35-55% 之间,具体取决于工作负载。由于这可能与每一个 RabbitMQ 用户相关,我们认为其重要性超过了下面描述的几处可能存在的、影响较小的兼容性变更。

安全性提升

Erlang 24 继续改进(成熟)TLSv1.3 支持,这非常重要,因为越来越多的工具开始支持 TLSv1.3 甚至只使用它。

RabbitMQ 开发流程改进

对于贡献者和 RabbitMQ 核心团队来说,Erlang 24 提供了显著的生活质量改进:

  • 编译时间可观的两位数百分比缩减
  • 错误和警告报告信息量大幅增加(源代码数据和格式类似于 clang)
  • 标准库改进(和弃用)

Erlang 24 的变化

上述显著的优势是有代价的,大多数 RabbitMQ 用户无需支付,但有些人需要。

从 3.9 开始,RabbitMQ 将使用 Erlang 24 的日志库,而不是第三方依赖。这个依赖(Lager)多年来一直很好地服务于我们,但现在已不再明显优于标准库选项。此更改不会影响大多数用户,但有两点会发生变化:

  • 日志事件时间戳略有变化
  • 不再支持 Lager 特定的扩展和高级配置

前者可能会影响尝试解析 RabbitMQ 日志的系统。后者将要求那些依赖 Lager 高级接收器配置设置的用户构建一个小插件来提供等效功能。如果您只使用标准日志设置或 Syslog,您将不会丢失任何东西。

那么计划是什么?

RabbitMQ 3.9 (master) 已支持 Erlang 24。2021 年 5 月 3 日,RabbitMQ 3.8 分支将合并 Erlang 24 的支持。这将自动淘汰 Erlang 22 的支持,所有未来的 RabbitMQ 3.8 版本都将需要 Erlang 23。请立即升级到 Erlang 23,以便更平稳地过渡!

请注意,我们预计在 5 月 3 日之前还会发布至少一个兼容 Erlang 22 的补丁版本。

如果您依赖 RabbitMQ 日志解析,当 3.9 版本发布时,其发布说明将包含时间戳格式的更改。

如果您依赖Lager 特定的高级配置设置,您应该能够构建一个小型插件,例如实现自定义后端或使用标准库日志记录 API 进行格式调整,该 API 提供 Lager 所具备的大部分(如果不是全部)功能。

RabbitMQ 的社区 Docker 镜像和 Kubernetes Operator

如果您使用Docker 社区 RabbitMQ 镜像并且最近已更新,那么您已经在运行非常近期的 Erlang 23 版本。大多数RabbitMQ Kubernetes Operator 用户也是如此。该镜像将在 Erlang 24 发布后几周内升级到 Erlang 24,除非发现任何足够严重的 Erlang 24 特有问题。

其他 Docker 镜像可能已经在使用 Erlang 23,但如果您使用其中一个镜像,则需要对此进行验证。

反馈

如果您有任何问题或反馈,请在 RabbitMQ 社区 Slack 的 #usage-questions#core-and-plugin-dev 频道分享:RabbitMQ community Slack

© . This site is unofficial and not affiliated with VMware.