apollo 配置中心_微服务配置中心 Apollo 源码解析——Portal 发布配置

精品专栏

  • 《GitHub:中文详细注释的开源项目》

摘要: 原创出处 http://www.iocoder.cn/Apollo/portal-publish/ 「芋道源码」欢迎转载,保留摘要,谢谢!

  • 1. 概述
  • 2. 实体
  • 2.1 Release
  • 2.2 ReleaseHistory
  • 2.3 ReleaseMessage
  • 3. Portal 侧
  • 3.1 ReleaseController
  • 3.2 ReleaseService
  • 3.3 ReleaseAPI
  • 4. Admin Service 侧
  • 4.1 ReleaseController
  • 4.2 ReleaseService
  • 4.3 ReleaseRepository
  • 4.4 ReleaseHistoryService
  • 4.5 ReleaseHistoryRepository
  • 666. 彩蛋

1. 概述

老艿艿:本系列假定胖友已经阅读过 《Apollo 官方 wiki 文档》 。

从本文开始,我们进入 Apollo 最最最核心的流程 配置发布后的实时推送设计 。

在配置中心中,一个重要的功能就是配置发布后实时推送到客户端。下面我们简要看一下这块是怎么设计实现的。

1bbe7b9cbcee0611a7b2de30990a99d4.png

配置发布

上图简要描述了配置发布的大致过程:

  • 用户在 Portal 操作配置发布
  • Portal 调用 Admin Service 的接口操作发布
  • Admin Service 发布配置后,发送 ReleaseMessage 给各个Config Service
  • Config Service 收到 ReleaseMessage 后,通知对应的客户端

本文分享 Portal 发布配置,对应上述第一、二步,大体流程如下:

df877a8c4816f385ae37f2e76b58dbe9.png

流程

  • 这个流程过程中,我们先不考虑灰度发布,会涉及配置合并的过程。

老艿艿:因为 Portal 是管理后台,所以从代码实现上,和业务系统非常相像。也因此,本文会略显啰嗦。

2. 实体

2.1 Release

com.ctrip.framework.apollo.biz.entity.Release ,继承 BaseEntity 抽象类,Release 实体。代码如下:

@Entity@Table(name = "Release")@SQLDelete(sql = "Update Release set isDeleted = 1 where id = ?") // 标记删除@Where(clause = "isDeleted = 0")public class Release extends BaseEntity { /** * Release Key * * 【TODO 6006】用途? */ @Column(name = "ReleaseKey
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值