美文网首页
19.Directory

19.Directory

作者: 山海树 | 来源:发表于2020-09-14 10:35 被阅读0次

Directory代表了多个invoker,对于消费端来说,每个invoker代表了一个服务提供者。
Directory内部维护一个List,这个List会通过注册中心根据服务端的变更而变更。


image.png

StaticDirectory是当消费端使用了多注册中心时,其把所有服务注册中心的invoker列表汇集到一个invoker列表中。


image.png
RegistryDirectory管理的invoker列表根据服务注册中心的推送变化而变化。

1.RegistryDirectory创建流程


image.png
image.png
image.png
image.png

当ReferenceConfig.get()的时候,调用到createProxy(),内部需要返回一个invoker,此时回根据Protocol的SPI实现来调用到RegistryProtocol的createProxy(),通过此方法看到,在此处创建了RegistryDirecotry对象

2.RegistryDirectory中invoker列表的更新


image.png

RouterChain则是再创建RegistryDirectory后创建的


image.png

RouterChain保存了可用于服务提供者对应的invokers列表和路由规则信息,当消费端的集群容错策略要获取可用服务提供者对应的invoker列表时,会调用RouterChain的route()方法。

总结,在消费端中,每个需要消费的服务都被包装为RegerenceConfig,在应用启动时会调用每个服务对应的RegerenceConfig.get()。然后会为每个服务创建一个自己的RegistryDirectory对象,每个RegistryDirectory管理该服务提供者的地址列表、路由规则、动态配置等信息,当服务提供者的信息发生变化,RegistryDirecotry回动态得到变化的通知,并自动更新。

相关文章

  • 19.Directory

    Directory代表了多个invoker,对于消费端来说,每个invoker代表了一个服务提供者。Directo...

网友评论

      本文标题:19.Directory

      本文链接:https://www.haomeiwen.com/subject/herkektx.html