配置中心

107 阅读1分钟

携程的Apoll已经开源。

configService:配置的获取接口,配置的推送接口

client:客户端使用的配置拉取功能

adminService:提供配置的管理功能

portal:前端界面

Client如何感知配置更新过?

客户端主动?服务端主动?

客户端主动

项目启动的时候,一个线程每隔5s会发送一个http长链接,有更新立即返回,code为200。没更新则线程进行挂起60s,如果60s到了,则返回code码为304。

image.png

问题:为什么在长链接里,不直接返回结果,而是返回200让客户端重新获取?

实时性的基础上,保持设计尽量简单。

总结:

  • 主要是通过客户端应用发起一个长连接去Apollo ConfigServer端,如果Apollo ConfigServer端有配置更改会告诉应用端有配置修改,让客户端立马去拉取全量的配置,并且把配置更新到本地缓存,并且还会异步去更新本地文件缓存。
  • 客户端还有一个默认5min执行一次的定时任务,去拉取全量的配置。拉回配置之后也是对比本地缓存和远程是否一致,如果不一致则更新本地进程缓存为远程的,同时还去异步更新下本地文件。

服务端主动

如果服务端主动,那么受到客户端服务稳定先的限制,摒弃这种做法。

Server是如何进行感知的?

image.png