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

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

引言

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


配置

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

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的。


相关文章
|
2月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
47 0
|
2月前
|
Java 测试技术 Spring
分布式之配置中心
分布式之配置中心
40 1
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能平台PAI产品使用合集之如何配置cluster系统自动生成分布式参数
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
4月前
|
网络安全 数据安全/隐私保护
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
分布式系统详解--框架(Hadoop-Ssh免密登陆配置)
41 0
|
5月前
|
Cloud Native Java 开发工具
云原生 阿里云分布式文件系统 对象存储OSS 服务配置
【1月更文挑战第8天】云原生 阿里云分布式文件系统 对象存储OSS 服务配置
|
5月前
|
安全
考虑极端天气线路脆弱性的配电网分布式电源和储能优化配置模型
考虑极端天气线路脆弱性的配电网分布式电源和储能优化配置模型
|
5月前
|
调度
互动环境下分布式电源与电动汽车充电站的优化配置方法研究-全文复现matlab
互动环境下分布式电源与电动汽车充电站的优化配置方法研究-全文复现matlab
单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)
单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)
|
5月前
|
调度
考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(matlab代码)
考虑充电负荷空间可调度特性的分布式电源与电动汽车充电站联合配置方法(matlab代码)
|
5月前
|
存储 分布式计算 Hadoop
[绝对要收藏]配置hadoop完全分布式环境
[绝对要收藏]配置hadoop完全分布式环境
41 0
下一篇
无影云桌面