跳到主要内容

Eureka(6)-- ClusterResolver 集群解析器

文章目录

    • 1.结论:
  • 2.源码分析
  • 2.1.ClusterResolver集群解析器负责解析配置的EurekaServer地址
  • 2.2 EurekaClient使用了ClusterResolver的两个实现类ZoneAffinityClusterResolver和AsyncResolver来实现注册功能
  • 2.3.在DiscoveryClient初始化的时候实例化ZoneAffinityClusterResolver,然后调用getClusterEndpoints,之后将值赋值到AsyncResolver(ClosableResolver)供服务使用,将ClosableResolver赋值给EurekaHttpClientFactory
  • 2.4.ResolverUtils的randomize方法,根据IP地址生成不同的集合(修改集合顺序)。
  • 3.实验
  • 3.1.实验 一:不同ip获得不同的集群集合
  • 3.2实验2,同一ip下的应用在相同的Eureka上

1.结论:

Eureka根据IP地址将defaultZone: http://peer2:8002/eureka/,http://peer1:8001/eureka/生成不同的集合

2.源码分析

2.1.ClusterResolver集群解析器负责解析配置的EurekaServer地址

eureka:
client:
serviceUrl:
defaultZone: http://peer2:8002/eureka/,http://peer1:8001/eureka/

public interface ClusterResolver<T extends EurekaEndpoint> {


String getRegion();
List<T> getClusterEndpoints();
}

2.2 EurekaClient使用了ClusterResolver的两个实现类ZoneAffinityClusterResolver和AsyncResolver来实现注册功能

public class ZoneAffinityClusterResolver implements ClusterResolver<AwsEndpoint> {



public class AsyncResolver<T extends EurekaEndpoint> implements ClosableResolver<T> {