一、apollo应用背景与简介
由于测试环境的增多,不同的环境对应其特有的配置信息,例如各种参数的配置、数据库连接详细信息、接口调用地址等等。如果采用传统的配置文件定义繁杂的配置信息,不仅不便于分模块管理和分发、并且当进行系统升级或部署新功能时,需要重新部署程序来响应业务需求的变化。基于此,如何能够实现分环境、分集群管理配置,配置修改后实时生效等问题,apollo应运而生。
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
二、apollo界面及配置维度
如上图所示,为apollo的主界面示例,从图中可看出,apollo主要有四个维度组成:environment(环境列表)、application(应用)、cluster(集群)和namespace(命名空间)。
(1) environment(环境列表)
在我们实际开发中,不同的应用会部署到不同的环境中,包括测试环境(test)和生产环境(prod),其中在云管重构概念下,测试环境又分为dev、uat、sit等多种测试环境,不同测试环境对应的配置信息又具有很大差异。在apollo中默认提供了四套环境:
-
FAT(Feature Acceptance Test):功能测试环境
-
UAT(User Acceptance Test):集成测试环境
-
DEV(Develop):开发环境
-
PRO(Produce):生产环境
重构对应的三个测试环境(dev、uat、sit)被定义在apollo所提供的DEV开发环境中,线上环境对应apollo的PRO生产环境。
(2) application(应用)
application,顾名思义主要是表示当前apollo客户端所对应的应用,通过appId区分,也作为唯一标识符。在程序中通过url+appID来获取当前应用的配置信息。
(3) cluster(集群)
集群表示一个应用下的分组概括,例如大数据中心可以按照地理位置:北京数据中心、深圳数据中心区分。在重构概念中,集群主要用来标识不同的测试环境
(4) namespace(命名空间)
namespace,通俗易懂的讲,可以将其理解为配置文件,不同类型的配置存放在不同的文件中,如底层网络配置文件、数据库配置文件等
namespace 分为两种权限,分别为:
public(公共的): public权限的 Namespace,能被任何应用获取
private(私有的): 只能被所属的应用获取到。一个应用尝试获取其它应用 private 的 Namespace,Apollo 会报 "404" 异常
三、apollo配置中心项目创建和配置流程
(1) 登录apollo界面
(2) 创建应用项目
点击首页的创建应用
配置应用详细信息,其中appID是区别不同项目的唯一标识
(3) 创建namespace
namespace可以理解为对应一个配置文件(数据库、网络配置信息)
(4) 配置参数信息
(5) 发布
以上五个步骤即通过配置中心完成了apolo的配置
四、实用功能归纳
在namespace模块,存在一些实用的功能,例如更改历史可以快速查看到某一配置信息的更改历史纪录;比较配置方便比较同一配置文件不同环境集群之间的差异,示例如下:
更改历史:
比较配置:
五、总结
用户在配置中心创建项目并修改配置后发布,对应的配置信息会推送到应用侧(apollo客户端);从配置中心读取到信息后,会保存在内存中;同时,也会把获取的所有配置信息在本地文件中缓存,用于在出现网络故障或服务不可用时仍然能够从本地缓存中获取配置,不影响使用。此外,当apollo更新配置文件时,客户端也能够随时监听,及时获取。总而言之,apollo提高了配置管理的效率和灵活性,辅助业务的快速发展和稳定运行。