21、高级持续交付实践指南

高级持续交付实践指南

1. 非向后兼容变更处理

非向后兼容变更处理起来更为困难。例如,如果数据库变更 v11 是不向后兼容的,那么将服务回滚到 1.2.7 版本就会变得不可能。为了实现回滚和零停机部署,我们可以将非向后兼容变更转换为在一定时间内向后兼容的变更,具体做法是将架构迁移拆分为两部分:
- 立即执行的向后兼容更新,通常意味着保留一些冗余数据。
- 在回滚期之后执行的非向后兼容更新,回滚期定义了我们可以将代码回退的范围。

1.1 删除列的示例

以删除列为例,可按以下两步操作:
1. 在源代码中停止使用该列(v1.2.5,向后兼容更新,先执行)。
2. 在回滚期之后从数据库中删除该列(v11,非向后兼容更新,后执行)。

这样,直到数据库 v11 版本的所有服务版本都可以回滚到任何先前版本,从服务 v1.2.8 开始的服务只能在回滚期内回滚。这种方法虽然看似只是延迟了列的删除,但解决了回滚和零停机部署的问题,降低了发布风险。若将回滚期设置为合理时间(如每天多次发布时设置为两周),风险可忽略不计。

1.2 重命名列的示例

以计算器服务中重命名 result 列为 sum 为例,步骤如下:
1. 添加新列到数据库 :创建 src/main/resources/db/migration/V3__Add_sum_column.sql 迁移文件:

alter table 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值