配置

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。

动态配置和静态配置

系统配置可以是静态或者动态配置。配置的版本与软件本身的版本强绑定的称之为静态配置。反之,在同一个版本的系统部署且运行期间配置可以连续发生多次变更的则称之为动态配置。例如build-version: 1.0.0 配置与软件版本绑定,称之为静态配置;而线程池大小的配置则可以在系统运行期间连续多次变更,称之为动态配置。

配置管理

在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。

配置推送

配置管理中,常需要配置管理系统将配置的变更分发到相关的系统,从分发到配置生效的过程称为配置推送。

推送轨迹

从配置变更,配置推送到配置生效过程的整个轨迹称为推送轨迹。通过查看某个配置的推送轨迹,我们可以获知一个配置变更在哪些应用上,哪些机器上,在哪个时间点生效,产生了哪些影响等。

配置监听

配置监听,是指 ACM 允许系统通过使用 SDK 等方式向 ACM 系统注册监听器(Listener),从而监听并消费该配置的变更。

配置项

是指一个具体的可配置的参数与其值域,通常是 param-key=param-value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。

配置集

一组相关或者不相关的配置项的集合称为配置集。通常系统中的一个配置文件就是一个配置集,其内包含了系统各个方面配置。例如一个配置集可能包含了系统如数据源、线程池、日志级别等配置项。

配置集 ID(Data ID)

在 ACM 中代表配置集的 ID, 是配置组织的维度之一。一般通过 Data ID 来组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集可以用有意义的名称来标识这个配置集。Data ID 通常采用类 Java 包命名方式(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,此命名规则非强制。

配置分组(Group)

ACM 中配置集的分组,是配置组织的维度之一。通常使用一个有意义的字符串来分组配置集,例如 Buy,Trade 等,用以区分相同 Data ID 的配置集。ACM 创建配置时,如果用户未填 Group 名字,则默认用 DEFAULT_GROUP 代替。Group 的常用场景是同一个配置类型用于不同应用或者组件,如 database_url 配置,MQ_topic 配置等。

命名空间(Namespace)

ACM 中的命名空间,用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group,Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,如开发测试环境和生产环境的配置隔离等。

配置快照

ACM 客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 ACM Server 时,可以利用快照提供系统的整体容灾能力。配置快照类似于 Git 中的本地 commit 的概念,也类似缓存,会在适当的时机更新,但是没有缓存过期(expire)的概念。