程序员修炼之道32-配置

2022-02-23  本文已影响0人  DZQANN

配置要从简

配置如果过于复杂很容易出错,并且对于改动不友好。约定大于配置这句话就是这么来的。比如maven项目中java代码就是要放在/src/main/java里面,SpringBoot的配置文件就要叫application.yml/properties等等,大多数系统都前面一律的配置就不要配置了。

配置文件还带来了一个问题就是查问题的时候不方便排查。比如之前的一个独立环境的邮件功能总是会报邮件发送错误,报邮件地址是空,排查了很久都没有查出报错原因,后来发现其它的邮件功能也都无法使用,才意识到之前的方向错了,我们一直以为是业务代码里获取的收件人是空,结果是配置文件中的发件人忘记配置了,一直的报错是发件人是空。

配置存储的位置

这是一个需要有规范但是又不需要规范的太严格。

配置存储的位置在我们的系统中我觉得可以分为3类:

项目启动配置

这个其实没有什么别的选择,只能配置在配置文件中。总不能说我的配置都在Mongo里,包括MongoTemplate的启动参数

极少改变的配置

这个配置我们系统目前的solution是非常好的。将配置存储在MongoDB中,每一个应用节点都在项目启动后只下一次DB将配置内容存储进内存,并且提供UI触发刷新缓存的机制。

好的例子就是我们的数据变动需要发送到外部系统,destination是可以配置在MongoDB中的,这样就可以灵活的配置了。

需要支持灵活改变的参数

最好的例子应该是我们的定时任务。我们的定时任务支持通过配置文件传入不同的参数值来运行,比如刷新系统中的一段时间的订单信息,那时间范围就可以通过配置文件来指定。这种参数其实和对外暴露的API接口没有太大的区别了。

配置文件其实没有什么太多要说的内容,主要是系统中最好有一个比较好的规范,什么类型的配置需要以哪种形式进行存储。

上一篇下一篇

猜你喜欢

热点阅读