这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战
- ?欢迎点赞 :? 收藏 ⭐留言 ? 如有错误敬请指正,赐人玫瑰,手留余香!
- ?本文作者:由webmote 原创,首发于 【掘金】
- ?作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!???
? 序言
每个应用或者服务都会或多或少的接触到配置参数,最简单的应用可能会把配置硬编码到程序代码里,而更复杂的微服务可能需要一个统一的配置中心来发布配置参数,就让我们看看它们的发展历程吧。
? 1.硬编码配置
硬编码就是直接把配置参数写到代码内,虽然硬编码可能看起来不是很完美,但其实它的出现还是非常多的。
比如我们常用的桌面软件,大部分都是硬编码到内置代码,而不需要用户修改任何参数的。
像我们在windows上使用的记事本、画图等,它们内部也许有简单的参数,甚至并没有多余的参数,当然既然没有暴露出什么配置文件,必然会硬编码到系统内的。
有时候我们自己开发一些简单小工具,就仅仅限于内部用,也会简单的硬编码到代码中。
硬编码形式如下:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source=.;Integrated Security=true;Initial Catalog=Time";
conn.Open();
复制代码
? 2.配置文件
随着系统的环境越来越复杂,可能我们需要在不同的环境设置不同的参数,那么最流行的一种配置方式出现了,它就是配置文件。
asp.net core内置了对配置文件的支持,因此使用起来也很方便。 并且通过对延展扩展名文件的监控支持,可以支持不同环境加载不同的配置文件。
这里以appsetting.json为例,看看配置文件是什么样的形式。
"profiles": { "IIS Express":
{ "commandName": "IISExpress", "launchBrowser": true, "environmentVariables":
{ "ASPNETCORE_ENVIRONMENT": "Development" }, "nativeDebugging": true }
复制代码
现在流行的是json文件作为配置文件,当然还有更多的文件作为配置,比如经典的ini文件格式,曾经风靡一时的xml文件,现在云原生常用的yaml格式。
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
复制代码
? 3.配置到数据库、远程文件
配置文件还可以存储到数据库或远程文件,这种的存储方式和本地配置文件稍微不同,具有分布式访问的特性。
微服务的配置,如果未能实现配置中心,可以采用这种方式,作为集中式配置管理的一种方式,具有统一配置,独立分发的特性。如果用一些定时拉的方式,甚至可以实现运行时更新的效果。
从网上借一张图,来看看大概数据库的存储。
? 4. Apollo配置中心
作为微服务配置中心的佼佼者,携程的Apollo,架构复杂,使用简单。其架构方式如下:
其拥有丰富的功能和可配置的界面,可谓开箱即用型,当然其部署作为配置中心来看是重量级的。
- 推配置
- 拉配置
- 灰度
- 版本
- …
? 5. 云原生配置
提到云原生的配置,那肯定是K8s的configmap资源方式,通过配置映射文件,可以在每个容器启动时加载到容器的环境变量内,以供使用。
虽然其底层并不支持热更新,但利用K8s自身的实例加载功能,也算是间接的实现了热更新。
? 6. 小结
嗯,这章有点水了,后面再总结时补充进来。
例行小结,理性看待!
结的是啥啊,结的是我想你点赞而不可得的寂寞。???
?都看到这了,还在乎点个赞吗?
?都点赞了,还在乎一个收藏吗?
?都收藏了,还在乎一个评论吗?