dubbo架构概览-dubbo源码解析

1.每一个层次之间基本通过spi的方式来生成调用的。

2service/config层

2.1服务发布通过serviceConfig来完成

     服务消费通过referenceConfig来完成。

在创建这两个的过程中,还可以通过创建ProtocolConfig来指定协议,

MethodConfig来指定方法相关参数。

3proxy层。对于消费者而言,proxy作为消费者代理,将本地调用转换为wrapper类。

4.registry层。服务注册中心层。

5.cluster层。

当一个服务有多个提供者时,消费者需要有一定的路由,负债均衡,集群容错的考量。

6.monitor层用来统计rpc调用次数和调用耗时。

7.protocol层。主要封装了rpc调用逻辑,通过exporter,invoker的创建,完成服务的发布和引用。实现类是dubboProtocol.

  1. dubbo服务暴露源码流程

(1)容器创建完之后会触发ServiceBean(实现了applicationLIstener接口)类中的ContextRefreshedEvent事件,执行export()方法。

(2)export()方法会调用ServiceConfig中的doExport()方法,这个方法会调用doExportUrls()方法,进而doExportUrlsFor1Protocol()方法。

(3)doExportUrlsFor1Protocol()方法中会利用反射构造invoker,这个invoker封装了服务实现类注册的地址及端口相关信息。同时执行protocol.export()方法。

(4)protocol.export()中的protocol有两个实现类,这个是最关键的,一个是RegistryProtocol一个是DubboProtocol,调用这个方法的时候会首先调用RegistryProtocol类,RegistryProtocol类中的export()方法会调用doLocalExport()方法通知DubboProtocol执行openServer(url)方法进行服务的开启,其实就是开启一个netty服务。同时export()方法会调用ProviderConsumerRegTable.registerProvider()方法进行注册表的缓存以及服务的注册。

  1. dubbo服务发现源码流程

在ReferenceBean->getObject()->init()中会调用createProxy()方法用来创建代理对象。

在createProxy()中会执行一个refprotocol.refer()方法,这里refprotocol同样有两个实现类,一个是RegistryProtocol,一个是DubboProtocol

RegistryProtocol负责注册信息,订阅信息,构造invoker代理类,并将消费者对于的invoke缓存到注册列表中。

DubboProtocol主要负责connect/getClients()连接获取客户端,等待与服务端通信

dubbo服务调用源码流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jyyy410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值