大型分布式系统为什么需要配置中心?

简介: 配置中心是大型分布式系统必不可少的重要基础组件,本文主要简要分析下分布式系统中为什么需要配置中心,以及在进行技术选型的时候如何根据自己实际的业务场景进行配置中心选型。

引言

配置中心是大型分布式系统必不可少的重要基础组件,本文主要简要分析下分布式系统中为什么需要配置中心,以及在进行技术选型的时候如何根据自己实际的业务场景进行配置中心选型。


配置

在分析配置中心之前,我们来思考一下到底什么叫做配置?简单来讲配置就是一种在重新写代码的情况下,动态改变程序运行逻辑的操作手段。

image.png

在单服务扛业务的时代,尚可以通过运维小哥进行人肉修改配置,因为那个时候服务还不是很多。但是在当前为服务爆炸的年代,一个服务动辄几十上百台服务器。要是让运维小哥哥去修改配置那还不得疯掉。直接删库跑路了。我们可以分析下本地配置有哪些痛点。

1、配置修改后需要重启服务才能生效

运维小哥哥当修改一些配置信息后,需要将对应的服务进行重启,该修改的配置项才会生效,对于生产环境的应用来说,这个是很不容易接受的,因此需要一种不重启应用但是可以使得配置生效的解决方法。

2、配置维护性差

由于没有统一管理系统配置项的地方因此对于配置的修改维护也是十分艰难,运维恩怨需要运程到对应的服务器上修改配置文件,这种运维交互体验非常差。同时由于是人肉操作,因此有操作失误的可能性,进一步降低了配置可维护性的体感。

3、无法环境隔离

由于一般公司中都有开发环境、测试环境、预生产环境以及生产环境。因此同一个配置项在不同环境中的值可能是不一样的,因此需要通过一种方式将配置项通过环境进行隔离,各自环境管好自己环境配置项即可,制定环境的配置项修改不影响其他环境的配置项。这一点在以前的时代也是难以满足的。


综上所属,特别是分布式微服务时代,特别需要有一个地方可以将系统中的所有配置进行统一的收口以及管理,这样不仅可以很方便的进行配置修改以及变更,同时还可以操作记录,看看那些人修改了哪项配置,这样起到了系统配置统一管控的的作用,大大提升了生产安全以及运维效率。常见的配置形式有xml文件、properties文件、yaml文件等,我们希望这个配置统一管控的地方也可以将这些不同服务的配置文件进行统一管理。

配置中心

上文中分析了曾经年代服务架构中,配置管理存在的问题,只有理解了这些问题,才能够更加深刻的理解配置中心的价值所在。那么什么是配置中心呢?配置中心实际上就是分布式系统中集中统一管理线上应用程序配置项的管理平台。总结起来最主要包括以下三方面核心功能。

(1)配置统一管理

配置项的修改编辑统一在配置中心页面进行,还包括统一的配置版本管理、环境隔离、灰度发布以及热发布,在不重启应用的情况下使得修改的配置可以生效起作用。

(2)权限统一控制

主要控制其配置的读取权限以及修改权限,通过统一的权限管理提升运维效率。

(3)操作统一审计

记录用户操作修改配置的历史信息,这样在出现问题的时候可以进行复盘回查,同时进行操作审计。

如何选型

常见的主流配置中心主要有:

(1)spring-cloud-config

spring大家族

(2)nacos

阿里巴巴中间件

(3)apollo配置中心

携程开源的配置管理中心

这三款配置中心的选型对比可以参见下图:

image.png

从我个人角度来说,目前阶段apollo配置中心相对成熟,现在已经被各个公司实际使用,所以比较推荐。但是现在nacos发展势头很猛烈,估计在未来是配置中心的不二选择。

apollo配置中心的整体架构图入戏所示:

image.png

看上去很复杂,其实主要由三部分组成:


(1)portal


提供配置修改编辑的页面管理


(2)admin service


负责配置信息的修改以及发布的功能


(3)config service


提供配置的修改以及发布等功能,这里需要注意的是configservice其实是包含了架构途中的euraka以及metaservice的。


相关文章
|
13天前
|
SQL 数据建模 BI
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
|
2月前
|
消息中间件 负载均衡 Java
如何设计一个分布式配置中心?
这篇文章介绍了分布式配置中心的概念、实现原理及其在实际应用中的重要性。首先通过一个面试场景引出配置中心的设计问题,接着详细解释了为什么需要分布式配置中心,尤其是在分布式系统中统一管理配置文件的必要性。文章重点分析了Apollo这一开源配置管理中心的工作原理,包括其基础模型、架构模块以及配置发布后实时生效的设计。此外,还介绍了客户端与服务端之间的交互机制,如长轮询(Http Long Polling)和定时拉取配置的fallback机制。最后,结合实际工作经验,分享了配置中心在解决多台服务器配置同步问题上的优势,帮助读者更好地理解其应用场景和价值。
109 18
|
4月前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
173 63
|
5月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
98 1
|
5月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
79 0
|
7月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
162 0
|
7月前
|
机器学习/深度学习 TensorFlow 数据处理
分布式训练在TensorFlow中的全面应用指南:掌握多机多卡配置与实践技巧,让大规模数据集训练变得轻而易举,大幅提升模型训练效率与性能
【8月更文挑战第31天】本文详细介绍了如何在Tensorflow中实现多机多卡的分布式训练,涵盖环境配置、模型定义、数据处理及训练执行等关键环节。通过具体示例代码,展示了使用`MultiWorkerMirroredStrategy`进行分布式训练的过程,帮助读者更好地应对大规模数据集与复杂模型带来的挑战,提升训练效率。
178 0
|
7月前
|
Java 测试技术 Spring
分布式之配置中心
分布式之配置中心
71 1
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能平台PAI产品使用合集之如何配置cluster系统自动生成分布式参数
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
9月前
|
网络安全 数据安全/隐私保护
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
92 0