1.关于配置管理1.1名称解释配置项一个key=value组合的配置集一组配置项,key1=value,key2=value2的配置实例一个完整的,应用程序可以直接使用的配置项的集合。1.2配置管理功能版本控制跟踪创建的配置项、配置集和配置实例的版本,支持回滚等操作。变更控制控制、操作、分类和记录配置变更。配置审计审查配置的一致性、标准化和正确性。1.3配置管理困难在开发迭代过程中,任何人都可以随时随地更改配置。配置项、配置集和配置实例可能会在不同时间、在应用程序的不同拓扑级别上由不同的人修改。我们需要一种灵活的方式来支持这些复杂的场景。配置的特点是复杂性、敏感性和高影响。一个配置实例可能有上百个配置项,其中还可能包含帐号、密码等敏感信息,错误的配置可能会导致整个服务不可用。配置管理的灵活性和对配置实例的约束是配置管理产品需要平衡的地方。如何通过一定的约束来避免一些错误,同时满足各种使用场景,是配置管理的难点。2.常见的配置管理模型2.1CICO模型CICO模型主要关注单个文件的版本控制,该文件被版本化并存储在存储库中。2.2组织模型组织模型下的配置由两部分组成:系统模型,列出所有组件版本选择规则,使建立系统,并指出组成版本2.3配置每个组件的长事务模型长事务模型将配置管理视为开发人员对配置的事务操作。一系列更改会产生一系列配置版本,称为开发路径。2.4变更集模型变更集模型将配置描述为基线和一组变更集。基线可以理解为里程碑版本,是一次迭代的终点,也是下一次迭代的起点。3.新的配置管理模型3.1遇到的问题CICO等模型在一些较早的论文和书籍中有提及,但在开发PaaS平台管理配置时不能直接应用。例如,CICO模型使用SVN和GIT来管理文件,并不强调配置存储在文件中。这个文件具体指的是什么。组织模式更像是大型PaaS平台的配置管理。它由若干个子模块组成,每个子模块都有自己的配置,适用于一组微服务的应用配置管理形式。3.2组装模型旧模型不能满足PaaS平台的场景。但它可以给一些启发,将物理组件概括为元素,组织模型可以演化为装配模型。如下图所示:配置实例=默认配置集+环境配置集+集群配置集使用应用拓扑定义,根据应用的层级,通过定义一定的优先级关系,在每个层级定义的配置集组合起来形成一个配置实例。组装模型通过组装若干个元素来获得配置实例,但同一个应用程序的不同配置实例可能包含不同的Key集。这种差异会增加配置管理的成本和配置错误的风险,并且不能直接满足对配置完整性的约束。3.3模板模型基于完整性的要求,在变更集模型的启发下,可以得到模板模型。如下图所示:模板模型需要定义配置实例的模板。根据应用拓扑的结构,形成多个变更集,覆盖配置实例模板,得到最终的配置实例。模板模型加强了对配置实例Key的约束,保证了强一致性,可以避免Key丢失导致的事故。但是,强一致性约束也会导致灵活性受损,需要结合配置项和配置集的发布状态来使用。
