微服务配置中心选型比较——Nacos、Apollo、Config

概述

随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……

对程序配置的期望值也越来越高:配置修改后实时生效,分环境、分集群管理配置,代码安全、审核机制……

在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。

所以,配置中心应运而生。

环境简介

目前公司使用阿里云管理所有服务,原因是为了降低运维成本——傻瓜式运维。

服务部署使用edas,配置管理使用acm。

调研目的

将所有代码中的基础依赖(如数据库、分布式存储等)相关配置回收到配置中心(acm或其他开源工具)管理,提升安全性,使资源可复用,减少因版本差异带来的开发工作量。

方案比较

第三方配置中心产品

  • Disconf:百度开源的配置管理中心,目前已经不维护了
  • Spring Cloud Config: Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。
  • Apollo: 携程开源的配置管理中心,具备规范的权限、流程治理等特性。
  • Nacos: 阿里开源的配置中心,也可以做DNS和RPC的服务发现。

由于Disconf不再维护,下面对比一下Spring Cloud Config、Apollo和Nacos。

产品功能特点比较

说明:

  • 压测环境:Nacos和Apollo使用同样的数据库(32C128G)部署Server服务的机器使用的8C16G配置的容器,磁盘是100G SSD。
  • Spring Cloud Config使用2.0.0.M9版本,Apollo使用1.2.0 release版本,Nacos使用0.5版本。
  • Spring Cloud Config 依赖git,使用局限性较大。

调研结果

首先会进一步跟进阿里云edas优化的排期,但是眼下好像是很渺茫... ...

其次,如果接入开源配置中心,根据以上数据分析,建议使用Apollo(功能完善,但是配置复杂)或nacos(功能简单,配置简单,能满足要求,但是文档不够丰富)。

### 核心区别 - **功能特性**:Nacos 不仅是配置中心,还可用于 DNS RPC 的服务发现,在服务发现领域有一定优势;Apollo 则专注于配置管理,具备规范的权限、流程治理等特性,在配置管理方面更为全面,能提供统一界面集中式管理不同环境、不同集群、不同命名空间的配置,还支持多语言界面 [^2][^5]。 - **使用复杂度**:Apollo 在配置管理上功能全面,但使用起来相对麻烦;Nacos 使用较为简洁,适合对性能要求较高的大规模场景 [^1]。 - **生态整合**:Nacos 是阿里开源的,在阿里系技术生态中有较好的适配性;Apollo 是携程开源的,在国内企业级应用开发中也有广泛的应用案例;而 Spring Cloud ConfigSpring Cloud 生态组件,能 Spring Cloud 体系无缝整合 [^2]。 ### 业务选型判断方法 - **业务规模与性能需求**:若业务规模较大,对性能要求高,Nacos 是更合适的选择;若业务对配置管理的流程权限要求严格,Apollo 能更好地满足需求。 - **技术栈与生态**:如果项目基于 Spring Cloud 体系,Spring Cloud Config 可实现无缝整合;若项目与阿里系技术关联紧密,Nacos 能更好地融入整体架构;若希望有规范的配置管理流程,Apollo 是不错的选择 [^2]。 - **功能需求**:若需要服务发现配置管理一体化的解决方案,Nacos 更合适;若仅关注配置管理,且需要强大的配置管理功能,如多环境、多集群、多命名空间管理,Apollo 更符合要求。 ### 代码示例 以下是 Nacos Apollo 的简单使用示例: #### Nacos 配置示例 ```java import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; import java.util.Properties; import java.util.concurrent.Executor; public class NacosConfigExample { public static void main(String[] args) throws NacosException { String serverAddr = "127.0.0.1:8848"; String dataId = "example"; String group = "DEFAULT_GROUP"; Properties properties = new Properties(); properties.put("serverAddr", serverAddr); ConfigService configService = NacosFactory.createConfigService(properties); String content = configService.getConfig(dataId, group, 5000); System.out.println(content); configService.addListener(dataId, group, new Listener() { @Override public Executor getExecutor() { return null; } @Override public void receiveConfigInfo(String configInfo) { System.out.println("Receive new config: " + configInfo); } }); } } ``` #### Apollo 配置示例 ```java import com.ctrip.framework.apollo.Config; import com.ctrip.framework.apollo.ConfigService; public class ApolloConfigExample { public static void main(String[] args) { Config config = ConfigService.getAppConfig(); String someKey = "yourKey"; String someDefaultValue = "defaultValue"; String value = config.getProperty(someKey, someDefaultValue); System.out.println(value); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值