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

  • 相关阅读:
    (8)闭包函数(函数的传参方式)
    (7)名称空间和作用域
    (6)函数嵌套
    (5)函数对象
    (4)进阶函数(作用域、闭包、生成器、迭代器)
    (3)什么是函数(函数的定义、形参、实参、默认形参、可变长函数args kwargs,私有地址)
    (1)三元运算、字符编码
    (2)字符编码关系和转换(bytes类型)
    java技术学习网址收藏
    springmvc工作原理和环境搭建
  • 原文地址:https://www.cnblogs.com/caiyao/p/14949139.html
Copyright © 2011-2022 走看看