应用配置信息的演化之路

简介: 本文主要介绍应用配置信息的演化之路

   不论单体架构还是服务化架构甚至是微服务架构,系统中肯定保存必要的配置信息,比如连接的数据库地址、缓存地址、第三方服务地址、日志中间件配置、消息中间件配置等等。本文重点阐述了这些配置信息在开发演化过程中是如何动态变化的,不同时期的存储及应对方案。


一、初期


   应用系统初期,往往采用单体架构,基本上该阶段,技术是服务于业务的。毕竟公司要生存,平台要快速试错,允许快速发展。改阶段往往在系统中直接采用xml、json、properties、yml等格式的文件直接存储配置信息。如下:

spring:# 模板引擎  thymeleaf:    mode: HTML
    encoding: utf-8
# 禁用缓存    cache: false  jackson:    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
  profiles:     active: druid
# 服务模块  devtools:    restart:# 热部署开关      enabled: true# MyBatismybatis:# 搜索指定包别名    typeAliasesPackage: com.ruoyi.project
# 配置mapper的扫描,找到所有的mapper.xml映射文件    mapperLocations: classpath:mybatis/**/*Mapper.xml
# 加载全局的配置文件    configLocation: classpath:mybatis/mybatis-config.xml

这么做优点是开发简单,部署运维方便,服务部署的节点不会太多,研发完成后只需要打包即可。该阶段的逻辑图如下:

image.png

缺点也很明显,每次修改都要打包,而且如果开发环境和测试环境,正式环境配置不一致,打包会比较麻烦。


二、多环境配置打包


本阶段主要解决开发环境多,配置文件动态变化的问题。以Java为例,可以使用Maven结合profile,springboot对于多环境支持更加方便,只需要在打包时指定环境,则自动使用指定的配置文件进行管理。

mvncleanpackage-pdev

对于多环境,只需要将有变化的配置文件提取出来,打包时使用动态命令即可满足上述需求。具体实例会在后续文章中详细讲解。


三、服务化打包


在应用服务化的需求下,部署的节点很多,单个服务打包部署,时间和人力成本非常高,怎么提高效率和防止配置错误问题。这个阶段通常会采用配置中心进行统一管理。应用采用持续集成的方式进行管理,打包后直接部署至对应环境,各应用根据配置中心的配置信息,动态读取信息,更方便高效的管理服务。该阶段的逻辑图如下:

image.png

引入配置中心的目的是,应用开发跟配置完全解耦。而且通过配置中心可以实现无感升级,应用不需要重启即可完成配置更新。关于配置中心的使用和案例,会在后续文章中和大家分享。


以上是应用开发过程中,配置文件的软件研发进程中的演进史。技术是业务的支撑,是协助业务实现。“脱离场景谈优化配置都是耍流氓”,针对不同的场景,结合现状,得到最符合当前业务的技术配置架构。对于配置优化,欢迎交流。

目录
相关文章
|
4月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
1月前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
80 0
|
4月前
|
Java Spring 容器
建模底层逻辑问题之以Spring IOC容器为例,使用因果法建模,如何操作
建模底层逻辑问题之以Spring IOC容器为例,使用因果法建模,如何操作
|
5月前
|
Java Spring
Spring初始化加速的思路和方案问题之DAG分析在Spring并行初始化中面临哪些困难
Spring初始化加速的思路和方案问题之DAG分析在Spring并行初始化中面临哪些困难
|
6月前
|
SQL 消息中间件 分布式计算
Hadoop生态圈组件及其作用
Hadoop生态圈组件及其作用
|
消息中间件 前端开发 小程序
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
|
存储 NoSQL 算法
【实战场景一】设计一个分布式环境下全局唯一的信号器
如何正确设计一个分布式环境下全局唯一的信号器?
148 0
|
前端开发 小程序 机器人
DDD实战之五:战略设计之上下文映射和系统分层架构(上)
DDD实战之五:战略设计之上下文映射和系统分层架构(上)
DDD实战之五:战略设计之上下文映射和系统分层架构(上)
|
Java Maven
架构:第二章:单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
架构:第二章:单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
架构:第二章:单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
|
运维 Kubernetes 监控
K8S(二):整体架构,从全局上把握K8S核心组件
整体架构,从全局上把握K8S核心组件
176 0
K8S(二):整体架构,从全局上把握K8S核心组件