配置文件我们都用,但是毕竟用好用顺需要按照规范来使用,才能在开发运维中游刃有余,庖丁解牛般丝的柔顺。
Q:什么情况适用配置文件?
A:配置是由于适应变化而使用的外部存储。这个变化可以是技术上的变化,如交互通讯的IP地址,技术组件的开关,数据库执行脚本的选择等;也可以是业务需求的变化,如业务流程的组装,营销策略的开关等。而大多数可以复用的框架,由于需要适应不同的场景,一般都有大量的配置项。大多数配置项都存放于文件系统,因为对于大多数环境来说,文件系统是都可以满足的最低条件。
Q:商用软件如何设计配置文件?
A:我们认为大多数商用软件的运行环境都有数据库软件(*),如果配置文件不涉及到软件启动的开关条件,仅在业务场景下所使用的情况,则可以将配置项存放于数据库。然后提供人工或者自动的触发功能去刷新,这样就可以不需要重新启动应用。需要指出的是,在刷新数据库配置项的时候,不适于做大数据量的更新,以免造成业务数据依赖的配置差异。如果需要大数据量的更新配置,考虑在业务系统非繁忙时候再实施。
配置文件应当避免打包在war/jar中,应用应当提供一个固化的文件系统位置,如$HOME/config等规范名称存放。配置文件的个数应当避免数量过多,可以使用配置节等技术来管理配置项的条目。
另外额外需要重申的是,配置文件的设计应当提供设计说明文档,通常是处于详细设计文档之中。当配置文件中的配置项发生变化时,应当更新详设文档。做好以上的条目,才能说设计好了商用软件的配置。
注(*):就事论事的作者工作的机构的常见做法。
Q:配置文件设计不良会怎么样?
A:鉴于这是一个公共BLOG平台,有些涉及商业机密的以及显而易见的不愿意提及的阴沟里翻船的经验,不适用码字的方式展现。如需作者的手机号码,请找出隐藏在本文中的白色前景色文字。(假的,不可能存在。读者请勿尝试——作者按。)