【管理设计篇】聊聊分布式配置中心

news2024/11/15 10:57:22

为什么需要配置中心

对于一个软件系统来说,除了数据、代码,还有就是软件配置,比如操作系统、数据库配置、服务配置 端口 ip 、邮箱配置、中间件软件配置、启动参数配置等。如果说是一个小型项目的话,可以使用Spring Boot yml文件管理,但是对于分布式系统来说,这种方式很容易出错。
所以就需要一个全局化的配置中心。 一般企业用的比较多,携程的Apollo等。
在这里插入图片描述

配置中心的设计

区分软件的配置

静态配置&动态配置
对于项目启动的一些比如端口号,软件初始化就确定的,基本都不会修改,这种就是静态配置。而对于软件运行时,我们会进行修改配置,运营参数配置、日志级别、业务开关、配置等,这种就是动态配置。
对于动态配置来说的化,主要就是三个区分的纬度

  • 运行环境:对于一般正规的系统来说的话,开发环境(dev)、测试环境(test)、预发布环境(staging)、生产环境(prod)。所以对于开发功能的时候,需要提前做上线准备功能,列好需要修改的参数配置。
  • 依赖区分:外部依赖的配置,一般都是中间件配置,MySQL、Redis等。或者自己内部业务配置。开关什么的。
  • 层次分:基础层、中间层、应用层。基础层主要就是操作系统配置,中间层就是各种依赖的中间件 Redis、MySQL、Kafka、ES等。应用层都是和业务相关的配置。

所以一般来说,最好按照对应的分类进行管理,这样当系统越来越大的时候,就可以通过软件配置进行集中化管理。不然后期配置管理的复杂度就会上升。

配置中心的模型

配置中心一般来说的话,基本就是Key-value模型,value可以支持多种数据格式,比如JSON,字符串、数组、map等结构。
对于不同的配置来说,我们应该进行区分管理,基础层和中间件层应该运维人员进行管理,而应用层由研发人员进行管理。
不同环境的配置可能会有所差异。然后需要有对应的修改和发布记录,可以回溯历史,这样即时出现问题,可以快速查看修改点。
对了对于不同环境的话 应该有权限管理,生产环境应该由少数几个人管控。
一般目录级别的话 服务名-模块名称-配置的环境 配置等。
在这里插入图片描述

配置中心的架构

从整体来说的话,项目启动的时候 会通过依赖对应的中间件引入到项目中,然后统一配置初始化。但是对于在软件运行过程中,应该怎么让应用层序感知到配置变更呢。

其实比较简单,就是修改配置之后,配置中心会推送一个配置变更信息到配置变更控制器,通知对应的服务配置修改。然后服务主动去读取配置。整个过程就是一推一拉的过程。
在这里插入图片描述
为什么不直接配置中心推送对应修改的配置呢,因为可能应用太多会导致推送不过来,而应用服务主动拉取是一个不错的方式。另外也可以校验请求者的权限,以及对应的证书问题等。

配置中心主要的作用就是统一和规范化所有服务配置。设计重点就是如何统一和标准化软件的配置项。比如如何管理等,以及配置更新的时候事务操作。

小结

本篇主要介绍了配置中心,对于一般有点规模的系统都会引入配置中心来使用,但是大多数也都是不规范化,如何在实际的项目中更加规范化其实很重要,也有通过MySQL表结构进行管理配置的,其实各种方式都有。

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

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

相关文章

Nginx解决文件服务器文件名显示不全的问题

Nginx可以搭建Http文件服务器,但默认的搭建会长文件名显示不全,比如如下: 问题:显示不全,出现...,需要进行解决 这里使用重新编绎nginx的方式,见此文: https://unix.stackexchange…

CS5265国产Typec转HDMI音视频转换芯片可替代RTD2172

集睿致远/ASL推出的CS5265是一款高性能Type-C/DP1.4至HDMI2.0b转换器IC,设计用于将USB type c源或DP1.4源连接至HDMI2.0b接收器。CS5265集成了DP1.4兼容接收机和HDMI2.0b兼容发射机。此外,CC控制器还用于CC通信,以实现DP Alt模式。DP接口包括…

ARM 常见汇编指令学习 9 - 缓存管理指令 DC 与 IC

文章目录 ARM64 DC 与 IC 指令 上篇文章:ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 ARM64 DC 与 IC 指令 AArch64指令集中有两条关于缓存维护(cache maintenance)的指令,分别是IC和DC。 IC 是用于指令缓存操作&…

设备管理升级:揭秘设备健康管理的核心优势

随着工业企业迎来数字化转型的浪潮,设备管理在实现升级和卓越运营方面扮演着关键角色。传统的设备管理方式已经难以适应复杂多变的生产环境,因此设备健康管理作为数字化转型的核心优势应运而生。本文将深入探讨设备健康管理的核心优势,以揭示…

了解ai绘画软件哪个好,我分享这几款你看看

以前绘画是一项需要花费长时间学习的艺术,绘画创作需要耗费许多时间和人工成本。但人工智能的发展,让ai绘画工具成为学习画画、创作的另一种新形式。这些绘画工具仅仅通过输入文字描述就可以生成个性化的创作,帮助我们快速实现绘画创作的梦想…

