首页 > 其他 > 详细

dubbo源码-服务抽象directory

时间:2021-06-29 13:36:54      阅读:17      评论:0      收藏:0      [点我收藏+]

directory为一个引用服务的抽象,内部维护了服务提供者列表以及服务的路由和更新功能,包含类如下:

技术分享图片

 

 Directory是最上层接口,主要定义了三个基本接口:getInterface表示该directory对应的服务;list返回该directory可用的服务提供者列表;getConsumerUrl定义返回该directory的消费者,因为directory功能只会在消费端使用,所以这里维护了一个消费者信息。

AbstractDirectory维护了路由功能和消费者信息。

StaticDirectory很好理解,就是内部维护了一个静态的服务提供者列表。

DynamicDirectory和StaticDirectory的区别是内部维护的服务提供者列表是静态的还是动态更新的,StaticDirectory在创建时就定义好invoker list,DynamicDirectory内部会维护一个注册中心registry类,并且定义了订阅和取消订阅的方法,底层会使用registry进行服务订阅操作,并且DynamicDirectory还实现了NotifyListener接口,在执行订阅的时候还把自己的notify方法注册上去,这样在服务提供者有变更的时候就会执行notify方法去更新内部的服务提供者列表信息。

RegistryDirectory和ServicediscoveryRegistryDirectory是DynamicDirectory的子类,主要定义了具体notify的逻辑,区别是RegistryDirectory不光会更新服务提供者,还可以从注册中心拿配置和路由相关信息。

 

dubbo源码-服务抽象directory

原文:https://www.cnblogs.com/caiyao/p/14949139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!