您现在的位置是:首页 >技术教程 >配置中心Disconf、SpringCloudConfig、Apollo、Nacos比较网站首页技术教程

配置中心Disconf、SpringCloudConfig、Apollo、Nacos比较

山不在高_有仙则灵 2023-05-18 16:00:02
简介配置中心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
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。