使用ansible playbook编写lnmp架构

使用ansible playbook编写lnmp架构 - name: nginx playgather_facts: falsehosts: lnmpremote_user: roottasks: - name: stop firewalldservice: namefirewalld statestopped- name: syslinuxcommand: /usr/sbin/setenforce 0ignore_errors: true- name: nginx.repocopy: src/…

Spring基于注解管理bean及全注解开发

文章目录 spring概述Spring定义Spring核心Spring Framework的特点 基于注解管理bean依赖开启组件扫描使用注解定义Bean案例:Autowired注入属性注入set注入形参上注入只有一个构造函数,无注解Autowire注解和Qualifier注解联合 Resource注入Spring全注解开发 spring概…

信息系统项目管理的计算机基础知识

一、信息化发展 (一)信息与信息化 1、信息 信息是确定性的增加。单位为比特(bit)。 2、信息系统 信息系统是通过输入数据,然后进行加工处理,最后产生信息的系统。面向管理和支持生产是信息系统的显著特…

【PHP】简记问题:使用strtotime(‘-1 month‘, time)获取上个月第一天时间戳出错

发生场景 在7月31号是查看统计上个月订单购买总金额,查询结果为0 $preMonthStart strtotime(date(Ym01, strtotime("-1 month"))); $curMonthStart strtotime(date(Ym01)); # 统计上月份实际订单金额 $sql "SELECT count(money) FROM orders WH…

Flowable-服务-服务任务

文章目录 定义图形标记XML内容界面操作 定义 服务任务(Service Task)是一个自动化任务,无须人为参与,一般被用作调用服务。当流程执行到服务任务 时,可以自动执行编写的 Java 程序实现自定义的业务逻辑,完…

SpringMVC中的相关注解

文章目录 RequestMappingGetMappingPostMappingResponseBody传参RequestParamPathVariableRequestBodyRequestPartCookieValueSessionAttributeRequestHeader总结 RequestMapping 支持 GET/POST 类型的请求。()内写请求的访问地址。 即可以修饰类也可以修…

springboot2实现图片文件上传与mysql存储路径并回显

环境介绍 技术栈 springbootmybatismysql 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis 2.3.1 springboot是基于spring 4.0,springboot2是基于spring5.0,springboot2由pivotal公司在2018发布,这个框架主要用来…

Pytorch深度学习-----神经网络之池化层用法详解及其最大池化的使用

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Co…

一些类型推导相关的功能(C++)

目录 auto关键的新用法(C11起) 背景介绍 用法示例 注意事项 typeid运算符 type_info类 typeid的用法 decltype运算符 用法阐述 用法示例 用法建议 function类模板 用法阐述 用法示例 function较函数指针的优势 std::function和decltype的…

苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)

预期效果 对于超时没处理的需要定时程序处理。基于SpringTask实现。 来单提醒和客户催单。基于WebSocket实现。 Spring Task 介绍 Cron表达式 周几通常不能和日一起指定。 cron表达式在线生成器 在线Cron表达式生成器 入门案例 创建定时任务类 /*** 定义定时任务类*/ Slf4j…

OBS推流工具介绍及桌面录屏推流功能实现

OBS推流工具介绍及桌面录屏推流功能实现 文章目录 OBS推流工具介绍及桌面录屏推流功能实现1 OBS工具介绍2 OBS工具安装及简单使用2.1 安装步骤2.2 简单使用介绍 3 OBS实现桌面录屏推流工具实现4 总结 流媒体开发工程中,我们除了使用ffmpeg等工具辅助调试外&#xff…

《工具箱-数据库相关》Dbeaver数据导入“CSV格式“、“Txt格式“导入配置

《工具箱-数据库相关》DBeaver线下数据导入数据库表 Dbeaver数据导入"CSV格式"、"Txt格式"导入配置 使用CSV、Txt导入的时候,数据格式不同,在导入数据的时候,要根据数据编码样式设置不同的配置。 一、Txt格式导入 1.1 …

汇编语言基础知识

目录 前言: 汇编语言的产生 汇编语言的组成 内存 指令和数据 cpu对内存的读写操作 地址总线 数据总线 控制总线 内存地址空间 前言: 汇编语言是直接在硬件之上工作的 编程语言,我们首先了解硬件系统的机构,才能有效地应用…

CHI中的resp type

Rsp分为4大类; Completion response □ 除了PCrdReturn,PrefetchTgt,其他所有的trans都需要comp resp; □ 通常是一个trans的最后一个发送的message, 来自completer; 这个响应保证trans到达了POS/POC; □ 通常RN还会发送一个compack;Read an…

pytorch深度学习快速入门

放弃个人素质 享受缺德人生 拒绝精神内耗 有事直接发疯 一、安装Anaconda 官网下载地址 选择适合的系统版本进行安装即可 安装完之后,可以看到下面的内容 二、使用Anaconda创建开发环境 这也是为什么要使用Anaconda的原因,可以创建不同的开发环境&am…