分布环境下的配置集中管理

最近看了一下项目中的配置感觉很乱,写出一些自己对项目配置的想法,与大家交流。

集中管理的目标:

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、数据库等

猜你喜欢

转载自movenut.iteye.com/blog/710451