Dubbo剖析-服务提供方实现类到Invoker的转换

一、前言

前面dubbo整体架构分析里面我们讲解了服务提供者暴露一个服务的详细过程是,首先具体服务的实现类转换为了Invoker对象,然后Invoker在转换为Exporter,本文就来讲解第一步转换。

image.png

二、实现类到Invoker对象的转换

服务提供方式是通过下面方法实现服务提供的实现类到Invoker对象的转换

image.png

其中proxyFactory是代理类的扩展接口,默认情况下这里调用getInvoker返回的spi扩展实现类是JavassistProxyFactory,也就是这里是调用了JavassistProxyFactory的getInvoker方法。JavassistProxyFactory的getInvoker方法代码如下:

image.png

代码里面首先创建了代理类的一个wrapper类,目的是消除反射调用,原理类似于cglib的索引方式去除反射调用,提高性能。

然后创建了一个AbstractProxyInvoker类,并重写了doInvoke方法。

当提供方接受到服务消费的请求后最后会调用AbstractProxyInvoker的doInvoke,而doInvoke内部委托包含代理类的wrapper类来具体执行。

三、总结

服务提供方实现类到Invoker的转换,是通过 ProxyFactory 类的 getInvoker 方法使用 服务实现类 生成一个AbstractProxyInvoker 实例,其中使用wrapper类消除反射,提高性能。

欢迎大家加入微信扫码进入知识星球进行深入探讨,最近主题
121.png

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Dubbo剖析-服务提供方实现类到Invoker的转换

加多

加多

Java 攻城狮 at 阿里巴巴
加多,目前就职于阿里巴巴,热衷并发编程、ClassLoader,Spring等开源框架,分布式RPC框架dubbo,springcloud等;爱好音乐,运动。微信公众号:技术原始积累。知识星球账号:技术原始积累
加多
FavoriteLoading添加本文到我的收藏
  • Trackback are closed
  • Comments (0)
  1. No comments yet.

You must be logged in to post a comment.

return top