Dubbo调用者需要通过注册中心(例如:ZK)注册信息,获取提供者。但是如果频繁从ZK获取信息肯定会存在单点故障问题,所以Dubbo提供了将提供者信息缓存在本地的方法。

  Dubbo在订阅注册中心的回调处理逻辑当中会保存服务提供者信息到本地缓存文件当中(同步/异步两种方式),以URL维度进行全量保存。Dubbo具体在服务引用过程中会创建registry对象并加载本地缓存文件,同时优先订阅注册中心,订阅失败后会范围本地缓存文件内容获取服务提供信息。

  1、从构造方法入手,主要用于确定需要保存的文件信息。同时从系统中读取已有的配置信息。

    

dubbo redis 缓存 dubbo本地缓存 时效_保存文件

  2、关注properties属性,这个属性设置值只有一个地方:saveProperties,这是一个基于版本号的更改。

    

dubbo redis 缓存 dubbo本地缓存 时效_保存文件_02

  3、具体如何保存文件呢?主要关键在于利用文件级锁来保证同一时间只会有一个线程执行。

    

dubbo redis 缓存 dubbo本地缓存 时效_版本号_03

    

dubbo redis 缓存 dubbo本地缓存 时效_本地缓存_04