一个基于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协议的服务远程调用全过程的主要内容,如果未能解决你的问题,请参考以下文章