Disconf 配置中心的使用过程
1. Disconf 的安装
参考文档:
https://blog.csdn.net/u014687848/article/details/80876510
2.Disconf的使用
官方文档:
https://disconf.readthedocs.io/zh_CN/latest/index.html
博客参考文档:
https://blog.csdn.net/lby0307/article/details/80100319
第一步:添加disconf的maven支持
<dependency><groupId>com.baidu.disconf</groupId><artifactId>disconf-client</artifactId><version>2.6.36</version></dependency>
第二步:创建disconf.properties
# 是否使用远程配置文件
# true(默认)会从远程获取配置 false则直接获取本地配置
disconf.enable.remote.conf=true
#
# 配置服务器的 HOST,用逗号分隔 127.0.0.1:8000,127.0.0.1:8000
#搭建的服务器的路径
disconf.conf_server_host=127.0.0.1:8083
# 版本, 请采用 X_X_X_X 格式
disconf.version=1.0.0
# APP 请采用 产品线_服务名 格式
disconf.app=testBook
# 环境
disconf.env=qa
# 忽略哪些分布式配置,用逗号分隔
disconf.ignore=
# 获取远程配置 重试次数,默认是3次
disconf.conf_server_url_retry_times=1
# 获取远程配置 重试时休眠时间,默认是5秒
disconf.conf_server_url_retry_sleep_seconds=1
# 自定义的下载路径
disconf.user_define_download_dir=./archetype205-service/src/main/resources/config/#disconf.enable_local_download_dir_in_class_path=truea
第三步:创建disconf的java配置类 或xml
(二选一)xml形式:
disconf.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><aop:aspectj-autoproxy proxy-target-class="true"/><!-- 使用disconf必须添加以下配置 --><bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"destroy-method="destroy"><property name="scanPackage" value="com.ohaotian.archetype205"/></bean><bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"init-method="init" destroy-method="destroy"></bean><!-- 需要托管的配置文件 --><bean id="configproperties_disconf"class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean"><property name="locations"><list><!-- <value>classpath:dev.properties</value>--><value>classpath:application.properties</value></list></property></bean><!-- <bean id="propertyConfigurer"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_disconf"/></list></property></bean>-->
</beans>
这个位置可以写多个,需要管理的配置文件
(二选一)java配置类 形式:
DisconfConfig.java
@Configuration
public class DisconfConfig implements BeanPostProcessor {//使用disconf必须添加以下配置@Bean(destroyMethod = "destroy")public DisconfMgrBean disconfMgrBean() {DisconfMgrBean disconfMgrBean = new DisconfMgrBean();disconfMgrBean.setScanPackage("com.ohaotian.archetype205");return disconfMgrBean;}@Bean(destroyMethod = "destroy", initMethod = "init")public DisconfMgrBeanSecond disconfMgrBean2() {return new DisconfMgrBeanSecond();}//需要托管的配置文件@Bean(name = "reloadablePropertiesFactoryBean")@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)public ReloadablePropertiesFactoryBean reloadablePropertiesFactoryBean() {ReloadablePropertiesFactoryBean propertiesFactoryBean = new ReloadablePropertiesFactoryBean();propertiesFactoryBean.setSingleton(true);// 配置文件 (这里只有application.properties)List<String> fileNames = new ArrayList<>();fileNames.add("classpath:application.properties");propertiesFactoryBean.setLocations(fileNames);return propertiesFactoryBean;}}
第三步:启动类加载
在 SpringbootApplication 中添加
@ImportResource({"classpath:disconf.xml"})
后,启动项目即可
可以看到,网页上写的配置文件都下载到了指定的目录下
disconf.user_define_download_dir=./archetype205-service/src/main/resources/config/
关于下载到本地的配置文件未立即生效,需要重启项目的问题
例如:
未启动项目之前,原项目里有一个原始默认的application.properties
启动项目成功后,disconf下载了最新的application.properties到 /config 目录下,但最新的application.properties未生效,项目还是以最原始的application.properties运行。
猜测可能原因 是 disconf在项目启动后进行第一次扫描,只读取了disconf.properties 的配置文件信息,application.properties未下载
启动日志关键字段------ LOAD CONFIG START -----********* DISCONF START FIRST SCAN ***********
之后,tomcat 启动,使用的是原始默认的application.properties
tomcat 字段信息加载Service的beanTomcatWebServer:90 -Tomcat initialized with port(s): 8070 (http)
再然后disconf二次扫描,项目开始读取disconf.xml文件或java配置类
启动日志 关键字段DisconfMgr:128 -************************** DISCONF START SECOND SCAN *************************
最终,项目启动成功,配置为原始的application.properties。此时若要下载的配置文件生效,需重启项目
不用重启的解决方案
在启动类的main方法中,添加
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("disconf.xml");或
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(DisconfConfig.class);
例如:注意是写在run()之前
启动后查查看控制台,可发现项目启动后,优先下载配置文件,然后再以最新下载的配置文件初始化tomcat。
Disconf 配置中心的使用过程相关推荐
- disconf mysql_Disconf配置中心配置
1.Disconf配置中心需要的环境配置 (1) 配置java.maven环境,并安装mysql,reids,zookeeeper,Nginx 2.配置java,maven环境变量 3.创建目录mkd ...
- 用友云微服务架构下配置文件管理利器:配置中心
微服务架构是这几年IT领域的一个高频词汇,越来越多的项目和应用正在以微服务的思想进行重构.相比于单体应用和SOA架构,微服务优势也逐渐凸显,被广大架构师和技术人员引入和推崇.当然,单体应用.SOA.微 ...
- 用了这么久配置中心,还不知道长轮询是什么?
前言 传统的静态配置方式想要修改某个配置时,必须重新启动一次应用,如果是数据库连接串的变更,那可能还容易接受一些,但如果变更的是一些运行时实时感知的配置,如某个功能项的开关,重启应用就显得有点大动干戈 ...
- 微服务架构中配置中心的选择
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:r6d.cn/XsTR 目前公司内部微服务架构基础设 ...
- 微服务架构 为什么需要配置中心
https://kuaibao.qq.com/s/20180530G1O8RC00?refer=spider 一.介绍 在系统架构中,和安全.日志.监控等非功能需求一样,配置管理也是一种非功能需求.配 ...
- 五Spring Cloud Alibaba基于Nacos构建分布式配置中心
1.什么是Nacos 以下部分解释摘自于Nacos官方文档: Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据 ...
- SpringCloudConfigServer配置中心使用与刷新详解
一.为什么不用nacos 之前项目使用的是nacos作为配置中心,使用过程中,还是有不少问题的: 选用nacos,是同时使用了nacos的服务注册与发现,但是在生产环境,多个项目均出现了脑裂故障,包括 ...
- Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!
本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...
- 分布式配置中心 Disconf 安装配置
分布式配置中心 Disconf 安装配置 前提准备 CentOS 服务器一台 MySQL 数据库一台 安装依赖软件 安装 JDK 安装 Git 安装 Maven 安装 Zookeeeper 安装 To ...
最新文章
- sql 纵向求和_sql列统计求和
- 图解操作系统研发与探索教程
- MySQL数据库SYS CPU高的可能性分析
- sqlserver循环like变量_numba从入门到精通(6)—numba与循环与并行
- end to end testing
- Android系统驱动【转】
- CF1110F Nearest Leaf
- 怎么将电脑中的声音录制成WAV格式
- 自学python编程笔记本推荐-这件神器,每个 Python入门学习者都值得一试
- java int类型 BigDecimal类型转成汉字金额大写
- 三峡学院计算机调剂,重庆三峡学院2019考研调剂信息公告
- 利用 ChatGPT 简化微信聊天内容
- 树莓派-从入手到使用(一):树莓派入手操作第一步
- R7 4800U对比R5 4600U性能差距
- Android百度定位获取经纬度
- 3DsMAX期末紧急复习
- 本地图片转网图url专用
- Pytorch LSTM 长短期记忆网络
- wps android 版 参数控制介绍,最强手机办公软件 Android版金山WPS首评测
- python-pygame实现飞机大战-3-发射子弹以及击中敌机