应用配置信息的演化之路

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

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


一、初期


   应用系统初期,往往采用单体架构,基本上该阶段,技术是服务于业务的。毕竟公司要生存,平台要快速试错,允许快速发展。改阶段往往在系统中直接采用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

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


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

目录
相关文章
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
2月前
|
对象存储 数据安全/隐私保护
就软件研发问题之数据流动支持目录级别映射的问题如何解决
就软件研发问题之数据流动支持目录级别映射的问题如何解决
|
3月前
|
存储 算法 调度
iLogtail设计模式问题之如何确定定时任务框架的功能边界和目标
iLogtail设计模式问题之如何确定定时任务框架的功能边界和目标
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
从提示工程到代理工程:构建高效AI代理的策略框架概述
该文探讨了AI代理的发展,特别是ChatGPT等模型如何展示了AI系统的潜力。文章提出从提示工程转向代理工程,定义了代理能力需求,并提出一个框架来设计和实施AI代理。代理工程涉及明确代理的任务、所需行动、能力及熟练度,通过现有技术满足这些需求。文章强调了广泛和特定知识的熟练度、精确信息获取以及代理的结构设计和协调。随着技术进步,该框架为AI代理的未来发展提供了基础。
225 0
|
存储 uml
「应用架构」TOGAF建模:应用程序迁移图
「应用架构」TOGAF建模:应用程序迁移图
|
消息中间件 开发框架 JSON
「第二部:容器和微服务架构](13) API和契约的创建发展和版本控制
「第二部:容器和微服务架构](13) API和契约的创建发展和版本控制
|
存储 NoSQL 算法
【实战场景一】设计一个分布式环境下全局唯一的信号器
如何正确设计一个分布式环境下全局唯一的信号器?
143 0
|
弹性计算 容灾 网络架构
如何创建一个多活容灾的应用底层架构
如何创建一个多活容灾的应用底层架构
|
Java Maven
架构:第二章:单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
架构:第二章:单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
架构:第二章:单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
|
运维 Kubernetes 监控
K8S(二):整体架构,从全局上把握K8S核心组件
整体架构,从全局上把握K8S核心组件
168 0
K8S(二):整体架构,从全局上把握K8S核心组件
下一篇
无影云桌面