簡介
時序圖
服務字典
-
繼承體系
- 源碼分析
public List<Invoker<T>> doList(Invocation invocation) {
....
List<Invoker<T>> invokers = null;
try {
// 從緩存中獲取調用器芝发,只執(zhí)行運行時路由器
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是一種動態(tài)服務目錄,實現(xiàn)了NotifyListener接口坛掠。
當注冊中心服務配置發(fā)生變化后,RegistryDirectory可收到與當前服務相關的變化
收到變更通知后坷檩,RegistryDirectory可根據配置變更信息刷新Invoker列表- 列舉Invoker
Invoker 列舉邏輯封裝在 doList 方法中 - 接收服務變更通知
RegistryDirectory 是一個動態(tài)服務目錄却音,會隨注冊中心配置的變化進行動態(tài)調整
服務變更通知封裝在notify方法中 - 刷新 Invoker 列表
refreshInvoker 方法是保證 RegistryDirectory 隨注冊中心變化而變化的關鍵所在
- 列舉Invoker