Apollo 配置中心

Apollo(https://github.com/ctripcorp/apollo)是一个配置中心,支持从应用、环境、集群维度去管理配置,也支持从公共,私有维度去管理配置。 满足了大部分的配置场景。 
作为一个配置中心:
1. 配置项的保存,基本都会放到数据库中。 这里apollo使用的是mysql. 
2. 变更配置如何通知到客户端, 一般是使用zookeeper, 比如百度的disconf, 这里apollo使用的是http长轮询。 
3. 配置的高可用,一般都会在本地会有一个配置文件的副本。 即使配置中心挂了,应用还是能够启动, 只是配置可能不是最新的。 apollo就是这种配置。 
4. 最后就是配置的SDK如何与应用集成。 这个就不展开了。 
 
apollo关于配置变更通知这块,主要分为了2个部分:
1.  如何发现配置变更?  apollo解耦了「配置变更」和「配置变更发布」, 配置变更就是一个数据库操作,除了保存本身的配置信息,还会新增保存一个「ReleaseMessage」到数据库, 表示有变更发生, config server中的一个线程,每隔1S扫描「ReleaseMessage」表, 以此发现变更的配置。
2. 如何通知客户端? 使用的是http的长轮询, 客户端在启动后,会连接cofig server, 连接90秒超时, config server收到请求会hang到服务端不返回, 如果90秒内没有配置变更,就自动返回, 如果在90秒内有配置变更,请求会立刻返回,并且携带namespace。 客户端收到请求后,会立刻重新请求服务端。
 
posted @ 2020-08-09 22:05  秋夜  阅读(1186)  评论(0编辑  收藏  举报