disconf分布式配置中心

一、介绍
disconf包含客户端disconf-Client和 管理端disconf-Web两个模块,客户端disconf-Client需要引入到项目中,disconf-Web单独部署用于配置中心可视化页面

1.为什么选用配置中心?
	如果没有配置中心,每次修改配置文件只能手动修改,然后再将每个项目重启重
启,若服务器多,则效率低速度慢,容易出错。

2.配置中心需要考虑的内容?
    1)基于ZK+DB实现
    2)修改配置文件要实时生效
    3)只需加载被修改的配置文件
    4)考虑系统容灾,保证高可用
    5)具备权限管理
    6)可以根据不同环境配置多套配置
    7)需要配置多种配置方式,比如key-value型,properties文件型	    

二、原理

1.流程
	
	1)通过firstScan加载系统配置和用户配置,进行包扫描,然后获取数据
	2)注册DisconfAspectJ
	3)bean属性注入

1.如何做到实时修改?
	依靠zookeeper的watch机制。ZK是通过目录挂载的方式来做服务的自动注册与发布。客户端启动时注册了一个回调接口,当ZK目录发生变化(web内容修改)时会回调所有客户端节点,从而做到实时更新客户端配置的目的

2.如何做到数据持久化?
	添加的配置数据均被持久化到DB中,每次客户端启动时都会调用disconf的http接口获取最新的配置数据,如果网络不通,默认重试三次,每次持续5秒

3.如果第一次加载配置成功后,配置中心不可用,会造成影响吗?
	不会,配置中心数据已经被加载到项目的内存中了

4.如果配置中心宕机,项目重启会造成影响吗?
	不会,第一次从配置中心拉取数据后会持久化到磁盘中,配置中心不可用会读取缓存文件的数据
	即:Disconf是具有兼容性的
		当开启Disconf时:
			如果Disconf正常运行,则正常使用分布式配置。
			如果Disconf非正常运行,则使用本地配置。(Disconf可以保证在Disconf失败时,原有程序能够按原有逻辑正确运行)
		当不开启Disconf时: 则使用本地配置。		
		只要是运行一次分布式程序成功,则本地就含有最全的配置文件。此时,如果再运行一次分布式程序,如果出现失败,则上一次下载成功的配置文件就会当成本地配置生效,程序成功启动。

5.怎么保证所有项目的节点都修改配置文件成功?
	无法保证,但项目连接到配置中心会将机器名挂载到ZK目录下,可以在disconf-web页面查询配置使用的机器数

三、使用

1.pom文件
	<dependency>
	     <groupId>com.baidu.disconf</groupId>
	     <artifactId>disconf-client</artifactId>
	     <version>2.6.31</version>
	</dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值