欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

几种集中式管理框架比较

程序员文章站 2022-05-08 13:05:02
...

最近因为项目管理上的需要,调研集中式管理工具。

百度Disconf携程Apollo阿里ACM ,三者都可以满足集中式配置,并提供监听,实时改变配置。

关于3个框架的使用以及搭建请自行参考官方API文档,不再叙述。对比了3个框架的配置,如下。

disconf 依赖比较多,比如zookeeper等都需要提供环境;

apollo依赖较少,只有一个db。阿波罗在多环境配置时,需要搭建多个config-server,这种结构非常干净,但是多环境产生成本,所以暂未使用。

ACM阿里目前是不收费的,我们因为用了很多阿里云的服务,所以集成比较方便。

3者的核心都是提供一个配置中心,提供分布式的服务,并提供监听。ACM文档内有spring-cloud的支持。

集成时,对于运行时变量可以通过监听配置;对于spring启动配置参数,可以参考PropertyPlaceholderConfigurer读取配置文件,自定义一个读取类,集成第三方监听。改进后的结构如下,启动时根据远程配置更新本地读取到的properties配置。

	@Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
        super.processProperties(beanFactoryToProcess, props);
        
        //taosj 20180829 读取完properties之后;根据阿里云的配置,更新properties,并启动监听
        try {
        	this.logger.info("Start load ACM configuration.");
        	AcmConfig acmConfig = this.getConfig(props);
        	this.registerAcm(acmConfig, props);
		} catch (Exception e) {
			this.logger.error("{}", e);
		}
        ACM_PROP_MAP = new HashMap<String,String>();
        for (Object key : props.keySet()){
            String keyStr = key.toString();
            String value = String.valueOf(props.get(keyStr));
            ACM_PROP_MAP.put(keyStr,value);
        }
    }