1. 流程图
"2. 发布配置api
admin service
发布配置api。先发布配置,再发送发布消息
1 |
|
3. 发布配置
根据是否存在父Namespace,判断是否走灰度发布还是主干发布
1 | //ReleaseService |
3.1 灰度发布
灰度命名空间就是一个集群的子集群对应的命名空间,灰度命名空间的appId,appNamespace与父命名空间的appId,appNamespace一致。
灰度key就是灰度命名空间对应配置的key,即子Namespace的Item表中的key
灰度发布其实就是:发布“灰度key的配置和主干分支的配置合并后的配置”
1 | private Release publishBranchNamespace(Namespace parentNamespace, Namespace childNamespace, |
3.2 主干发布
1 | private Release masterRelease(Namespace namespace, String releaseName, String releaseComment, |
合并分支
主干分支发布的时候,会把主干分支的配置合并到灰度分支的配置。如果合并后的配置与灰度分支的配置不同,那么把合并后的配置发布到灰度分支。
1 | private void mergeFromMasterAndPublishBranch(Namespace parentNamespace, Namespace childNamespace, |
4. 发送发布消息
发布配置后,会生产一条ReleaseMessage记录到表中
1 |
|