Zero Downtime
2018-08-28 本文已影响0人
春卷_381a
Zero Down Time
蓝绿发布
数据库(关系型数据库)如何兼容蓝绿版本
基本要求
- 不允许删除列
- 不能影响正常的写入更新操作
2.1 因不同的数据库对于锁的处理各有不同,所以无法列出更细的一些规范。
2.2 以PostgreSQL为例:
2.2.1 加列时不能增加默认值/不能加非空列
2.2.2 增加索引时,需要使用CONCURRENTLY 关键字
2.2.3 修改原有列的类型
2.2.4 删除列
2.2.5 不能直接增加唯一约束,需用CONCURRENTLY 增加唯一索引后,再转为唯一约束
2.2.6 不能直接增加主键,需用CONCURRENTLY 增加唯一索引后,再转为主键
2.2.7 VACCUM FULL - 数据迁移时,需做追数据处理。
3.1 需保证数据迁移脚本可重复执行。因在发布的不同阶段都需要执行同一数据迁移脚本。
3.2 Jay : 需补充如何具体实施
应用要求
- 应用必须支持多节点部署。
1.1 服务无状态
1.1.1 web session不存在应用内存中。
1.1.2 服务本地不可存临时文件。
1.2 不可有Schedule Job基于共享数据处理业务,类似于发送message ,先存入数据库,有对应的Schedule Job 从数据库中取出message ,并做业务处理。如业务处理无法满足幂等性,将会出错。