时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

我们实施 DevOps 的挑战之二 -- 配置文件的困惑

  • 2020-04-17
  • 本文字数:1821 字

    阅读完需:约 6 分钟

我们实施DevOps的挑战之二 -- 配置文件的困惑

在上一篇中谈到了「敏捷文化」,很多朋友质问我,上来就谈所谓“文化”太虚了吧,这不像你的风格啊。可我想说的是,在 DevOps 的路上,每天让我们感到最困难的,其实不是技术攻关,也未必是业务场景,而恰恰是敏捷思路与传统观念的转变。


技术,可以一针见血,无非出血量的多少罢了。


思路,只能慢慢培养,和谈恋爱其实差不多,开房很容易,但能一见面这就结婚吗?当然,这也可以,这却增加了离婚的可能性。


其实没什么,就是写写心得罢了。


当然,这种回复被身边的朋友叫做「这 B 装的我们给 100 分」「说不过你」。对此我来了个广告「请关注下一篇」。


没有 DevOps 之前,配置文件是怎么玩的呢?


在「群雄割据」的时代里,通常一个 Jar 或一个 War 就可以打天下,以 Spring+properties 为例,对配置文件的适用场景基本可分为两种类型:


配置文件位于 classpath 下


使用 spring 的 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 类加载 Properties 配置文件,通过源码可以知道,默认加载的是 classpath 下的文件,配置如下:



如果有多个配置文件加载,则:



配置文件位于外部目录


但是对于外部目录的配置文件,使用 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 也是可以加载的,不过要修改他的路径配置方式,如下:



这样就可以成功加载外部目录的配置文件了,${user.dir}是系统变量,指用户当前目录所在。


当我们从「群雄割据」来到「天下一统」的时期后,虽然 DevOps 提升了交付效率,越来越满足快速试错的原则,可随之而来的「技术污染」却与日体现:


…………


配置文件的版本如何与程序版本对应?


配置文件的管理如何更加简便?


配置文件的修改该有谁来操作?


配置文件的更新是否可以不影响正常服务?


…………


无论哪一项污染,只会与 DevOps 扯上关系,都是让人头痛不已。


撸起袖子,不要怂,咱们搞个配置中心吧。


有了 DevOps 之后,配置文件又是怎么玩的呢?


其实想通过 DevOps 获得业务收益,无论从哪个环节启动,都将是一场持久战。


随着系统产品化的改造,通过 DevOps 流水线的快速交付通道,任何一个交付版本都可以通过 CI 与 CD 环节后,利用自动化部署工具,轻松地完成升级或发布;


这段看似美妙的诱惑,首先挡住去路的,就是配置文件的使用与加载方式。


如果不将配置信息外移至配置中心,在 DevOps 中会出现哪些问题呢?


维护成本:系统拆分了更细了,增添 CI 与 CD 环境后,每个应用在每个节点下,都需要在本地维护一套完整的配置文件;


操作风险:配置修改随意,无操作痕迹,易出错;


版本需求:一切皆产品,一切皆版本,配置文件如何解决版本化控制问题?



图 1:配置中心在 DevOps 快速交付通道中


你不是常说你们的场景都是持续污染的吗?谈谈如何在污染环境下接入吧


的确,在整个接入过程中可以说是一波三折,原因很简单,之前「群雄割据」时期的每一位诸侯都有自己玩转配置的一套方案,现在你说统一就统一?


无法满足我要求的,我不接


这话表面看起来有些生硬,不过想想挺有道理的,所以在配置中心的方案中,我们提出了“三种适配器,两种推进器”的理念。


三种适配器



图 2:适配器 Trade,满足原有使用 Properites 的诸侯们



图 3:适配器 Native,满足已使用过自研独立配置服务的诸侯们



图 4:适配器 Ccms,满足使用 Key/Value 的诸侯们


两种推进器



图 5:希望采用 “文件被动加载” 的诸侯们



图 6:希望采用 “Key/Value 实时推送” 的诸侯们


