Java   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了[zebra源码]GroupDataSource配置变更实时生效大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

在初始化 Groupdatasource 的时候,会往它的配置管理器 DefaultDatasourceConfigManager中添加了一个配置监听器

代码路径:Groupdatasource#init() -> initConfig();

this.datasourceConfigManager.addListerner(new GroupdatasourceConfigChangedListener());
	public class GroupdatasourceConfigChangedListener implements PropertyChangeListener {
		@Override
		public synchronized void propertyChange(PropertyChangeEvent evt) {
			**refresh**(evt.getPropertyName());
		}
}

在监听到配置变更(zk或http)的时候,会调用分组ds内部的 Groupdatasource#refresh 方法进行刷新
image.png

@H_616_17@

分组GroupDataSource及其初始化 中初始化的写库和读库的 ds 类型

  1. 刷新写库 writeDatasource#refresh (FailOverDatasource#refresh) 筛选配置中的第一个写库,新建SingleDatasource 替换掉老的,然后销毁老的sds
  2. 刷新读库 readDatasource#refresh (LoadBalanceDatasource#refresh)
  3. 筛选配置中的所有读库,新建SingleDatasource 替换掉老的,然后销毁老的sds

一般是直接重建底层 Datasource连接池 ,不然要根据底层数据库连接池的支持情况来 更新单个属性,这样适配起来就会非常的繁琐, 而这种db配置变更本身是非常低频或者在故障的时候急救措施, 重建 Datasource 期间少许的报错也可以接受

除了这个实时的配置更新之外,还有一DatasourceConfigrefresh 每隔1分钟,检查一次group分组和分组内single的配置是否发生变化; 这样就避免了 配置更新的时候由于网络异常等原因 数据源刷新失败

完整目录:数据库中间件zebra源码分析

大佬总结

以上是大佬教程为你收集整理的[zebra源码]GroupDataSource配置变更实时生效全部内容,希望文章能够帮你解决[zebra源码]GroupDataSource配置变更实时生效所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: