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

news2025/1/12 23:07:07

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/444282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术选型|日志采集和管理工具您都了解哪些,看这篇就够了

简介 对于日志管理当前网络上提供了大量的日志工具,今天就给大家分析总结一下这些常用工具的特点,希望对你们在选型时有所帮助,如果有用记得一键三连。 1、Filebeat Filebeat是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理…

2_STM32最小系统设计

MCU最小系统:一个MCU在正常工作中,正常下载程序前提下的最简电路。 最简电路包含: 供电电路、复位电路、时钟电路(高速时钟、低速时钟):2个外部晶振、Boot启动模式选择(跳线帽)、下载电路(uart/JTAG/SWD)、后备电池VBAT(维持后备区…

使用vscode+cmake进行c++代码编写

1. 前言 因为vcode的主题格式比visual studio好看,而且注释使用ctr/注释非常方便。所以对于一下小型的c代码测试,例如用不到外部库,只需要纯c自己语法,我就想和python一样,在vscode上写。因此记录一下比较简单的典型的…

SAP ABAP 使用SICF发布HTTP API接口

一、SE24创建类:Z_HCX_HTTP 1、创建类: 2、切换到接口(interface)页签,输入IF_HTTP_EXTENSION ,回车。切换到方法(method)页签,双击IF_HTTP_EXTENSION~HANDLE_REQUEST进…

Linux学习记录——십구 进程间通信(1) 管道

文章目录 1、进程间通信介绍1、目的2、发展 2、管道1、原理2、简单模拟实现3、总结 3、匿名管道——控制进程4、命名管道1、原理2、模拟实现 1、进程间通信介绍 之前所学都是单个进程,多个进程之间如何运转? 1、目的 数据传输:一个进程需要…

Linux下SOCKET编程

一、SOCKET编程 1、socket()函数 int socket(int protofamily, int type, int protocol);//返回sockfd返回值sockfd是描述符。 socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socke…

2. C++使用Thread线程参数传递问题

1. 说明 在子线程函数中进行参数传递,实际上是Thread类的构造函数对传递的参数进行了拷贝,拷贝到线程独立的内存中,及时参数是引用的形式,也可以在新线程中进行访问,如果参数传递时的类型不一致,在线程的上…

Servlet(二)

目录 1.Cookie 和 Session 1.1HttpServletRequest 类中的相关方法 1.HttpSession getSession() 2.Cookie[] getCookies() 1.2HttpServletResponse 类中的相关方法 1.void addCookie(Cookie cookie) 1.3HttpSession 类中的相关方法 1.4Cookie 类中的相关方法 1.5网页登录…

详解Spring Security

目录 1.概述 2.登录 2.1.默认用户 2.2.自定义用户 2.3.加密 2.4.绕过加密 2.5.怎么传递用户信息 2.6.记住我 3.登出 4.使用数据库 4.1.jdbcAuthentication 4.2.userDetailsService 5.自定义处理器 6.更多细粒度的控制 7.原理简述 1.概述 Spring Security是一个…

使用 Kubernetes 运行 non-root .NET 容器

翻译自 Richard Lander 的博客 Rootless 或 non-root Linux 容器一直是 .NET 容器团队最需要的功能。我们最近宣布了所有 .NET 8 容器镜像都可以通过一行代码配置为 non-root 用户。今天的文章将介绍如何使用 Kubernetes 处理 non-root 托管。 您可以尝试使用我们的 non-root…

gateway报 netty堆外内存溢出问题解决io.netty.util.internal.OutOfDirectMemoryError

昨天线上网关突然无法访问。打开日志看到错误信息“io.netty.util.internal.OutOfDirectMemoryError” 堆外内存溢出。。这也没碰到过啊,看来今天准点下班的愿望又落空了。老规矩面向百度编程。先看看网上有没有其他兄弟碰到这个问题。一顿搜索之后发现,…

已解决windows pycocotools安装失败问题 —— 超简单

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,YOLO,活动领域博主爱笑的男孩。擅长深度学习,YOLO,活动,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect个人…

分库分表与分布式主键生成策略详解--一个无数人踩过却一直被人忽视的深坑

文章目录 一、从分库分表的一个神坑说起二、分布式主键要考虑哪些问题?三、主要的主键生成策略1、数据库策略2、应用单独生成3、第三方服务统一生成4、与第三方结合的segment策略 四、定制雪花算法1、如影随形的时钟回拨问题2、用主键生成策略优化分配工作进程位3、…

萤石“小步快走”,跨进智能家居生态圈

文丨智能相对论 作者丨Kinki 近日,萤石网络(下称“萤石”)举办了2023春季新品发布会,这是公司上市以来的首个新品发布会,除了拳头产品智能家居摄像机之外,还有智能入户产品、TV Studio等十多款新品&#…

NC65 集团业务参数 GLS01参数值的默认值作用是什么?

NC65 集团业务参数 GLS01参数值的默认值作用是什么? 用在总账系统的所有账簿。如果设置的期间个数大于12,还得要求所查询的账表支持跨年查询,比如科目余额表,不支持跨年(注意:这里说的不支持跨年是指余额为…

4.2.1朴素模式匹配算法

什么是字符串的模式匹配: 从这段字符串里面搜索内容,被搜索的字符串我们称之为主串。 也可能匹配不到 主串长度为n,模式串长度为m。 朴素模式匹配算法:将主串中所有长度为m的字串依次与模式串对比,直到找到一个完全匹…

【JavaEE】File、InputStream和OutputStream的使用

1.File 在计算机中目录结构如下: 而File就表示一个目录或者一个普通文件。 File表示目录: File表示普通文件: 我们先来看File的构造方法: 构造器描述File(File parent, String child)根据父目录 孩子文件路径,创…

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权

Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权 1. 前言1.1. 如何找编译好的EXP 2. 定时任务提权2.1. 查看定时任务2.2. 通配符注入提权2.2.1. 创建执行脚本2.2.2. 创建定时任务2.2.3. 查看效果2.2.4. 提权操作2.2.4.1. 切换普通用户2.2.4.2. 执行命令2.2.4.3…

优先、双端队列-我的基础算法刷题之路(八)

本篇博客旨在整理记录自已对优先队列、双端队列的一些总结,以及刷题的解题思路,同时希望可给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉 &…

Netty 源码解析(下)

接上一篇博客 Netty 源码解析(上)继续分析 上一篇博客中已经分析了绝大部分 ChannelFuture cf bootstrap.bind(9000).sync(); 这一行代码,当这一行代码运行完时,Netty服务端就已经启动好了,接下来就是接收链接&#x…