简介
时序图
image.png服务字典
-
继承体系
Directory的继承图.jpg - 源码分析
public List<Invoker<T>> doList(Invocation invocation) {
....
List<Invoker<T>> 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 随注册中心变化而变化的关键所在
- 列举Invoker
网友评论