Dubbo cluster 容错具体流程

一、AbstractClusterInvoker invoke (类、方法)

  1. 检测是否销毁 (checkWhetherDestroyed();)
  2. 获取invoke 列表 初始化负载均衡策略
  3. doInvoke (抽象方法,具体容错策略实现)

二、****举例:FailoverClusterInvoker doInvoke

  1. checkInvokers() 判空,

    //TODO 获取重试次数 int len = getUrl().getMethodParameter(methodName, RETRIES_KEY, DEFAULT_RETRIES) + 1;

  2. 循环重试次数 二次检查是否销毁,获取最新invoke列表 

  3. 根据传入的负载均衡策略选择一个invoker

**三、AbstractClusterInvoker select **

粘滞连接:用于有状态服务,尽可能让客户端总是向同一提供者发起调用

  1. 首次调用记录Invoker

  2. 下次调用,先判断之前是否已经调用用该invoker,若已经调用过,则直接使用

[图片上传中...(image-cd8a14-1597821378831-0)]

四、AbstractClusterInvoker doselect

通过具体的负载均衡策略选择具体的invoker

Invoker invoker = loadbalance.select(invokers, getUrl(), invocation); 

判断invoker 是否可用 或者是限制内 可能发起重新选择 reselect (选择不再

selected列表内 & 可用,通过负载均衡策略在选择一次

你可能感兴趣的:(Dubbo cluster 容错具体流程)