从某种角度来说,就算没有配置中心的存在,我相信 DevOps 的推进也会顺理成章,只不过相对不会如此平滑,或多或少给未来造成风险


有了配置中心,诸侯们的确享受到了福利:


配置统一在服务端维护,同一环境下所有应用节点共享同一份配置;


配置控制台提供鉴权、操作日志等服务;


配置控制台实现了版本控制,修改的配置需要发布后生效,减少误操作;


配置发布后,实时通知应用端,无须重启即可使用;


配置版本支持一键回滚;


配置控制台实现了整体复制、导出、批量修改等功能;


写到这里,太阳出来了


每次在结束语中都会诉诉苦,不过年末的各种事项的确有点打乱节奏,写作时间也随之调整到了工作日的清晨 6 点-8 点之间,所以效率与质量也或多或少受到影响。


本文主要讲述围绕配置信息管理和使用在 DevOps 过程中的那点事,所以对配置系统自身的原理与技术实现并未做详细的描述,如对这块有兴趣,欢迎大家在留言区中提出,我将通过独立的整篇文章加以叙述。


本文转载自头哥侃码公众号。


原文链接:https://mp.weixin.qq.com/s/99SqnEe9MGKzSbtvVR6sog


2020-04-17 15:062531

评论

发布
暂无评论
发现更多内容

一文带你搞清楚Python的多线程和多进程

华为云开发者联盟

Python 华为云 华为云开发者联盟 企业号2024年6月PK榜

从源码分析 vllm + Ray 的分布式推理流程

阿里技术

突破瓶颈:如何优化 LLMs 的落地成本和延迟

Baihai IDP

程序员 AI LLMs 企业号 6 月 PK 榜 Agents

还能报名!风靡硅谷开发者的Unstructured Data Meetup杭州站与您6月15日见面!

Zilliz

"数据集成国产化:谷云科技的零代码ETL平台与行业创新"

谷云科技RestCloud

ETL 数据集成 ETLCloud

和鲸101领航北中医:助力健康医疗AI实验室建设,培养交叉数据人才

ModelWhale

人工智能 北中医 健康医学

和鲸101加持,高效SAAS服务赋能暨大经管交叉学科数据人才培养

ModelWhale

人工智能 大数据 经管 暨南大学

深度剖析集团型企业在新质生产力和数字化转型过程中面临的身份管理问题(四)

芯盾时代

iam 统一身份认证 身份和访问管理 统一身份管理平台

软件测试学习笔记丨Python 基本数据类型

测试人

软件测试

AIGC系统中聊天小助手卡片小组件嵌套设计实践

京东科技开发者

MySQL 示例数据库大全

Simon

MySQL

电商商品数据采集的智能化:淘宝/天猫商品详情API接口的AI应用

技术冰糖葫芦

API Explorer API 接口 API 策略 pinduoduo API

数字化供应链平台:优化运营、驱动创新的未来之路

天津汇柏科技有限公司

数字化转型 供应链

为什么我的项目Debug运行没问题,编译成Release包就报错?

京东科技开发者

国内首家!悦数图数据库全项完成中国信通院图数据库性能测试

悦数图数据库

数据库 信创 图数据库 知识图谱 悦数图数据库

从游戏场景看,ByteHouse存算分离架构如何实现降本增效

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

NFTScan 正式上线 Sei NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFT\ NFTScan

Databend 开源周报第 148 期

Databend

通过搭建 24 点小游戏应用实战,带你了解 AppBuilder 的技术原理

Baidu AICLOUD

大模型 AI 原生云 AI原生应用 AppBuilder

构建电商竞品分析工具:以京东商品数据为例

tbapi

京东 竞品分析 京东商品列表数据接口 京东数据接口

客户案例 | 通过流程智能帮助国际餐饮巨头企业快速开万店

望繁信科技

数字化转型 智慧餐饮 流程挖掘 流程智能 望繁信科技

我们实施DevOps的挑战之二 -- 配置文件的困惑_DevOps & 平台工程_头哥侃码_InfoQ精选文章