Redis 发布周期(译文)

205 阅读4分钟

:本博客由「柏油」翻译自 redis.io/docs/about/… , 转载请注明出处!

译文如下:

Redis release cycle

Redis 发版周期

Redis 新版本如何发布的?

Redis 是系统软件,并且是处理用户数据的软件,也就是说,它处于软件栈关键的一环上。

基于此,Redis 版本周期以较慢的迭代速度为代价,来保证新版本较高的稳定性。

Redis 各发布版本都放在 Redis Github 仓库, 可以通过链接 下载 ,相关公告会通过邮件或者 twitter 账号通知。

发布周期

一个正式的 Redis 版本会存在 3 种不同的稳定性版本:

  • Unstable:不稳定版本
  • Release Candidate:候选版本
  • Stable:稳定版本

不稳定版

Redis Github 仓库 中专门使用了名为 unstable 的分支来表示「不稳定版」

该分支包含当下「最新特性」开发,不会考虑立即投入生产使用:

  • 可能包含致命 BUG
  • 特性功能不够完整
  • 其他潜在风险等

不过,我们也尽量保证「不稳定版」在开发环境的大部分情况下都是稳定可用的,至少不会出现重大缺陷。

候选版本

大版本小版本 发版都需要先从「不稳定版」Fork 分支,并且将分支名定义为目标版本号。

例如,当选择 Redis 6.0 作为一个「候选版本」发布时,先从「不稳定版」分支 Fork 一个新分支,分支名为 6.0

注:从 unstable 分支 fork 出来的目标发行版距离真正可发行时间点,需要经历漫长的验证周期,一般情况下,会经历多个 RC 版本,比如,redis6.2 的稳定版经历了 6.2-rc1、6.2-rc2、6.2-rc3 等三个候选版本,最终发布 redis 6.2.0 稳定版本。

在当前版本发布时间范围内,对于一些提交到 unstable 分支并且已经稳定的「BUG修复」和「新特性」也会合并到当前版本的 RC 分支内。

值得注意的是,unstable 分支可能包含了额外的功能,并计划在未来某个版本发布,也就是说,这些功能就不会合并到当前进行中的 RC 版本了。

当第一个候选版本(RC1)发布时,就可以直接部署进入测试阶段了,在这个阶段,新版本带来的「特性」和「修改」都会进一步得到验证,RC 版本主要的目的是收集公众反馈,即「公测」。

后续候选版本大概 3周 发布一次,主要是「BUG修复」,当然也会包含少量「特性」或者「修改」,随着 RC 版本的迭代,这些更新会持续减少,直到 Final RC 版(即稳定版)

稳定版

经过多轮 RC 迭代验证 + 修复,最终进入 Final Release 版,此时,该 Release 会被标记为stable,同时,使用 "0" 表示补丁版本号,比如 6.2.0(6 代表大版本号,2 代表小版本号,0 代表补丁版本号)。

版本:

版本号:stable 稳定版采用 major.minor.patch 三段版本号,主要目的是为了明确保证后向兼容性。

补丁版本

patch。主要是「BUG修复」或者少量的「兼容性」问题。

当然,只要不产生重大影响或引入与操作相关的问题,就可以添加新特性和配置指令,或更改默认值。

值得注意的是,从上一个补丁升级到当前补丁是非常安全且平滑的。

小(次)版本

Minor。通常是提供成熟和扩展的功能。

小版本之间的升级不会引入任何应用程序级别的兼容性问题。

小版本可能引入与操作相关的不兼容性的新命令和数据类型,包括数据持久性格式和复制协议的更改。

大(主)版本

Major。主要版本引入了新功能和重大更改。

理想情况下,这些不会引入应用程序级别的兼容性问题。

发布时间表

一个新的大版本计划每年发布一次。

通常情况下,每个大版本发布后,6个月后都会有一个小版本。

补丁会在需要时发布,以修复高度紧急的问题,或者在稳定版本积累了足够的补丁后发布。

支持

一般来说,无法完全兼容旧版本,我们只能尽量做到大部分 Redis API 向后兼容性。

通常我们是推荐升级到最新版本,操作也十分简单,最新的稳定版本通常会得到充分的支持和维护。

一般情况下,只有两个稳定版本会继续维护,主要维护「BUG修复」或者「安全相关的issue」并作为补丁发布。

  • 当前稳定版的前一个小版本,继续维护
  • 当前稳定版本的前一个大版本,继续维护。

例如,考虑以下版本:1.2, 2.0, 2.2, 3.0, 3.2

  • 当 2.2 是目前最新稳定版时,版本 1.2 和 2.0 继续维护
  • 一旦 3.0 成为最新稳定版时,版本 2.0 和 2.2 继续维护,而 1.x 则停止维护
  • 当 3.2 成为目前最新稳定版时,版本 2.2 和 3.0 继续维护

以上是指导方针,不是一成不变的规则,不能取代常识。