目录
2.2 Directory (默认RegistryDirectory)
1. 服务治理简介
1) 服务降级
2) 路由 (标签路由和条件路由)
3) 负载均衡 (随机,轮询,一致性哈希,最低负载)
2. 服务治理的原理
引入官网的一张图
2.1 Cluster
默认选择FailOver 失败自动切换,当出现失败,重试其它服务器
2.2 Directory (默认RegistryDirectory)
list: 客户端启动时,先从注册中心获取服务提供者信息,并订阅服务提供者注册信息,后续服务提供者变更后接受通知并处理
public synchronized void notify(List<URL> urls) {
Map<String, List<URL>> categoryUrls = (Map)urls.stream().filter(Objects::nonNull).filter(this::isValidCategory).filter(this::isNotCompatibleFor26x).collect(Collectors.groupingBy((url) -> {
if (UrlUtils.isConfigurator(url)) {
return "configurators";
} else if (UrlUtils.isRoute(url)) {
return "routers";
} else {
return UrlUtils.isProvider(url) ? "providers" : "";
}
}));
List<URL> configuratorURLs = (List)categoryUrls.getOrDefault("configurators", Collections.emptyList());
this.configurators = (List)Configurator.toConfigurators(configuratorURLs).orElse(this.configurators);
List<URL> routerURLs = (List)categoryUrls.getOrDefault("routers", Collections.emptyList());
this.toRouters(routerURLs).ifPresent(this::addRouters);
List<URL> providerURLs = (List)categoryUrls.getOrDefault("providers", Collections.emptyList());
this.refreshOverrideAndInvoker(providerURLs);
}
2.3 Router(默认规则 RouterChain)
2.4 LoadBalance(默认选择随机)
以weight为中心