本期,边肖将为您带来对杜博重要概念的分析。文章内容丰富,从专业角度进行分析和描述。希望你看完这篇文章能有所收获。
1.proxyFactory:是获取接口的代理类,比如远程接口的代理。
它有两种方法,代表两种功能。
A.getInvoker:将服务对象(如DemoServiceImpl)打包到服务器的Invoker对象中。
B.getProxy :为客户端创建接口的代理对象,比如DemoService的接口。
2.wrapper:它类似于spring的BeanWrapper,也就是说,它包装了一个接口或一个类,这个接口或类可以给实例对象赋值,并通过包装器制定方法调用。
3.Invoker:是一个可执行对象,可以根据方法的名称和参数得到相应的执行结果。
其中有一个非常重要的方法结果调用,
调用包含重要信息,如要执行的方法和参数。目前,只有两个实现类rpcincationmockinvoke。
Invoker有三种类型。
1.本地执行类的调用程序
服务器:要执行demoService.sayHello,通过InjvmExporter反映并执行demoService.sayHello。
2.远程通信类的调用程序
Client:要执行demoService.sayHello,它封装了用于远程通信的DubboInvoker,并将要执行的接口发送给服务器。
服务器端:使用AbstractProxyInvoker执行DemoServiceImpl.sayHello,然后将执行结果发回客户端。
3.几个远程通信执行类的调用程序被聚合到一个集群版本的调用程序中。
Client:要执行demoService.sayHello,负载均衡要通过AbstractClusterInvoker进行,DubboInvoker要远程通信,把要执行的接口发送给服务器。
服务器端:使用AbstractProxyInvoker执行DemoServiceImpl.sayHello,然后将执行结果发回客户端。
4.草案
1.export:公开远程服务(针对服务器)意味着通过协议向外部公开proxyFactory.getInvoker创建的代理类invoker对象。
2 .参考:参考远程服务(针对客户端),通过proxyFactory.getProxy创建一个远程动态代理类,比如DemoService的远程动态接口。
5 .导出者:维护调用者的生命周期。
6 .交换器:信息交换层,封装请求响应模式,将同步转换为异步。
7.transporter:网络传输层,用于抽象netty和mina的统一接口。
8.目录:目录服务
静态目录:一种静态目录服务,其Invoker是固定的。
RegistryDirectory:注册的目录服务,其Invoker集合数据来自zk注册中心,实现NotifyListener接口,并回调notify (listurls)。
整个过程中有一个重要的地图变量methodInvokerMap(它是数据的来源;同时也是notify的重要操作对象,重点是写操作。)
这是对上面边肖分享的杜博的重要概念的分析。如果你恰好也有类似的疑惑,可以参考上面的分析来理解。想了解更多,请关注行业信息渠道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/85707.html