最全最简单的dubbo教程-服务调用原理《十八》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jingyangV587/article/details/86022541

简单介绍

如果前面都理解的话,并且netty的demo做过的话,这步就很好理解了,主要就是客户端请求服务器的一个过程。下面是官网提供的一个图,用来解释他的调用过程:
在这里插入图片描述

从上面的图可以看出代理对象proxy产生之后,如果不做cache(缓存),mock(本地伪装)的话,并且有多个invoker的情况下换根据负载均衡机制选择一个invoker进行请求,中间有很多filter,主要做统计用的,然后通过客户端client请求数据,最后将数据解码返回出去。除去中间的filter与负载均衡机制,其实就是一个普通的netty调用的一个过程。

源码跟踪

服务都起来以后,我们调用下接口,在调用远程服务地方打个断点,然后F5进入里面的源码:在这里插入图片描述

F5继续往下:
在这里插入图片描述

在这里插入图片描述

到这一步,在代码的232行,调用的过程中会从注册中心找相关的invoker,如果有多个服务的话,会返回多个,同时会加载系统配置的负载均衡策略,然后我们继续F5进入doInvoker():
在这里插入图片描述

继续执行里面的invoker,中间有很多filer,一直往下到DubboInvoker中,如图:
在这里插入图片描述

到这里好像有点意思了,这里会选择一个客户端赋值给currentClient,然后请求服务端数据。currentClient包含了请求的客户端,要请求的地址,inv包含了请求的参数。我们继续往下:
在这里插入图片描述
图中可以看出是用netty进行发送数据,req是要发送的数据。一路往下:
在这里插入图片描述
可以看出确实是用netty进行发送数据请求的。如果有兴趣可以继续深入看看如何发送数据的。这里就不再跟进了。最后会将请求得到的数据封装后返回:
在这里插入图片描述
这里就返回了我得到的数据。

猜你喜欢

转载自blog.csdn.net/jingyangV587/article/details/86022541