今天学习有关配置的内容,先看提示:
提示55 使用外部配置参数化应用程序。
作者首先举出了很多适合参数化的内容,接着就分析了参数化的几种方式:静态配置(文件或者数据库表中)和配置服务化。这里作者认为把配置数据储存在一个服务 API之后更好。这样配置数据可以用专门的UI在任何地方维护,可以变得动态。而之所以需要外部配置,需要动态配置就是为了让代码适应性和灵活性更好,能够活得更长久。
我们系统中也有很多配置,围绕配置也出过很多问题,想过很多方案。而且我们还没有一个统一的规范,有一些配置放在文件里,有一些放在数据库里面,还有一些则可以通过服务API去相关系统中获得。这导致有些配置改动的代价不同,通过服务API的相对比较简单,可以去相关系统中通过UI就可以修改,数据库中的则稍微复杂,有些可以通过特定的UI flow去修改但多数只能通过patch的方式手动干预数据库内容。文件中的配置更改情况则更为复杂,有一些只需要你找到服务器上特定的文件,修改内容,每次都会去重新读取,有一些已经被读到内存里面的改了文件还不行可能需要刷新cache甚至重启server,甚至有一些底层框架性的东西需要重启整个jboss容器才能生效。
我关于配置的问题也吃过很多亏,在这里想要分享一个小故事。我们的接口一般都是通过下游DMTP系统去对接。当然这有很多好处,扩展了很多功能,但也多出了一些耦合。特别在一些非常简单的接口面前,我有一次使用DMTP对接一个简单的webService,但由于框架等问题,调试了接近两天还一直有很奇怪的问题,最后干脆在我们系统中直接调用这个接口,仅仅十分钟就完成了相关的代码,而且绕过了相关的问题。所以我就想我们使用DMTP核心的优势是什么,或者说决定我们到底用不用DMTP的关键是什么?我认为就是相关参数可以实现通过服务API动态获取,更为灵活方便。当然,实际使用过程中,配置的灵活性和安全性如何权衡,这又是一个值得认真思考的问题。
网友评论