1. 引言
2. 发布方案
2.1、发布流程线
神兵发布主流程图:
说明:
1、发布流水自定义发布节点,根据用户需求新增DEV\UAT\LPT等各环境。
2、发布流水建议先部署双活环境,再部署正式环境。
3、目前神兵已支持双活发布,配置即可。(具体咨询对应的版本经理)。
神兵发布实现效果图:
2.2、应用与配置架构
目前同城双活方案中双活环境、主环境各自连接所属IDC的配置中心,两配置中心之间是隔间的。
如图所示:
2.3、程序组件发布
程序组件发布注意点:
1、双活环境第一次发布时,需求把主环境pafa管控后台组件包仓库同步到双活环境。
程序组件包分为二类:
组件包sar发布与目前的主环境的发布相同。只要在项目的父pom.xml有依赖的组件sar,神兵发布自动发布到Pafa组件仓库中。
如图所示:
说明:组件包sar、组件依赖包jar都可以手动上传到Pafa组件仓库中,在这推荐自动化的方式发布。
2.4、配置文件发布
配置文件发布注意点:
各配置中心发布过程:
1、Apollo配置中心
Apollo配置的发布与主环境的发布一样。
(apollo暂时只能通过手工发布,无自动化发布工具)
2、Pafa配置中心
Pafa配置中心可以通过神兵发布,神兵发布时会把配置文件夹发布的Pafa 配置中心的对应目录。
A、两环境差异配置项分离后,差异配置项放到全局变量管理或apollo的pizza.properties。
神兵发布时一套配置文件(paconfigs_prd)发布到双活IDC配置中心 Pafa配置中心和主IDC Pafa配置中心。

神兵发布时两套配置文件(paconfigs_prd1,paconfigs_prd2)分别发到双活IDC配置中心 Pafa配置中心、主IDC Pafa配置中心。

3、本地环境配置
本地环境配置在应用服务器的pizza.properties文件在存放环境差异配置项,强烈建议把pizza.properties放到apollo上,减少配置项变更的成本。
2.5、数据库脚本发布
数据库脚本只需发到数据Master节点,数据库master-slave同步机制到所有的Slave。
1、DB脚本手工发布
数据库运维-->跳板机-->登录主数据执行数据脚本,master-slave同步机制到所有的Slave。
2、DB脚本自动化发布(推荐使用)
DB脚本自动化发布是利用maven插件hubble-maven-dbgo及dbgo平台实现。
DBGO平台连接Master数据库执行数据脚本,master-slave同步机制到所有的Slave。
3. 问题和挑战
1、一次打包发多环境
在自动化发布系统中打包是较为复杂的过程,即使相同的代码,多次打包都是有风险的。神兵发布的过程中配置一条流水,打一次包,发布到双活、默认两个环境。
2、一套配置文件发多环境
每次发版本配置文件的差异是容易出现生产事故,特别是在多环境下更为突出。解决这个问题是要把两个环境的差异配置项放到各自环境的pafa配置中心的全局变量管理或apollo的pizza.propterties。这样两环境非差异配置维护在一套配置文件中,减少在发布过程中因配置项的差异或同步带来的风险。
3、自动化发布
同城双活发布与主环境发布一样,整个过程中配置文件、数据库脚本、程序组件包发布尽可能用自动化发布,减少人工操作的风险。
4. 总结
同城双活发布的全过程中遵循一次打包发多环境、一套配置文件发多环境、自动化发布原则,可以减少发布过程中不必要的风险。
作者:李春明 ( LICHUNMING598 ),网金研发团队架构师
本文是个人观点,描述不当或不正确,欢迎指定。