NATS Server v2.15.0-preview.1:JetStream 期望状态金属层,提升资产迁移与扩容安全
NATS Server 发布 v2.15.0-preview.1 预览版。这是即将到来的 2.15 系列的第一个预览版(非正式发布候选,仍在测试中,欢迎反馈),包含截至 v2.14.5 的所有变更。核心新特性是 JetStream 的期望状态(desired state)金属层——一个新的流和消费者期望状态协调引擎,显著提高资产移动(move)和扩缩(scale)操作的安全性与可靠性。本文基于官方发布说明,解读 v2.15.0-preview.1 的关键变更。
版本概况
NATS Server v2.15.0-preview.1:
- 预览版(Pre-release)
- 发布于 2026 年 8 月 24 日
- 自上一版本以来包含 101 个提交到 main
- Go 版本 1.27.0
- 包含截至 v2.14.5 的所有变更
JetStream 期望状态金属层
新的期望状态协调引擎
- 为流(streams)和消费者(consumers)引入新的期望状态协调引擎
- 显著提高资产移动和扩缩操作的安全性与可靠性
- 涉及 PR:#8432、#8437、#8439、#8443、#8452、#8460、#8476
更安全的扩缩操作
- 在现有扩缩/移动操作中途更新放置位置或复制因子变得更安全
- 取消进行中的扩缩/移动更安全
- 移除 peer 更安全
新端点
取消流移动端点($JS.API.STREAM.CANCEL_MOVE)
- 进行中的流扩缩/移动操作可以被取消
- 资产返回其原始放置位置
- 对应 PR #8476
撤离端点($JS.API.SERVER.EVACUATE)
- $JS.API.SERVER.EVACUATE:安全地从节点撤离流及其上的任何消费者
- $JS.API.STREAM.PEER.EVACUATE.*:安全地从流中撤离 peer 及其上的任何消费者
- 这些操作结合允许维护操作实现数据和状态的完整转移,无需先做 peer-remove
- 对应 PR #8443
金属层救援($JS.API.META.RESCUE)
- 用于灾难恢复的金属层救援
- 对应 PR #8408
实践意义
对运维
- 节点维护(撤离)现在可以安全地完整转移数据和状态,无需先移除 peer
- 扩缩中途修改放置/复制因子不再危险
- 取消误操作的扩缩/移动可直接恢复原状
- 灾难恢复有金属层救援路径
对 JetStream 用户
- 资产移动和扩缩的安全性提升意味着更少的运维事故
- 期望状态协调引擎让系统行为更可预测
总结
NATS Server v2.15.0-preview.1 的核心是 JetStream 期望状态金属层:新的期望状态协调引擎显著提高流和消费者资产移动/扩缩的安全性与可靠性,包括中途更新放置或复制因子、取消进行中的扩缩/移动、peer 移除都更安全。配套新端点:$JS.API.STREAM.CANCEL_MOVE(取消扩缩/移动并恢复原放置)、$JS.API.SERVER.EVACUATE 和 $JS.API.STREAM.PEER.EVACUATE.*(安全撤离节点/peer 上的流与消费者,实现完整数据和状态转移而无需先 peer-remove)、$JS.API.META.RESCUE(灾难恢复的金属层救援)。这是 2.15 系列的预览版,仍在测试中。对 NATS JetStream 运维,预览版预示了更安全的运维操作模型:维护、扩缩、恢复都可以在期望状态协调下可靠完成。
来源:https://github.com/nats-io/nats-server/releases/tag/v2.15.0-preview.1