`
征途2010
  • 浏览: 248497 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

disconf分布式配置管理(二) 与spring集成

阅读更多

上一章介绍了disconf的安装预配置,这章主要介绍下disconf与spring集成

1、添加依赖

 

<dependency>
            <groupId>com.baidu.disconf</groupId>
            <artifactId>disconf-client</artifactId>
            <version>2.6.36</version>
        </dependency>

 

 

2、修改配置文件

   修改spring的配置文件spring-config.xml

    添加初始化配置

    

	<!-- 使用disconf必须添加以下配置 -->
	<bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
		destroy-method="destroy">
		<property name="scanPackage" value="com.abcde" />
	</bean>
	<bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
		init-method="init" destroy-method="destroy">
	</bean>
<!-- 自动完成创建代理织入切面 -->
	<aop:aspectj-autoproxy />

   增加一个disconf.properties配置文件到classpath下:

  

# 是否使用远程配置文件
# true(默认)会从远程获取配置 false则直接获取本地配置
disconf.enable.remote.conf=true

#
# 配置服务器的 HOST,用逗号分隔  127.0.0.1:8004,127.0.0.1:8004
#
disconf.conf_server_host=172.20.50.26:8990
#disconf.conf_server_host=127.0.0.1:80

# 版本, 请采用 X_X_X_X 格式 
disconf.version=1_0_0_0

# APP 请采用 产品线_服务名 格式 
disconf.app=pinganwj_appt

# 环境disco
disconf.env=dev

# 忽略哪些分布式配置,用逗号分隔
disconf.ignore=

# 获取远程配置 重试次数,默认是3次
disconf.conf_server_url_retry_times=1
# 获取远程配置 重试时休眠时间,默认是5秒
disconf.conf_server_url_retry_sleep_seconds=1

# 用户指定的下载文件夹, 远程文件下载后会放在这里
disconf.user_define_download_dir=./disconf/download

# 下载的文件会被迁移到classpath根路径下,强烈建议将此选项置为 true(默认是true)
disconf.enable_local_download_dir_in_class_path=true

 

 

3、通过xml的分布式配置  

   添加静态配置文件

   

<!-- 使用托管方式的disconf配置(无代码侵入, 配置更改不会自动reload) -->
	<bean id="configproperties_no_reloadable_disconf"
		class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
		<property name="locations">
			<list>
				<value>file:config/global.properties</value>
				<value>file:config/jdbc.properties</value>
				<value>file:config/config-db.properties</value>
				<value>file:config/clinic-api.properties</value>
			</list>
		</property>
	</bean>
<bean id="propertyConfigurerForProject1" class="com.abcde.core.base.utils.PropertyPlaceholder">
		<property name="ignoreResourceNotFound" value="true" />
		<property name="ignoreUnresolvablePlaceholders" value="true" />
		<property name="propertiesArray">
			<list>
				<ref bean="configproperties_no_reloadable_disconf" />
			</list>
		</property>
	</bean>

 

 

    添加动态配置(托管式),启动时下载配置文件;配置文件变化时,负责动态推送。程序不会自动reload配置,需要自己写回调函数(实现IDisconfUpdate接口,并添加DisconfUpdateService注解)

   

<!-- 使用托管方式的disconf配置(无代码侵入, 配置更改会自动reload) -->
	<bean id="configproperties_reloadable_disconf"
		class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
		<property name="locations">
			<list>
				<value>file:config/kafka.properties</value>
				<value>file:config/emailSendConfig.properties</value>
			</list>
		</property>
	</bean>

<bean id="propertyConfigurerForProject"
		class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer">
		<property name="ignoreResourceNotFound" value="true" />
		<property name="ignoreUnresolvablePlaceholders" value="true" />
		<property name="propertiesArray">
			<list>
				<ref bean="configproperties_reloadable_disconf" />
			</list>
		</property>
	</bean>

   

 

   

@Component
@DisconfUpdateService(confFileKeys = { "kafaka.properties" })
public class KafakaConfigCallback implements IDisconfUpdate {

    @Override
    public void reload() throws Exception {
    }

}

 

 

 4、基于注解的分布式配置

 

 

@Configuration    
@DisconfFile(filename="redis.properties")  
public class JedisConfig implements IDisconfUpdate {    
    
    protected static final Logger LOGGER = LoggerFactory    
            .getLogger(JedisConfig.class);    
    
    // 代表连接地址    
    private String host;    
    
    // 代表连接port    
    private int port;    
    
    /**  
     * 地址, 分布式文件配置  
     *   
     * @return  
     */    
    @DisconfFileItem(name = "redis.host", associateField = "host")    
    public String getHost() {    
    
        return host;    
    }    
    
    public void setHost(String host) {    
    
        this.host = host;    
    }    
    
    /**  
     * 端口, 分布式文件配置  
     *   
     * @return  
     */    
    @DisconfFileItem(name = "redis.port", associateField = "port")    
    public int getPort() {    
    
        return port;    
    }    
    
    public void setPort(int port) {    
    
        this.port = port;    
    }    
    
    public void reload() throws Exception {    
    
        LOGGER.info("host: " + host);    
    }    
}    

 

 

   

分享到:
评论

相关推荐

    SpringCloud之七 分布式配置中心SpringCloudConfig.pdf

    6. 与Spring Cloud的无缝集成:Spring Cloud Config天然与Spring Cloud生态中的其它组件进行集成,例如Spring Cloud Eureka、Spring Cloud Bus等,使得整个微服务架构可以更流畅地协同工作。 7. 国内配置中心技术...

    disconf-demo

    【标题】"disconf-demo" 是一个基于Spring Boot框架的示例程序,它展示了如何集成和使用disconf(分布式配置中心)这一工具。这个项目旨在帮助开发者了解如何在Spring Boot应用中实现分布式配置管理,从而实现配置的...

    disconf使用

    1. 配置管理:Disconf提供了一个可视化的Web界面,允许开发者在线编辑、查看和管理配置。这些配置可以是XML、properties等格式,支持多环境(如开发、测试、生产)的配置隔离。 2. 实时更新:当配置在Disconf中被...

    disconf小文档

    disconf可以方便地与Spring、Dubbo等框架集成,实现配置的自动加载和更新。 6. **监控与报警** 提供了配置变更的监控功能,当配置发生变更时,能够及时通知相关人员,确保配置的正确性和稳定性。 7. **安全性** ...

    springboot集成百度disconf

    由于Disconf是基于Spring框架设计的,因此与SpringBoot的集成相对平滑。 2. **配置Disconf** 配置`disconf-client.properties`文件,包括服务器地址、访问凭证等信息。这通常在资源目录下的`config`文件夹内创建。...

    分布式配置中心选型

    6. **多客户端支持**:提供Java和.Net原生客户端,方便与各种应用集成,支持Spring的多种注解和配置方式,同时提供Http接口,非Java和.Net应用也可使用。 7. **开放平台API**:支持通过API进行配置的修改和发布,...

    开源配置中心对比

    一个高效、可靠的配置管理中心能够帮助团队更好地管理分布式系统的配置信息,实现配置的动态化、集中化管理,并有效支持不同环境下的灵活配置。本文将对当前市场上热门的几款开源配置中心进行对比分析,旨在为技术...

    spring-dubbo-service:微服务spring dubbo项目:dubbo rpc;德鲁伊数据源连接池; mybatis配置集成,多数据源; jmx监控MBean;定时任务; aop; ftp;测试;指标监控;参数验证;跨域处理; shiro权限控制; consul服务注册,发现; redis分布式锁; SPI服务机制; cat监控; netty服务代理; websocket; disconf; mongodb集成;休息; docker; fescar

    spring-dubbo-service微服务一,服务模块1,服务器配置:servlet,侦听器,拦截器,过滤器,aop,定时任务mybatis配置集成,多数据源;级联查询一对一对一对多注解配置及xml配置方式;分页处理:传递Page参数或继承...

    微服务一站式解决方案SpringCloud.docx

    - **配置管理**:Disconf、QConf、Diamond和Archaius等提供分布式环境下的配置管理。 - **负载均衡**:Ribbon提供了客户端的负载均衡策略。 - **服务熔断**:Hystrix帮助实现服务降级和熔断,保护系统免受雪崩效应...

    config center

    Spring Cloud Config 是 Spring 生态系统中的一个组件,提供了客户端和服务器端的实现,便于在微服务架构中管理配置。Nacos 是阿里巴巴开源的,集成了配置管理和服务发现功能的平台,易于使用且性能强大。Disconf 是...

    微服务架构的基础框架选择终稿.pdf

    例如,Dubbo可以通过集成其他开源项目(如钻石、disconf)实现分布式配置,或使用Hydra进行服务跟踪,但这增加了系统集成的复杂性。Spring Cloud的Config组件不仅提供配置管理,还支持版本控制,与应用版本管理无缝...

    微服务架构的基础框架选择.pdf

    这意味着Spring Cloud能够提供更完整的微服务生态系统,而Dubbo可能需要与其他第三方组件集成以实现类似功能,如使用Diamond或Disconf进行分布式配置管理,使用Hydra进行服务跟踪,使用Elastic-Job进行批量任务处理...

    vacomall:基于dubbo实现的分布式电商平台

    Disconf(百度分布式配置),Nginx(LB负载均衡),Shiro(轻量级权限框架),SSO(单点登录),Solr(搜索引擎),文件存储(百度BOS,七牛云),邮件(邮件),短信(短信),Maven Nexus(Maven私服),Docker...

    第九章NacosConfig--服务配置

    3. SpringCloud Config:Spring Cloud自带的配置中心,与Spring框架无缝集成,配置存储支持Git,但缺乏可视化界面,配置更新需重启或手动刷新。 4. Nacos:SpringCloud Alibaba组件,集成了服务注册和配置中心功能,...

    开源社区的微服务生态体系.pdf

    6. **配置管理**:Disconf、Doozer、SkyDNS、Spring Cloud Config等用于集中管理和分发服务的配置。 7. **服务网格**:Istio、Linkerd等新兴技术,提供更高级别的服务间通信管理,包括安全、路由和监控。 在选择...

    javaweb数据分析项目源码-spring-boot-learning-examples:SpringBoot工程实践,快速上手Spring

    使用travis-ci持续集成 使用codecov进行代码覆盖率检查 学习案例以模块方式划分,每隔模块都是独立可执行项目,直接运行Application即可 分享平台 博客: Github: 项目模块 └── 基础入门 └── Web开发 └── ...

Global site tag (gtag.js) - Google Analytics