您好, 访客   登录/注册

应用动态配置系统

来源:用户上传      作者:李小红

  摘要:配置(Configuration) 概念对每个技术人员都不陌生,基本上每个系统都有配置参数。造成这种现象的本质是技术人员无法掌控和预知一切,回到软件领域上,就需要他们对系统的某些功能特性预留出控制的余地,以便在未来需要时,可以人为控制系统的行为特征。配置即程序运行时动态调整行为的能力。随着用户规模的增大和计算功能的微服务化,成百上千个微服务组件的运行都需要依赖于各种配置文件。因此,技术人员需要通过配置中心统一管理配置。文章介B如何基于CMDB[1]和Archaius[2]技术打造可靠的应用动态配置系统。
  关键词:配置;CMDB;Archaius
  中图分类号:TP311 文献标识码:A
  文章编号:1009-3044(2022)15-0058-03
  1 动态配置系统背景
  快速迭代的系统要求需求的变更能快速实现并上线。经统计,公司20%的需求是修改配置类的,如果每次修改都需要完整的上线流程,效率低下。而且传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求:
  1)安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏;
  2)时效性:修改配置,需要重启服务才能生效;
  3)局限性:无法支持灰度动态调整:例如日志开关、功能开关。
  1.1 安全性
  程序配置中包含有数据库账号或密码,加密的密钥等信息都明文存储在项目代码库中,且对所有人员开放,隐藏着巨大的风险。
  1.2 时效性
  配置改动后,需要和修改代码一样,走完整的上线流程。配置修改上线涉及4方人员,8个步骤。
  1.3 局限性
  配置变更本身也蕴藏着风险,因为配置的变更也就代表着业务逻辑的变化。软件技术开发人员也希望变更能实现灰度上线。
  2 应用配置系统的设计
  当前,各大公司都有自己的应用配置中心产品,调研市面上当前比较常用的技术,详细对比情况见表1。
  虽然都基本满足需求,但为了与当前芒果TV运维体系的CMDB无缝结合,调研发现,CMDBuild[5]开源项目非常契合需求,且与Netflix的动态配置读取SDK完美配合。
  2.1 CMDBuild
  芒果TV基于开源和自研构建了很多运维平台,如多云持续交付、统一监控、自动化测试等。但是这些平台各自独立地维护配置信息,形成配置信息的孤岛,导致配置管理困难。
  存在的问题举例:
  1)配置数据手动维护,且无标准工作流保障,容易导致配置数据与资源实际情况不匹配;
  2)各平台之间的配置数据管理没有联动,容易导致配置的不一致;
  3)配置数据模型不统一,每个平台采用自己的方式,互操作性差,沟通成本高;
  4)配置数据没有通过存取接口对外暴露,甚至保存在文件中,使用不方便;
  5)代码配置随代码一起存放在Git[6],敏感信息存在安全风险;
  6)CMDB是运维标准化、自动化的基石,提供全局唯一的、权威的配置数据来源。
  CMDBuild是意大利Tecnotecasrl公司开源的配置管理数据库解决方案,遵循AGPL开源许可协议。最早发布于2006年,每年更新数次,最新版本3.0进行了大规模的重构,于2019年4月12日发布。
  CMDBuild是灵活可配置的,原生支持以下功能。
  1)数据模型可配置;
  2)工作流可配置;
  3)报表可配置;
  4)仪表盘可配置;
  5)通过API对接外部系统;
  6)自定义页面(提供GUI框架);
  7)构建连接器对接外部数据源(提供连接器框架)。
  CMDBuild其实是一个配置管理引擎,软件技术开发人员可以基于它定制出不同的CMDB解决方案。它有两个预配置的CMDB解决方案(均为开源,但是部分功能和服务只有付费的订阅用户可使用) :
  1)Ready2Use:面向IT资产和服务管理,符合ITIL[7]最佳实践(不仅是CMDB,更是CMS);
  2)OpenMAINT:面向物业资产管理及维护。
  CMDBuild有两种工作模式:
  1)系统管理模式下:系统管理员依据事先设计的 CMDB模型,定义数据模型、工作流、报表和仪表盘等要素,这些要素共同组成CMDB应用;
  2)数据管理模式下:数据管理员可以通过GUI界面对CMDB中的配置数据进行管理,也可以通过 API实现CMDB与外部系统的交互和数据同步。
  芒果TV的CMDB借鉴Ready2Use的模型和思路,基于Ready2Use来扩展。
  CMDBuild支持:
  1)配置模型可以灵活定义、扩展;
  2)以关系图的形式显示配置项之间的关系;
  3)访问权限管理可以细化到类(Class)、卡片(Card)、字段(Field)级别;
  4)可保留并查询数据的历史修改记录。
  CMDBuild的工作流可以根据场景需要灵活定制,可以配置审批人和权限控制,详细记录管理活动的细节,支持配置邮件通知,支持自动任务调度。
  CMDBuild提供两种不同风格的API接口:REST和SOAP。
  基于CMDBBuild设计的应用配置模型如下:
  2.2 Archaius
  Archaius是Netflix公司开源项目之一,基Java的配置管理类库,主要用于多配置存储的动态获取。主要功能是对Apache Common Configuration类库的扩展。在开发中,可以将其用作分布式配置管理依赖构件。同时,它有如下一些特性:

nlc202207151139



转载注明来源:https://www.xzbu.com/8/view-15435989.htm

相关文章