一个基于dubbo协议的服务远程调用全过程

Posted 一米网-Jo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个基于dubbo协议的服务远程调用全过程相关的知识,希望对你有一定的参考价值。

服务调用端:

当我们调用服务的时候Dubbo会生成一个代理对象,然后调用InvokerInvocationHandler#invoke方法

 

 

AbstractClusterInvoker#invoke:设置负载均衡器

FailoverClusterInvoker#doInvoke:处理集群容错,负载均衡选择一个后端服务

.........省略了一堆invoker的研究

 

经过一系列的invokers和Netty的handler后,最终调用Netty Client将消息发送出去,默认使用Netty(还有Mina,Grizzly)

 

 

服务提供端:

NettyServer启动后就可以以netty来监听端口并接收消息。接收到消息后再调用相应的DubboHandler,解析消息,最终找到需要的Service,再通过反射来调用invoker。请求到达服务端,首先会执行Netty的handler:

 

 

 

 reply会调用一堆的dubbo invokers,最终到达你的服务:

 

 然后会开启另一个线程处理response,首先会经过dubbo的一堆Invokers,然后再经过Netty的一堆 outbond handler:

 

 最终通过NiosocketChannel#doWrite返回消息给服务调用者:

 

 

关注公众号“一米源码”了解更多精品文章

以上是关于一个基于dubbo协议的服务远程调用全过程的主要内容,如果未能解决你的问题,请参考以下文章

关于Dubbo

dubbo

远程调用方法

Dubbo常见面试题

Dubbo学习 概念定义

Dubbo之RPC框架