本文对比分析了几款主流的应用配置类产品。

迁移到MSE Nacos

ACM进入下线状态,所有配置管理相关的需求由MSE中的Nacos承接(ACM独享版,更好的安全和稳定性)。您需要在ACM控制台导出配置,然后在MSE控制台导入之前导出的配置即可完成迁移。具体操作,请参见将应用配置从ACM迁移到MSE Nacos

相似产品简介

  • ZooKeeper

    ZooKeeper 是一个分布式应用程序协调服务,是 Google Chubby 的开源实现。它是一个为分布式应用提供一致性服务的软件,提供的功能包括配置维护、域名服务、分布式同步、组服务等。在 Hadoop 集群等场景下,ZooKeeper 同时充当应用配置管理的角色。但是由于它是 CP(Consistency,Partition Tolerance) 类应用,因此在可用性和性能上都会受到一定影响。

  • etcd

    和 ZooKeeper 类似,etcd 是一个高可用的键值存储系统,主要用于配置共享和服务发现。ETCD 是由 CoreOS 开发并维护的,灵感来自于 ZooKeeper 和 Doozer。它使用 Go 语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。etcd 和 ZooKeeper 类似,同样可以用来做应用管理配置。但是由于它是强一致的管理类应用,因此其可用性和性能在某些场景会受到一定影响。

  • Spring Cloud Config Server

    和 ACM 类似,Spring Cloud Config Server 为服务端和客户端提供了分布式系统的外部配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。与 ACM 不同的是,Spring Cloud 配置服务器默认采用 Git 来存储配置信息,其配置存储、版本管理、发布等功能都基于 Git 或其他外围系统来实现。除此之外,在配置功能方面,ACM 和 Spring Cloud Config 也有很大不同。

产品对比

以下表格详细描述了 ACM 与 etcd、ZooKeeper 和 Spring Cloud Config 在应用配置管理方面的区别。

产品 ACM Spring Cloud Config Server ZooKeeper ETCD
配置修改 直接在 ACM 控制台上进行配置修改 一般在 Git 仓库上进行配置修改 通过调用 ZK API 修改 通过调用 etcd API 修改
配置自动推送 修改过的配置自动推送到监听的客户端 客户端只能在启动的时候加载 修改过的配置自动推送到监听的客户端 修改过的配置自动推送到监听的客户端
API接口 基于 RESTful API,同时支持 Java Native 接口,Spring Cloud 接口,和其他语言类接口 基于 RESTful API 和 Spring Cloud 规范,同时也支持其他语言客户端 支持 Java 原生接口 基于 RESTful API 的接口
版本管理 在 ACM 上自动记录各个修改的版本信息 通过 Git 间接管理版本 不带任何版本控制 不带任何版本控制
配置推送追踪 可查询所有客户端配置推送状态和轨迹 无法查询配置推送历史 无法查询配置推送历史 无法查询配置推送历史
说明 ACM 不是 CP 类应用,因此和 etcd、ZK 定位不同,ACM 并不适合用于严格的事务类配置服务,例如分布式锁。