美团数据开放平台的配置管理

美团是数据驱动的技术公司, 非常重视使用数据的效率。为了达到这个目标,我们将数据以开放平台的形式开放给需求方。例如,帮助需求方开发报表的报表开放平台,帮助需求方获取数据的自助查询平台,让需求方参与数据建设的ETL开放平台和调度管理服务。在这些开放平台上,需求方填写必要的配置,平台负责根据这些配置产生需要的报表,导出数据,或者产生ETL流程并通过调度有序执行。通过这种方式,简化用户使用数据的流程,提高用户使用数据的效率。

开放平台的使用导致产生了大量的,不同类型的配置。起初,每个服务独立保存和管理自己的配置。随着开放平台的发展,与开放力度的增加,开放平台对配置的管理遇到了各种各样的问题。主要体现在

  1. 可能由于用户误修改或者误删除了配置,导致了运行问题。希望能够追溯配置的变更历史,更好的找到,提醒,并修复类似的问题。
  2. 在开放平台上,用户可以自行测试不同的配置。但是用户如果需要将自己的配置上线成为在线报表,或者添加到调度参与数据仓库数据清洗,就需要确保用户的配置的质量。必须经过数据组的审核,以保证系统的健壮性与逻辑的准确性。
  3. 每个开放服务的业务都与开放配置有关。这些配置的管理需求十分相似。每个服务都自行维护配置会增加开发成本和维护成本。

需求分析

针对遇到的问题,我们首先详细的分析了需求:

  1. 统一管理和存储配置。支持不同服务器上的不同语言编写的服务将配置统一存储和管理,并可以按照需求调用。从而避免不同服务重复开发,增加开发成本和维护成本。
  2. 配置隔离。不同的开放平台的配置互相之间是独立的,统一管理和存储,但是互相之间需要互不干扰。
  3. 版本控制。记录配置的历史变更。通过对比不同版本,可以追查修改人,修改原因,修改时间等。在用户出现误操作时,也可以有效的回滚,尽量的降低修复成本,从而降低出错的成本,提高对用户错误修改的容忍度。
  4. 审核功能。通过审核,对可能影响到系统正常运行的主要配置进行变更管理。每次变更,都必须经过审核。审核通过的变更才会被提交到系统中,参与系统的正常运行。
  5. 可视化页面。为了方便测试,管理和运维,需要有方便的页面支持浏览配置列表,查看和修改系统中已经存在的配置等。

以上需求为必须满足的需求。为了能够更方便的使用,还希望该解决方案能够在配置审核通过时,通知使用该配置的服务,使其知晓该变更。

解决方案

为了满足上述需求,我们决定开发定制的统一集中管理配置的配置管理服务,命名为ConfHub,意为“配置的中心枢纽”。

配置规划

集中管理配置时,不同应用之间的隔离就显得非常重要。同时,应用对配置也有分类需求。所以,需要对配置进行规划。

规划的基本思路是,首先,把配置按照应用进行分类。每个配置属于一个应用,每个应用下,可以有很多配置。在应用下设置命名空间,用来满足应用内的配置分类需求。规划方案如下图:

配置规划图

这种配置规划的方式避免了配置冲突。

版本管理

版本管理可以带来很多好处,比如

  1. 错误修改时,进行回滚。
  2. 在有用户恶意修改时,可以迅速修复。
  3. 执行异常时,根据最近版本修改的内容,定位系统错误的原因。

最基本的版本管理如下图

基本版本管理

这种基本的版本管理方案可以存储配置的历史变更。但实际使用中,并不能满足需求。

在实际的配置使用时,配置需要最终进入生产环境,如报表开发平台的配置产生报表供分析人员使用,ETL开放平台的配置加入调度定时处理数据等。这些生产环境的配置的改动需要经过数据组审核。但在开发过程中,配置需要不停的变更。所以希望版本管理能支持在既不影响线上实际使用的配置的前提下,能够随意修改测试使用的配置。为了解决这种需求,我们对版本管理的逻辑进行了修改。如下图所示

ConfHub的版本管理

在用户需要修改配置时,在测试环境版本中增加新的版本。测试时,使用最新的测试环境版本的配置进行测试。当用户需要更新生产环境中使用的配置时,向数据组提交上线申请,系统会自动的将最新的测试环境版本和最新的生产环境版本的配置进行对比,并将对比结果发给相应负责人审核。审核通过的配置会被添加到生产环境版本中。

通过这种版本管理方法,既保证了生产环境版本是严格受控的,又能保证用户可以自由的测试。

审核

为了保证生产环境运行的配置的质量,生产环境的配置的变更都必须进行审核。在这一点上,我们使用“人工审核,系统辅助”的方案。人工审核,确保配置质量,系统辅助,尽量减少审核人的工作量。

审核过程流程图如下:

Confhub的审核过程

为了提高审核的效率,减少人工审核工作量,用户在开放平台,即配置的使用方,提交配置变更申请。配置使用方会首先对配置进行基本校验,校验通过的配置变更才会提交到配置管理系统。

未来发展

目前,ConfHub满足了现有开放平台的配置管理需求,有效的支持各个开放平台的发展。

后续,ConfHub主要发展方向是

  1. 部分开放平台对配置管理有特殊的需求。在提供大体相同的配置管理方式后,ConfHub也需要提供一些更精细,更定制的配置管理方式。
  2. 开放的方式不止有开放平台一种,而各种不同的开放方式,都有需要管理的配置。管理其他开放方式的配置,也是ConfHub的目标。

在《基于Flume的美团日志收集系统(一)架构和设计》中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计。在本节中,我们将会讲述在实际部署和使用过程中遇到的问题,对Flum ...