Dubbo源码分析(二)Invocation

本文将主要围绕Invocation这个抽象概念进行讲解,首先来看一下相关的类图结构。

Dubbo Invocation

整体概念

  1. Invocation,一次具体的调用,包含方法名、参数类型、参数
  2. Result,一次调用结果,包含value和exception
  3. Invoker,调用者,对应一个服务接口,通过invoke方法执行调用,参数为Invocation,返回值为Result

DubboInvoker

  • 通过ExchangeClient发送调用请求(Invocation)
  • doInvoke()分为oneWay、async、sync调用
  • 对client的选择采用轮询的方式

ThriftInvoker

与sync调用基本相同

AbstractClusterInvoker

  • 多个服务端实例组成的集群,可以设定针对多组实例的选择策略
  • 维护Directory对象,通过list方法查找一个Invocation对应的Invokers
  • 具有select方法,invokers作为参数传递给select()

选择策略:通过LoadBalance来选取Invoker,若选出的Invoker已经被选择过,则进行reselct()

7种集群调用策略

FailfastClusterInvoker

select之后只调用一次,失败立即返回错误

FailoverClusterInvoker

重试n次,每次更新selected集合,保证失败后切换到另一个Invoker

FailbackClusterInvoker

select后发起一次调用,若失败则将Invoker加入失败列表,定期重试

FailsafeClusterInvoker

select后发起一次调用,若失败忽略异常,返回一个空Result

AvailableClusterInvoker

不进行select,仅选取第一个available的Invoker

BroadcastClusterInvoker

不进行select,每个Invoker都调用一次

ForkingClusterInvoker

不进行select,对所有分组并行发起调用,最快的调用完成后返回结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值