Dubbo概述--调用过程

Dubbo概述–调用过程Dubbo概述–调用过程写在前面调用过程Consumer请求Provider响应Consumer接收响应总结写在前面本文参考了Dubbo官方手册结合Dubbo2.6.1版本源码分析。推荐先阅读官方手册。鉴于个人水平有限,如有不正确的地方请指出,欢迎一起讨论,谢谢!调用过程本过程的分析是基于最简单的Demo进行分析的,...
摘要由CSDN通过智能技术生成

Dubbo概述–调用过程

写在前面

本文参考了Dubbo官方手册结合Dubbo2.6.1版本源码分析。推荐先阅读官方手册

鉴于个人水平有限,如有不正确的地方请指出,欢迎一起讨论,谢谢!

调用过程

本过程的分析是基于最简单的Demo进行分析的,主要的目的是介绍架构和流程。

Consumer请求

Dubbo-Consumer-Request

  1. Consumer调用ProxyFactory扩展类生成的代理类:ProxyN中的方法。

    • ProxyFactory扩展点的默认类为JavassistProxyFactory
    • ProxyN中的N代表本次启动创建的第N个代理,从0开始的AtomicLong静态变量
  2. ProxyN类内部将调用方法转化为调用InvokerInvocationHandler提供的通用方法:invoke(obj, methodName, args)

  3. InvokerInvocationHandler将传入的methodName、args构造为RPCInvocation实例,并调用MockClusterInvoker的invoke(Invocation)方法。

    • RPCInvocation实例可以理解为整个传输过程中的数据载体类,存储调用方法、参数类型、参数等
  4. MockClusterInvoker根据Directory的URL确定调用方法时是否需要、怎样调用Mock,如果不是强制使用Mock则调用FailoverClusterInvoker的invoke方法。

    • MockClusterInvoker是通过服务扩展功能中自动添加包装类(Cluster的包装类MockClusterWrapper)的机制添加进来的
    • 没有methodName.mock参数则直接向下调用
    • methodName.mock参数值以force开始时,直接使用mock而不会调用Provider
    • methodName.mock参数值为其他时,只有调用Provider抛异常时才使用mo
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值