https://dubbo.gitbooks.io/dubbo-user-book/preface/architacture.html
首先连接一下概念
整个Dubbo的RPC框架建立在Protocol、Exporter和Invoker这三个接口上,Protocol扩展点定义了一种RPC协议的实现,即如何发布和引用服务,Exporter代表了一个对外暴露的服务,Invoker执行远程调用并返回结果,实现一个协议要同时实现这三个接口。下面先看一下这三个接口,稍微有点抽象。
1. Protocol
Protocol的源码如下,代码的注释已讲的比较清楚,这里可以看到,Dubbo默认使用的协议是dubbo。
展开原码
2. Exporter
Exporter代表了一个对外暴露的服务,其源码如下,getInvoker返回调用服务的Invoker,unexport取消该服务的暴露。
展开原码
3. Invoker
Invoker用于执行一个RPC调用,其代码如下,getInterface返回它是哪个服务的Invoker,invoker方法用于执行远程调用,并返回执行结果。
展开原码
Invoker接口扩展自Node接口,Node代表了一个具有URL地址的节点,其源码如下,getUrl返回该节点的URL地址,isAvailable返回该节点当前是否可用,destory用于销毁该节点。
展开原码
下面看一下Result接口,Result接口代表了RPC调用的执行结果,其源码如下,getValue返回执行结果的值,如果没有执行结果则返回null,getException返回执行过程中发生的异常,如果没有发生异常,则返回null,hasException用于返回是否发生了异常,recreate方法用于重建执行结果,重建的意思就是,模拟执行,然后获取结果,如果执行正常,则返回值,否则抛出异常。三个attachment用于获取执行中的其他附加信息。
展开原码
Invocation表示执行的上下文,其源码如下,getMethodName返回调用的是哪个方法,getParameterTypes返回所要调用的方法的参数类,getArguments返回调用方法时使用的参数,三个attachment方法同样是用于获取一些附加信息,getInvoker返回当前上下文是属于哪个Invoker。
展开原码
URL
http://www.hiwzc.com/dubbo-url.html
http://youaremoon.iteye.com/blog/2279787
调用关系
http://blog.csdn.net/quhongwei_zhanqiu/article/details/41701689