通常,为了系统的稳定性,系统发布我们都会做金丝雀发布或者分批发布。在系统发布过程中,如果观察金丝雀发现存在问题,则我们需要即刻回滚,减少对用户的影响,这时我们就需要“发布中回滚”功能。
例子:
比如正式环境有2个应用实例,发布过程中,由于代码问题导致1个应用实例异常下线,此时状态变成:1 个正常,1个异常;发布中回滚,会将异常的实例恢复到之前正常的情况,而原本就正常的应用实例则不会进行任何操作,不会造成服务不在线
简单来说,发布中回滚就是:将当前环境回滚到这个环境最近一次的发布成功的发布单所对应的状态(扩缩容的发布单除外,因为扩缩容不会造成配置或代码的变更),部署配置以及代码包都和最近一次的发布成功的发布单一致。
例子:
a) 在发布单25527分批发布过程中,第一批发布完成后,我们发现了问题并且需要回滚,因此点击发布单中的“回滚”按钮;
b) 这时候产生了25530的回滚发布单,如回滚单上描述,系统回滚到了之前的发布单25515当时所对应的状态。为什么不是最近的25520发布单呢?因为25520发布单属于扩缩容,而扩缩容不会造成配置或代码的变更。