您现在的位置是:首页 >技术教程 >配置中心Disconf、SpringCloudConfig、Apollo、Nacos比较网站首页技术教程
配置中心Disconf、SpringCloudConfig、Apollo、Nacos比较
简介配置中心Disconf、SpringCloudConfig、Apollo、Nacos比较
Config Server Center
1、Disconf
1、1简介
- 2014年7月百度开源的配置管理中心,同样具备配置的管理能力,不过目前已经不维护了,最近的一次提交是两年前了。
2、SpringCloudConfig
2-1、简介
- 2014年9月开源,Spring Cloud 生态组件,可以和Spring Cloud体系无缝整合。
2-2、应用
- 将应用名称和对应Git中的文件名称关联起来了,这样可以起到多个应用配置相互隔离的作用
2-3、集群
- 支持
2-4、灰度发布
- 通过/bus/refresh端点的destination参数来指定要更新配置的机器,不过整个流程不够自动化和体系化
2-5、版本管理&回滚
- Git来做版本管理
2-6、配置格式校验
- 目前还不支持格式检验,格式的正确性依赖研发人员自己
2-7、监听查询
- Spring Cloud Bus推送配置变更,Spring Cloud Bus兼容 RabbitMQ、Kafka等,支持查询订阅Topic和Consumer的订阅关系
2-8、多环境
- 支持Profile的方式隔离多个环境,通过在Git上配置多个Profile的配置文件,客户端启动时指定Profile就可以访问对应的配置文件。
2-9、多集群
- 通过搭建多套Config Server,Git使用同一个Git的多个仓库,来实现物理隔离
2-10、配置实时推送
- 原生不支持配置的实时推送,需要依赖Git的WebHook、Spring Cloud Bus和客户端/bus/refresh端点:
基于Git的WebHook,配置变更触发server端refresh
Server端接收到请求并发送给Spring Cloud Bus
Spring Cloud Bus接到消息并通知给客户端
客户端接收到通知,请求Server端获取最新配置
2-11、部署及高可用
- Spring Cloud Config包含config-server、Git和Spring Cloud Bus三大组件:
config-server提供给客户端获取配置;
Git用于存储和修改配置;
Spring Cloud Bus通知客户端配置变更;
本地测试模式下,Spring Cloud Bus和config-server需要部署一个节点,Git使用GitHub就可以。在生产环境中,Spring Cloud Config,config-server需要部署至少两个节点。Spring Cloud Bus如果使用RabbitMQ,普通集群模式至少需要两个节点。
Git服务如果使用GitHub就不用考虑高可用问题,如果考虑到安全性要自建Git私有仓库,整体的成本比较高。Web服务可以部署多节点支持高可用,由于Git有数据的一致性问题,可以通过以下的方式来支持高可用:
Git+Keepalived冷备模式,当主Git挂了可以马上切到备Git;
Git多节点部署,存储使用网络文件系统或者通过DRBD实现多个Git节点的数据同步;
2-12、多语言支持
- 服务于Java生态,一开始只是针对Java微服务应用,对于非Java应用的微服务调用,可以使用Sidecar提供了HTTP API,但动态配置方面还不能很好的支持。 Apollo已经支持了多种语言,并且提供了open API。其他不支持的语言,Apollo的接入成本相对较低。
2-13、迁移支持
- 原生就支持Spring Boot和Spring Cloud
3、Apollo
3-1、简介
- 2016年5月,携程开源的配置管理中心,具备规范的权限、流程治理等特性。
3-2、应用
- 配置都是在某个应用下面的(除了公共配置),也起到了多个应用配置相互隔离的作用
3-3、集群
- 支持
3-4、灰度发布
- 直接在控制台上点灰度发布指定发布机器的IP,接着再全量发布,做得比较体系化
3-5、版本管理&回滚
- 支持
3-6、配置格式校验
- 对配置格式的正确性进行检验,可以有效防止人为错误
3-7、监听查询
- 通过灰度实例列表查看监听配置的实例列表,但实例监听的配置(Apollo称为命名空间)目前还没有展示出来
3-8、多环境
- 支持Profile的方式隔离多个环境,通过在Git上配置多个Profile的配置文件,客户端启动时指定Profile就可以访问对应的配置文件。
3-9、多集群
- 可以搭建多套集群,Apollo的控制台和数据更新推送服务分开部署,控制台部署一套就可以管控多个集群
3-10、配置实时推送
- 配置推送都是基于HTTP长轮询,客户端和配置中心建立HTTP长联接,当配置变更的的时候,配置中心把配置推送到客户端。
3-11、部署及高可用
- 分为MySQL,Config Service,Admin Service,Portal四个模块:
MySQL存储Apollo元数据和用户配置数据;
Config Service提供配置的读取、推送等功能,客户端请求都是落到Config Service上;
Admin Service提供配置的修改、发布等功能,Portal操作的服务就是Admin Service;
Portal提供给用户配置管理界面;
本地测试Config Service,Admin Service,Portal三个模块可以合并一起部署,MySQL单独安装并创建需要的表结构。在生产环境使用Apollo,Portal可以两个节点单独部署,稳定性要求没那么高的话,Config Service和Admin Service可以部署在一起,数据库支持主备容灾。
3-12、多语言支持
- 已经支持了多种语言,并且提供了open API。其他不支持的语言,Apollo的接入成本相对较低。
3-13、迁移支持
- 支持Spring Boot和Spring Cloud项目,但是实现方式不同于标准,无法做无缝迁移,从Spring Cloud迁移到Apollo,存在代码改造和兼容性成本
4、Nacos
4-1、简介
- 2018年6月,阿里开源的配置中心,也可以做DNS和RPC的服务发现。
4-2、应用
- 应用概念比较弱,只有一个用于区分配置的额外属性,不过可以使用 Group 来做应用字段,可以起到隔离作用
4-3、集群
- 支持
4-4、灰度发布
- 目前发布到0.9版本,还不支持灰度发布。
4-5、版本管理&回滚
- 支持
4-6、配置格式校验
- 对配置格式的正确性进行检验,可以有效防止人为错误
4-7、监听查询
- 查看监听配置的实例,也可以查看实例监听的配置情况
4-8、多环境
- 通过命名空间来支持多环境,每个命名空间的配置相互隔离,客户端指定想要访问的命名空间就可以达到逻辑隔离的作用。
4-9、多集群
- 控制台和后端配置服务是部署在一起的,可以通过不同的域名切换来支持多集群。
4-10、配置实时推送
- 配置推送都是基于HTTP长轮询,客户端和配置中心建立HTTP长联接,当配置变更的的时候,配置中心把配置推送到客户端。
4-11、部署及高可用
- 部署需要Nacos Service和MySQL:
Nacos对外提供服务,支持配置管理和服务发现;
MySQL提供Nacos的数据持久化存储;
单机模式下,Nacos可以使用嵌入式数据库部署一个节点,就能启动。如果对MySQL比较熟悉,想要了解整体数据流向,可以安装MySQL提供给Nacos数据持久化服务。生产环境使用Nacos,Nacos服务需要至少部署三个节点,再加上MySQL主备
4-12、多语言支持
- 支持主流的语言,例如Java、Go、Python、Nodejs、PHP等,也提供了open API
4-13、迁移支持
- 通过Spring Cloud for Alibaba支持Spring Boot和Spring Cloud生态,符合Spring生态中的标准实现方式,可以无缝从Spring Cloud Conig迁移到Nacos
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。