likes
comments
collection
share

Apollo 配置中心的应用实践1 前言 在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务

作者站长头像
站长
· 阅读数 25

天地英雄气,千秋尚凛然。

1 前言

在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务架构中,配置项的管理、发布和更新更是至关重要。Apollo 作为一款开源的配置中心中间件,它提供了一套完整的解决方案。本文将将结合项目实践详细介绍 Apollo 的技术架构,了解其配置更新的流程,充分理解并利用好其特性,在工作中发挥更大的作用。

2 Apollo 整体架构

Apollo 配置中心的应用实践1 前言 在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务

Apollo 的架构设计如上图所示,它包括多个组件,每个组件承担不同的职责,确保配置管理的高效和可靠。其核心组件包括:

  • 1 Portal

PortalApollo 的管理界面,给管理员提供 web 页面来进行配置的管理,主要可以查看各个环境和应用的配置情况,编辑配置信息,对配置信息进行加密,以及查看配置信息的使用情况,并且对配置信息提供了权限管理。

  • 2 客户端(Client)

客户端 Client 是集成在各个应用中的轻量级 SDK, 负责与 ConfigService 进行通信,获取最新的配置。客户端可以缓存配置服务推送的配置信息,在配置服务不可用时,可以使用本地缓存配置,保证应用的稳定性。

  • 3 配置服务(Config Service)

配置服务负责配置的读取和配置的推送,它的服务对象主要是客户端,客户端通过 ConfigService 来获取最新的配置,它从数据库中读取配置信息并返回给客户端,当数据库中的配置信息发生变更时,配置服务需要主动推送最新的配置信息给客户端。

  • 4 管理服务(Admin Service)

管理服务 AdminService 负责配置的管理和变更,管理员可以通过管理服务来新增、修改、删除配置信息,而且对配置信息进行了版本的控制,支持版本的回滚,在发布配置时可以选择灰度发布。

3 Apollo 配置更新流程

Apollo 还有内置的注册中心 eureka, 用于各个组件进行服务注册和发现,MetaServer 是对注册中心接口的封装,通过 loadbalancer 对外提供服务。

管理员通过 portal, 即门户网站修改配置信息,然后调用 AdminService 修改和发布配置,将配置信息存储在数据库中,并写入数据库消息表 ReleaseMessage 中,ClientService 通过定时任务扫描消息表来获取最新的配置信息,并将配置信息推送给所有订阅的客户端。客户端接收到配置信息后,会将配置信息缓存在本地,在连接不到 ConfigService 时,依旧可以读取本地配置。

Apollo 配置中心的应用实践1 前言 在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务

ClientConfigService 之间通过 Http Long Polling 保持了一个长链接,通过每 5分钟的定时任务来拉取配置,同时客户端也会上报本地的版本,用来确定配置文件是否更新。

Apollo 是集群部署的,对于 Apollo 的可用性情况,如下图所示:

Apollo 配置中心的应用实践1 前言 在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务

4 代码实践

对于 Apollo 的配置,支持 4 个维度管理 Key-Value

1 application (应用), 即每个应用信息
2 environment (环境),服务发布的环境
3 cluster (集群), 即集群信息
4 namespace (命名空间),最小的配置单元

其配置内容如下图所示: Apollo 配置中心的应用实践1 前言 在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务

除了以上,Apollo 可以通过实现 ConfigChangeListener 接口来实现配置项的更新监听。Apollo 的配置信息更新可以实现秒级的近实时更新,这在实际的业务开发中有着重要的作用,比如功能的开关,参数的配置,以及服务器的地址等等。

Apollo 配置中心的应用实践1 前言 在日常的分布式系统开发过程中,项目配置是一个不可或缺的重要环节。尤其是在微服务

需要注意的是,namesapces 可以设置多个,其中的配置信息,先加载的先生效,这一点和 springboot 的配置文件生效顺序相反。

配置信息的优先级  
启动参数(启动参数配置 -Dstudent.age=12) > 远程配置  > 本地(本地排序 classpath:/,classpath:/config/,file:./,file:./config/)
5 总结

在本文中主要介绍了 Apollo 的架构设计以及配置更新的流程和原理,在最后介绍了 Apollo 的项目实践,为后续的业务开发打下坚实的基础。

转载自:https://juejin.cn/post/7411168576432717865
评论
请登录