• dubbo源码2-rpc


    rpc-api包的基本抽象主要类,invoker负责执行一个invocation代表的rpc请求,并返回result;exporter表示一个导出服务;protocol为协议层,上层负责该协议服务的导出和引用;proxyfactory为代理底层工厂,负责invoker和实现类之间的转换。

    protocol包主要包括protocol、invoker、exporter的基础实现,主要包括:

      abstractprotocol: 结合asynctosyncinvoker,给异步调用转成同步调用。

      abstractproxyprotocol: 结合proxyfactory,给protocol接口export方法和refer方法传入的参数进行转换后给底层子类使用,主要转换逻辑:

        export: proxy给invoker参数转成实现类,然后给子类提供实现类以及url来做具体export操作。

        refer:  子类给类型和url转换成实现类,然后proxy给实现类转成invoker,最后abstractproxyprotocol给invoker外再包一层abstractinvoker作为refer方法的返回。

      protocollistenerwrapper: 通过spi给配置的listener包装到protocol上。

      protocolfilterwrapper:通过spi给配置的filter包装到protocol上。

      abstractinvoker: 包装解析url参数和class值到invocation中逻辑,子类实现doInvoker方法。

      abstractExport: 包装unexport逻辑,直接转调invoker。

     proxy包主要定义了代理工厂接口和实现类,代理工厂主要做的事是提供invoker和实现类之间的转换,主要方法是getInvoker和getproxy,主要实现类包括jdkproxyfactory和javaassitproxyfactory,还包含一个abstractproxyinvoker,注释说是给provider端用的,依赖proxy。proxyfactory还有个实现类是stubproxyfactorywrapper,为了实现本地存根用。具体逻辑是如果invoker的interface不是generalservice,则取当前interface的stub或者local后缀的类,并且实例化,导出,然后作为proxy返回。导出这个我不是太明白,

    filter包顾名思义就是各种invoker的filter

    listener里是invoker和export的listener

    dubbo包下是协议的具体实现,实现了api包下的主要扩展点,主要包括:Protocol/Invoker;然后基于transport/exchange实现了具体的功能。主要实现点为dubboprotocol类的export和protocolbindingrefer方法。

      export: 根据url里参数创建exchangeserver,绑定端口,并注册replay方法,在replay方法里通过channel找到invoker,并执行invoker方法进行请求应答。

      protocolbindingrefer: dubboinvoker里维护多个Client,client通过exchange层获得,需要请求时执行client的request方法获取请求结果。

    todo:

  • 相关阅读:
    阿里巴巴的26款超神Java开源项目
    10个爬虫工程师必备的工具
    微服务的发现与注册--Eureka
    国内最火5款Java微服务开源项目
    LeetCode 700. 二叉搜索树中的搜索
    LeetCode 104. 二叉树的最大深度
    LeetCode 908. 最小差值 I
    LeetCode 728. 自除数
    LeetCode 704. 二分查找
    LeetCode 852. 山脉数组的峰顶索引 (二分)
  • 原文地址:https://www.cnblogs.com/caiyao/p/14874449.html
Copyright © 2020-2023  润新知