Dubbo集群容错源码分析

简介

时序图

Dubbo集群容错源码分析_第1张图片
image.png

服务字典

  1. 继承体系


    Dubbo集群容错源码分析_第2张图片
    Directory的继承图.jpg
  2. 源码分析
public List> doList(Invocation invocation) {
....
 List> invokers = null;
        try {
            // 从缓存中获取调用器,只执行运行时路由器
            invokers = routerChain.route(getConsumerUrl(), invocation);
        } catch (Throwable t) {
            logger.error("Failed to execute router: " + getUrl() + ", cause: " + t.getMessage(), t);
        }
   return invokers == null ? Collections.emptyList() : invokers;
....
}
  • RegistryDirectory是一种动态服务目录,实现了NotifyListener接口。
    当注册中心服务配置发生变化后,RegistryDirectory可收到与当前服务相关的变化
    收到变更通知后,RegistryDirectory可根据配置变更信息刷新Invoker列表
    • 列举Invoker
      Invoker 列举逻辑封装在 doList 方法中
    • 接收服务变更通知
      RegistryDirectory 是一个动态服务目录,会随注册中心配置的变化进行动态调整
      服务变更通知封装在notify方法中
    • 刷新 Invoker 列表
      refreshInvoker 方法是保证 RegistryDirectory 随注册中心变化而变化的关键所在

你可能感兴趣的:(Dubbo集群容错源码分析)