AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

我们实施 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:062468

评论

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

什么是高效,什么是好的企业文化

Ryan Zheng

DistSQL:像数据库一样使用 Apache ShardingSphere

SphereEx

天津大学教授站上 WICC2021 “讲坛” 将分享边缘计算新研究

融云 RongCloud

用10个真实案列带你掌握MySQL调优

北游学Java

Java MySQL 性能调优

一文搞懂一致性hash的原理和实现

万俊峰Kevin

微服务 hash Go 语言

JVM优化过头了,直接把异常信息优化没了?

why技术

Java JVM

PNTree 目录结构树

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

为什么互动直播可以发展如此迅速?

anyRTC开发者

在线教育 视频直播 直播连麦 互动直播 电商直播

智汇华云|安超云套件Archer Cloudsuite为“信创强国”筑基

华云数据

360 政企安全集团基于 Flink 的 PB 级数据即席查询实践

Apache Flink

flink

PNFile功能介绍

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

如何保障服务器承受亿级流量(12)【限流】

我爱娃哈哈😍

架构设计 架构设计实战

PNFind文件搜索器

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

产业区块链迎来新纪元,基础设施建设成核心命题

旺链科技

区块链 产业 基础设施建设

PNFile 百科

Geek_6bf591

PNEdit文本编辑器

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

智慧能源:清洁低碳环保新能源,沙漠光伏与光热发电站 3D 可视化

一只数据鲸鱼

数据可视化 智慧能源 光伏发电 沙漠光伏

PNFile入门指南

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

PNComp目录比较器

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

打造全景5G专网运营能力,差异化赋能行业生态

鲸品堂

场景

容器安全检查列表

greatersecurity

容器 云原生 DevSecOps

从零开始学习3D可视化之数据对接(1)

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

Go语言,你必须掌握的--高效并发模式!

微客鸟窝

Go 语言

什么是MircoPython?

华为云开发者联盟

Python 编程语言 物联网 MicroPython 嵌入式应用

比redis-rdb-tools快10倍的rdb分析工具

BUG侦探

redis bigkey rdb分析

Uber 多区域 Kafka 的灾难恢复

奔着腾讯去

Apache kafka 分布式

手写希尔排序算法

实力程序员

编程 程序员 C语言 排序算法

百度内容风控是怎样在秒级之内完成词表匹配

百度Geek说

百度 内容审核

Tapdata 荣获2021中国创新势力榜“最佳数字中台企业服务品牌”大奖

tapdata

Tapdata 最佳数字中台企业服务品牌

PNEdit 百科

Geek_6bf591

vim emacs vscode UltraEdit 文本编辑器

[翻译] 关于学习 InnoDB:InnoDB 核心之旅

keaper

MySQL 数据库 后端 服务端 innodb

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