Netflix动态配置管理

dynamicstringproperty dp = dynamicpropertyfactory.getinstance.getstringproperty;

dynamicpropertyfactory.getinstance

获取dynamicpropertyfactory的一个饿汉单例,并且懒加载一个dynamicpropertysupport单例作为其属性。

同时初始化dynamicpropertysupport,通过configurationmanager.getconfiginstance获取当前系统的配置config赋给dynamicpropertysupport,通过setdirect方法对config添加监听器。

 

配置变更时出发监听器

config发生变更时,比如set动作时会调用fireevent方法,然后会遍历listenners集合去执行listenner的configurationchanged方法,然后会走到expandedconfigurationlistenneradapter的重写方法,里面注入dynamicproperty的静态内部类dynamicpropertylistenner,然后去执行所有的回调方法。

 

关键点:

1.dynamicpropertyfactory.getinstance.getstringproperty每次执行都会new一个dynamicproperty对象,但是new出来对象的get方法都是调同一个dynamicproperty的get方法,只不过类型做了一下转换包装。通过抽象父类propertywrapper将每个key唯一对应的dynamicproperty给注入进去,最后get实际调用的是注入进去的prop的get方法,只不过返回的时候做了返回类型包装。

2.配置源变更实时读取

可以通过以下方式实时更新config,更新config后,config会通知已注册的监听器

1)多配置源指定

目前Netflix内置了url和jdbc两种数据源,也可以通过重写配置自己的数据源,比如配置文件数据源

polledconfigurationsource pcfs=new jdbcconfigurationsource(DataSource,sql,sql参数);

2)定时读取配置源定时器

abstractpollingscheduler ps=new fixeddelaypollingscheduler(延迟执行时间,间隔时间,删除是否需要同步);

3)实例化并启动定时器,并将读取结果实时更新到config对象

return new configurationwithpollingsource(config,pcfs,ps);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hiker帝国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值