分布环境下的配置集中管理
最近看了一下项目中的配置感觉很乱,写出一些自己对项目配置的想法,与大家交流。
?
集中管理的目标:
1:所有节点的配置都集中在一个节点(配置节点)生成、发布、刷新,通过配置模板实现节点的差异化配置达到资源的合理利用
2:配置本身(包括配置文件等)集中在同一目录下,而不是散落在应用的各个角落,从而方便运维人员进行配置
3:开发人员对配置的读取,采用统一的读取方法,而不是各行其道,从而实现对配置的管控,方便以后对配置这边做统一的处理,如缓存、刷新等。
技术特点:
1:通过root.xml 检索配置,不需要把配置文件硬编码在代码中,root.xml 样例
<configs>
<config name="test" path="test.xml" type="xml" cacheable="true"></config>
</configs>
2:通过规则配置文件实现对配置文件的解析,而不需要写java代码,例如root.xml 对应的规则配置文件为 rules-root.xml,其内如如下
<?xml version="1.0" encoding="UTF-8"?>
<digester-rules><pattern value="configs"><object-create-rule classname="com.asiainfo.base.config.Configs"></object-create-rule></pattern><pattern value="configs/config"><object-create-rule classname="com.asiainfo.base.config.Config" /><set-properties-rule><alias attr-name="cacheable" prop-name="cacheAble" /></set-properties-rule><set-properties-rule><alias attr-name="name" prop-name="name" /></set-properties-rule><set-properties-rule><alias attr-name="path" prop-name="path" /></set-properties-rule><set-properties-rule><alias attr-name="type" prop-name="type" /></set-properties-rule><set-next-rule methodname="addConfig" /></pattern></digester-rules>?
3:通过统一的配置工厂类实现对配置的读取 ConfigFactory.createConfig("test");
4:支持多种类型的配置如xml、properties、数据库等