Dubbo系列之RPC分析(七)

本章整体分析一下dubbo的RPC实现机制和相关的源代码,代码对应的模块是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();

}

Dubbo系列之RPC分析(七):对暴露服务的一个监听,它有一个对应的实现就是:

Dubbo系列之RPC分析(七)

Dubbo系列之RPC分析(七):核心过滤功能,其内部的实现有很多,大概有如下截图所示:

Dubbo系列之RPC分析(七)

Dubbo系列之RPC分析(七):保存要执行的参数信息,对应的实现是Dubbo系列之RPC分析(七)

Dubbo系列之RPC分析(七):一个能够执行的服务,实现有很多都是通过adaptive机制进行适配的

Dubbo系列之RPC分析(七):监听Invoker的,有一个对应的实现是

Dubbo系列之RPC分析(七)

Dubbo系列之RPC分析(七):对外服务的暴露协议,内部实现有很多,是基于adaptive机制进行适配的

Dubbo系列之RPC分析(七):实现一个对象的代理工厂,内部有2中实现,通过spi机制获取的

Dubbo系列之RPC分析(七):PRC调用的结果,对应的实现就是

Dubbo系列之RPC分析(七)

一般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 是服务方暴露服务时,对服务方法调用的抽象,也就是说,所有该服务的调用,最终都会通过该代理,调用到服务类型中去