ACM 产品从 2008 年开始就被大量应用于阿里巴巴内部应用的配置管理。ACM 不仅适用于微服务、分布式架构下的配置管理、服务治理,在大数据等场景下也可灵活运营。本文选取典型的场景案例进行详细介绍。

微服务应用架构下的配置管理

在微服务架构下,应用和机器的数目众多,单个应用的不同配置需要分发在多台机器上,各应用之间存在复杂的配置依赖。

在传统架构的应用发布过程中,修改一个应用配置就需要将整个应用重新打包发布,过程繁琐且容易出错。

dg_config_update_traditional

若使用 ACM 进行配置管理,应用的配置信息的管理、发布都通过 ACM 实现,配置的发布不再需要与应用打包为一体。在新版本的配置发布后,在所有应用立即生效,如下图所示。

dg_config_update_acm

ACM 作为配置中心为微服务带来以下好处:

  • 集中管理所有配置,在应用众多的情况下配置管理变得更加方便。
  • 所有配置不依赖版本发布,使配置更新变得更加灵活。
  • 支持灰度发布和回滚,使得配置的变更发布在微服务架构下变得更加安全。

分布式架构下的服务治理

在分布式架构下,服务治理是非常关键的。其中,服务治理的服务路由、服务限流、服务降级、服务鉴权等功能,均可通过 ACM 实现。

以限流降级为例,在阿里巴巴双11,每一次服务限流降级相关操作都要求秒级响应,此需求就通过 ACM 来实现。

其中,每个 RPC 的服务端都会通过 ACM 来注册监听对应服务的流控管理信息。当应用需要流控时,管理员在服务治理控制台做出限流操作,服务治理系统就会通过 ACM 将流控信息推送到对应的目标应用服务端,让应用服务端根据相关配置进行限流。

ACM 为分布式架构下的服务治理带来以下好处:

  • 性能良好:通过配置推送的方式来监听服务治理信息,对性能几乎无影响。
  • 响应时间迅速:相关的服务治理信息可以被秒级推送。
  • 安全性高:当限流降级错推以后还可以通过秒级配置回滚来恢复状态。

应用业务场景动态推送

如何让前端页面快速响应运营活动、降低开发成本、提高运营效率,也是 ACM 的使用场景之一。

以某电商运营为例。通过在前端 Javascript 埋入 ACM 的配置内容(如三方库版本号,静态资源 URL 等),在运营活动发布时,运营人员可以通过运营工具修改 ACM 配置规则,直接让前端 Javascript 的展示生效。

ACM 为应用的业务场景推送带来以下好处:

  • 通过配置将业务静态代码和业务场景解耦,显著提高运营相关的应用发布流程。

大数据实时计算的动态调整

在大数据的实时计算领域,通常需要动态调整计算参数来取得最精确的实时计算结果。

以阿里巴巴内部某 APM 类监控系统为例。该监控系统需要动态调节业务的阈值,来控制实时计算系统,实现计算业务的报警。而且在阈值修改过程中,要求整个过程实时性好,应用不能停机。该监控系统的计算阈值采用 ACM 的规则来推送。

ACM 为大数据实时计算场景的应用带来以下好处:应用计算参数动态配置,动态生效,生效时间快,性能影响低。

企业级互联网架构下的异地多活场景

异地多活是企业级互联网架构中的一种高级容灾架构。相对于传统容灾架构,有业务恢复时间短、容量需求低、运维快捷简单等特点。目前异地多活架构被阿里巴巴和饿了么等公司广泛采用。

在阿里巴巴内部,容灾多活架构的核心算法、ID 分片和对应的的路由规则均采用 ACM 来动态推送。其中,相应的客户端和服务端,如 RPC,MQ,DB 都植入了路由路径。当容灾演练或者真实灾难发生时,管理员只需要动态地推送规则,相应的规则会影响到所有架构组件。示意图如下。

ACM 为异地多活场景中的应用带来以下好处:

  • 基础架构和容灾逻辑解耦,具体的路由逻辑由容灾规则切换决定。
  • 生效快,理论上容灾的切换规则可以秒级推送到十万级别机器。