当超过了一定量级的服务之后,系统配置的修改和发布就会成为项目发展一个不得不关注的难点,因此就诞生了配置中心。配置中心通过集中管理服务配置,提供统一的配置拉取接口来解决因规模不断扩展导致的配置管理问题。一般提供版本管理,权限控制,灰度发布,动态刷新等功能特性来完善配置管理体系。
Spring Cloud Config是官方提供的分布式系统的外部配置中心提供服务器和客户端支持。
Nacos 阿里开源的框架,致力发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
Spring Cloud Config:依靠第三方提供,例如如果是本地文件那就没有版本的管理和回滚
Nacos:提供版本回滚
历史版本回滚选择第一个版本时候会删除配置 · Issue #4064 · alibaba/nacos · GitHub
Apollo:properties提供跨版本的回滚,其他格式的配置文件只能回滚上一个版本
不支持回滚到任意版本 · Issue #1642 · apolloconfig/apollo · GitHub
Spring Cloud Config:自身不提供,可以引入外部框架实现
Nacos:支持
Apollo:支持
Spring Cloud Config:唯一内置敏感加密功能的配置中心
Nacos:需要引入Jasypt,动态刷新无法同步解密
Apollo:需要引入Jasypt,1.16版之后有兼容问题
Spring Cloud Config:能做到profile级别的划分
Nacos:支持
Nacos提供了3个维度Namespace,Group,data_id的配置划分,不同的Namespace对配置实现了逻辑隔离,group进行第二级别维度的细分,但是nacos却提供了跨group的配置拉取,所以group没有达到隔离的效果,data_id等于Spring Config中的一个配置文件
Apollo:支持
Apollo提供了4个维度APP Environment Cluster,Namespace,APP代表着不同的项目,Environment代表着不同环境他们在彼此维度实现了逻辑隔离,Cluster是Apollo基于同城三机房,异地多活实际的业务需要提供的第三级维度,集群的实例只会使用 当前 集群(当前页面)的配置,只有当对应namespace在当前集群没有发布过配置时,才会使用default集群的配置,namespace等于Spring Config中的一个配置文件
Spring Cloud Config:自身不提供灰度发布功能,可以引入外部框架实现
Nacos:不支持灰度发布,目前开发方向暂时没有添加意愿
Apollo:支持网络IP级别的灰度发布
Spring Cloud Config:自身不提供权限管理,依据第三方SVN/GIT进行权限管理
Nacos:目前不具备权限管理
Apollo:查看实现环境级别的控制,编辑和发布实现到每个配置级别的控制
都支持
Nacos | Apollo | Spring Cloud Config | |
---|---|---|---|
灰度发布 | - | ○ | - |
权限管理 | - | ○ | - |
版本管理&回滚 | ○ | ○ | - |
配置实时推送(动态刷新) | ○ | ○ | - |
敏感加密 | - | - | ○ |
多环境 | ○ | ○ | ○ |
高可用 | ○ | ○ | ○ |
Nacos | Apollo | Spring Cloud Config | |
---|---|---|---|
灰度发布 | 不支持 | 支持IP级别的灰度发布 | 第三方框架支持 |
权限管理 | 不支持 | 基本完善 | 第三方平台支持 |
版本管理&回滚 | 支持 | 之前回滚上一个版本,properties提供跨版本的回滚 | 第三方平台支持 |
配置实时推送(动态刷新) | 支持,但是敏感加密后的动态刷新出现无法解密 | 基本完善 | 第三方框架支持 |
敏感加密 | 引入Jasypt | 引入Jasypt | 原生支持 |
多环境 | 支持 | 支持 | 支持 |
高可用 | 支持 | 支持 | 支持 |
社区支持 | 一般 | 活跃 | 一般 |
https://github.com/ctripcorp/apollo/wiki/Apollo性能测试
Nacos服务配置性能测试报告
同等配置下使用SuperBenchmarker测试Apollo拉取配置的性能是约为Spring Cloud Config的10倍
Spring Cloud Config作为官方提供的配置中心,适合学习和刚开始使用分布式框架的项目使用
Nacos作为阿里2018年开源的产品,有阿里背书,且服务发现和配置集与一体。但是从目前的发展来看,阿里开发重心在于服务发现端,配置中心相关功能开发相对滞后,适合中小型企业使用
Apollo是携程2016年开源的配置中心,经历了5年的迭代,现在已经是一个很完善的产品,能满足大型互联网的大多数需要