Apollo分布式配置中心

1、apollo是什么

官网地址:apollo官网github地址git

官方文档很全,也很详细,本文是在官网的基础上精简而来做为笔记github

1.apollo是携程框架部门研发的分布式配置中心,可以集中化管理应用不一样环境、不一样集群的配置,配置修改后可以实时推送到应用端spring

2.特性:api

1).统一管理不一样环境、不一样集群的配置

2).配置修改实时生效(热发布)

3).版本发布管理(配置文件回滚)

4).灰度发布

*:点了发布后,只对部分应用实例生效,等观察一段时间没问题后再推给全部应用实例

5).权限管理、发布审核、操做审计
*:对配置的管理分为编辑和发布两个环节

3.发布流程:缓存

1).用户在配置中心对配置进行修改并发布
2).配置中心通知Apollo客户端有配置更新
3).Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用

2、部署配置

3、Java接入

1.api整合方式springboot

Config config = ConfigService.getAppConfig();// 获取application配置文件 Config config = ConfigService.getConfig(somePublicNamespace);// 根据名称获取配置文件网络

2.和spring整合架构

` xmlns:apollo="http://www.ctrip.com/schema/apollo" xsi:schemaLocation="http://www.ctrip.com/schema/apollo http://www.ctrip.com/schema/apollo.xsd"并发

apollo:config/<!—最简单的配置形式,注入application配置文件--> `app

3.springboot接入方式

1). Maven引入私服中apollo-client包
*:在打包以前须要先配置apollo-core中apollo-env.properties的地址
2). resources目录下建立META-INF目录并新建app.properties文件
	app.id=应用ID
3). 启动类上加@EnableApolloConfig注解
4). 本地文件设置环境信息:server.properties  env=DEV

4.Spring方式接入

1). Maven引入私服中apollo-client包
*:在打包以前须要先配置apollo-core中apollo-env.properties的地址
2). resources目录下建立META-INF目录并新建app.properties文件
app.id=应用ID
3). 配置文件加入<apollo:config/>
4). 本地文件设置环境信息:server.properties  env=DEV

4、apollo架构

一、Config service提供配置读取、推送等功能, 服务对象是apollo客户端

二、Admin service提供配置修改、发布等功能, 服务对象是portal管理界面

三、Meta server(逻辑角色)主要用于封装eureka服务发现接口(经过http获取服务信息,不须要关心背后实际的服务注册和发现组件)

5、刨根问底

配置发布后实时推送设计

1.ReleaMessage

1)、Admin Service在配置发布后会往ReleaseMessage表插入一条消息记录,消息内容就是配置发布的AppId+Cluster+Namespace

2)、Config Service有一个线程会每秒扫描一次ReleaseMessage表,看看是否有新的消息记录

3)、Config Service若是发现有新的消息记录,那么就会通知到全部的消息监听器

2.Config Service通知客户端的实现

1).客户端会发起一个Http请求到Config Service的notifications/v2接口

2).NotificationControllerV2不会当即返回结果,而是经过Spring DeferredResult把请求挂起

3).若是在60秒内没有该客户端关心的配置发布,那么会返回Http状态码304给客户端

4).若是有该客户端关心的配置发布,NotificationControllerV2会调用DeferredResult的setResult方法,传入有配置变化的namespace信息,同时该请求会当即返回

5).客户端从返回的结果中获取到配置变化的namespace后,会当即请求Config Service获取该namespace的最新配置

3.客户端的设计

1)、客户端和服务端保持了一个长链接,从而能第一时间得到配置更新的推送

2)、定时从Apollo配置中心服务端拉取应用的最新配置(默认5分钟,为了防止推送机制失效致使配置不更新)

3)、客户端获取到最新的配置后会保存在内存中,而后同步到本地缓存文件 (网络不通或服务不可用时依然能从本地恢复)

4)、应用程序从apollo客户端中获取最新的配置

相关文章
相关标签/搜索