Dubbo系列之RPC分析(七)

本章整体分析一下dubbo的RPC实现机制和相关的源代码,代码对应的模块是dubbo-rpc.


首先熟悉一下核心接口和类的功能:

:所谓暴露服务就是对外暴露一个它,它持有一个Invoker,能够管理器生命周期

public interface Exporter<T> {

    /**
     * get invoker.
     *
     * @return 持有一个invoker对象
     */
    Invoker<T> getInvoker();

    /**
     * unexport.
     * <p>
     * <code>
     * getInvoker().destroy();
     * </code>
     */
    void unexport();

}

:对暴露服务的一个监听,它有一个对应的实现就是:


:核心过滤功能,其内部的实现有很多,大概有如下截图所示:


:保存要执行的参数信息,对应的实现是

:一个能够执行的服务,实现有很多都是通过adaptive机制进行适配的

:监听Invoker的,有一个对应的实现是


:对外服务的暴露协议,内部实现有很多,是基于adaptive机制进行适配的

:实现一个对象的代理工厂,内部有2中实现,通过spi机制获取的

:PRC调用的结果,对应的实现就是


一般RPC是要调用Remoting模块一起完成整个流程的使用.

理解一下特定名词的含义:

Dubbo中的Invoker有许多实现类型,大致分成四类 
1、AbstractClusterInvoker的子类型 
2、AbstractInvoker的子类型 
3、AbstractProxyInvoker的子类型 
4、其他Invoker接口的子类型。

1、 AbstractClusterInvoker

AbstractClusterInvoker是dubbo对集群调用的一个封装, 
AbstractClusterInvoker及其子类型中持有Directory的引用,该Directory正是在一个或多个注册中心中,可用Invoker的目录维护。 
总之,AbstractClusterInvoker及其子类型,是用于集群调用的,并非真正的调用实现Invoker。

2、AbstractInvoker

AbstractInvoker的子类型是真正对远程调用的执行过程,例如DubboInvoker、ThriftInvoker等都是该类型的子类型。

3、AbstractProxyInvoker

AbstractProxyInvoker 是服务方暴露服务时,对服务方法调用的抽象,也就是说,所有该服务的调用,最终都会通过该代理,调用到服务类型中去


猜你喜欢

转载自blog.csdn.net/qq_18603599/article/details/80828555
今日推荐