文章目录

Eureka Client



一 职责




(1)向 Eureka Server注册实例

在这个方法里可看到

​DiscoveryClient(ApplicationInfoManager applicationInfoManager, final EurekaClientConfig config, AbstractDiscoveryClientOptionalArgs args, EndpointRandomizer randomizer)​

【Spring Cloud】之 Eureka Client_SpringCloud



详细​​register()​

【Spring Cloud】之 Eureka Client_java_02




(2)向 Eureka Server续租,发送心跳

在​​DiscoveryClient.java​​中可看到



开启了一个定时器,心跳定时器

【Spring Cloud】之 Eureka Client_java_03



心跳线程,每次调用​​renew()​​方法

【Spring Cloud】之 Eureka Client_源码解读_04



​renew()​​详情

若状态码为​​NOT_FOUND​​​, 则去注册​​boolean success = register();​

【Spring Cloud】之 Eureka Client_java_05




(3)查询 Eureka Server拉取注册表

在​​DiscoveryClient.java​​中可看到

【Spring Cloud】之 Eureka Client_Eureka_06

​CacheRefreshThread()​​方法

【Spring Cloud】之 Eureka Client_SpringCloud_07

(4)向 Eureka Server 取消租约

【Spring Cloud】之 Eureka Client_java_08

二 源码解读

(1)​​defaultZone​​解读

想找到​​application.properties​​​ 中 ​​eureka.client.service-url.defaultZone​

在​​EndpointUtils.java​​中可以发现


public static List<String> getServiceUrlsFromConfig(EurekaClientConfig clientConfig,

String instanceZone,

boolean preferSameZone) {

...



List<String> serviceUrls = clientConfig.getEurekaServerServiceUrls(availZones[myZoneOffset]);



...

}