zoukankan      html  css  js  c++  java
  • dubbo源码-服务抽象directory

    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不光会更新服务提供者,还可以从注册中心拿配置和路由相关信息。

  • 相关阅读:
    个人项目实战
    准备
    结队项目-第一次作业
    第三次作业--团队展示
    软件工程实践第二次作业
    软件工程实践第一次作业
    circle
    calculator
    视频课程学习及学习计划
    1001.A+B Format (20)
  • 原文地址:https://www.cnblogs.com/caiyao/p/14949139.html
Copyright © 2011-2022 走看看