Dubbo源码解读-Mock原理和消费端服务列表刷新

上篇我们介绍了Consumer消费端调用流程流程,地址如下

Dubbo源码解读-Consumer调用流程解析-CSDN博客

        本文主要对消费端服务列表刷新以及服务调用流程的基础知识进行汇总一下,在了解基础知识的前提下,再回头看Dubbo服务列表刷新和Mock原理以及服务调用流程,理解起来就会更清楚。

        大家可以好好仔细读一下本文。有疑问欢迎留言。

        接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。

         不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。

        如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。

DubboMock原理和服务列表刷新知识基础

  • 注解方式和xml方式,referenc依赖注入的对象不同。xml是ref对象,是通过javassis生成的代理对象,生成的对象,存入到了Spring容器,@autowire可以直接引用。注解方式是JDK生成的代理对象,未放入到Spring容器,不能@autowire可以引用。
  • RegistryDirectory:服务列表,服务列表刷新,监听,动态服务列表。
    • 注册节点监听事件。
      • 节点:providers,configurators,routers节点的变化代码和@Servcie流程一样。
      • RegistryDirectory继承了notifylistenner。通知形式和ServiceBean export流程一样。
  • RegistryProtocol.refer.生成的invoker,是MockClusterInvoker代理类,持有FailoverClusterInvoker和RegistryDirectory
  • Reference引用类代理关系:JDk->ReferenceBeanInvocationHanlder->Javassis->InvokerInvocationHandler->MockClusterInvoker
  • InvokerInvocationHander将method和args参数封装称RpcInvocation对象。
  • MockClusterInvoker是consumer 和provider的桥了。决定是否需要掉用远程服务。
  • 消费者调用过程肯定不需要过注册中心。
    • MockClusterInvoker.invoker->FailOverCluster.invoker()
    • 通过持有的RegsitryDirectory对象从methodInvokerMap方法映射缓存获取服务列表
    • 然后调用Invoker,在调用过程中,不需要和注册中心打交道。

原文链接 

总结:上面内容以及链接中的内容,每个从业务流程和源码角度进行了详细分析,如果大家有疑问或者对文章排版任何方面有建议都可以留言评论,看到都会及时回复大家。

知识总结,分享不易,全文手敲,欢迎大家关注点赞评论收藏。

当然如果觉得文章写的不错,也可点击打赏按钮,深深的鼓励一下博主。哈哈!!!!

  • 73
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟long

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

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

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

打赏作者

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

抵扣说明:

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

余额充值