dubbo源码研究之rpc模块

阅读更多
   dubbo作为一个服务化框架,rpc模块是dubbo整个框架的核心部分。
   我们来通过dubbo来了解rpc调用的本质。 
  dubbo源码研究之rpc模块_第1张图片
  dubbo的rpc模块以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。
  invoker接口提供两个方法。
  Class getInterface();  获取调用的接口
  Result invoke(Invocation invocation) throws RpcException; 执行调用
  说明rpc就两件事,第一,定位要调用的是哪个接口,第二发起调用返回结果。
  值得注意的是invoker需要Invocation提供的信息,Invocation 支持有本地invoker。invoker不参与Invocation的序列化。Invocation转成request对象通过网络传递并序列化和反序列化。 
dubbo源码研究之rpc模块_第2张图片
  rpccontext是一个静态工具类,通过threadlocal来保存单次调用的上下文。
  Protocol负载invoker的暴露与引用。
  dubbo源码研究之rpc模块_第3张图片
  一个refer的invoker就会存在一个export的invoker,如果引用的服务不存在,则需要设置
  暴露服务顺序
dubbo源码研究之rpc模块_第4张图片
引用服务时序
  dubbo源码研究之rpc模块_第5张图片
  dubbo的rpc模块也遵守dubbo的整体设计原则采用Microkernel + Plugin模式,Microkernel只负责组装Plugin。
  invoker是核心模型,服务方把invoker对象暴露成Exporter对象,并把url描述写入注册中心,注册中心推送到消费方。消费方通过url转成invoker对象。
 




 

 
 
 

  

  
  • dubbo源码研究之rpc模块_第6张图片
  • 大小: 68 KB
  • dubbo源码研究之rpc模块_第7张图片
  • 大小: 33.6 KB
  • dubbo源码研究之rpc模块_第8张图片
  • 大小: 71.5 KB
  • dubbo源码研究之rpc模块_第9张图片
  • 大小: 68.5 KB
  • dubbo源码研究之rpc模块_第10张图片
  • 大小: 103.5 KB
  • 查看图片附件

你可能感兴趣的:(dubbo,rpc)