1.最简架构
如果不考虑分布式微服务架构中的服务发现问题,Apollo 的最简架构如下图所示:
注意事项:
ConfigService 是一个独立的微服务,服务于 Client 进行配置获取。
Client 和 ConfigService 保持长连接,通过一种拖拉结合 (push & pull) 的模式,实现配置实时更新的同时,保证配置更新不丢失。
AdminService 是一个独立的微服务,服务于 Portal 进行配置管理。Portal 通过调用 AdminService 进行配置管理和发布。
ConfigService 和 AdminService 共享 ConfigDB,ConfigDB 中存放项目在某个环境的配置信息。ConfigService/AdminService/ConfigDB 三者在每个环境 (DEV/FAT/UAT/PRO) 中都要部署一份。
Portal 有一个独立的 PortalDB,存放用户权限、项目和配置的元数据信息。Portal 只需部署一份,它可以管理多套环境。
2. 高可用保障
为了保证高可用,ConfigService 和 AdminService 都是无状态以集群方式部署的,这个时候就存在一个服务发现问题:Client 怎么找到 ConfigService?Portal 怎么找到 AdminService?为了解决这个问题,Apollo 在其架构中引入了 Eureka 服务注册中心组件,实现微服务间的服务