Apollo配置中心架构图如下:
其github地址:https://github.com/ctripcorp/apollo
Apollo配置中心架构原理
Apollo配置中心分为了三个应用和两个数据库,三个应用分别是PortalService、AdminService、ConfigService;另个数据库分别是PortalDB、ConfigDB

1.PortalService是管理端应用,用户可以通过该应用的前端界面管理各个环境集群中的配置信息,该界面中的数据从PortalDB数据库中读取

2.AdminService和ConfigService是服务端应用,AdminService主要是为Portal应用提供修改、发布配置的远程调用接口,并将发布后的数据存放在ConfigDB中;用户的客户端应用可通过ConfigService读取ConfigDB中的数据,且可以将配置变化主动推送到客户端。

3.ConfigService主动推送配置的原理如下:用户在portal界面中修改配置后,点击“发布”,会调用AdminService往ConfigDB数据库中的ReleaseMessage表插入一条消息记录,消息内容就是配置发布的AppId+Cluster+Namespace,Config Service有一个线程会每秒扫描一次ReleaseMessage表,看看是否有新的消息记录,Config Service如果发现有新的消息记录,那么就会通知到所有的消息监听器,然后调用消息监听类的handleMessage方法,得到发布更新的AppId+Cluster+Namespace后,会通知对应的客户端

4.MetaServer和Eureka以及ConfigService处于同一个jvm进程中,当ConfigService和AdminService启动时,会将自己的多副本的实例注册到eureka中,并维持心跳,多个Eureka副本同步服务列表,MetaServer封装了Eureka的服务发现接口,从而从Eureka中获取ConfigService和AdminService的实例列表。用户的客户端应用和Portal应用通过软负载(如nginx)指向不同的MetaServer副本,从而从不同的Eureka副本中获取ConfigService或AdminService实例,从而实现负载均衡

相关文章: