DiscoveryClient类实现了EurekaClient接口

SpringCloud复习:(1)netflix包里的DiscoveryClient类_1024程序员节


它的主要作用:服务注册,服务续约,服务下线,获取服务列表。

initScheduledTasks方法用来开启定时任务来完成上述功能。

SpringCloud复习:(1)netflix包里的DiscoveryClient类_1024程序员节_02


上图中的代码用来从服务器定期(默认30秒)拉取服务列表(ScheduledExecutorService的应用场景)

其中TimedSupervisorTask 这个Runnable的run方法代码如下:

SpringCloud复习:(1)netflix包里的DiscoveryClient类_定时任务_03


服务注册和发心跳信息也在initScheduledTasks方法中,代码如下:

SpringCloud复习:(1)netflix包里的DiscoveryClient类_服务器_04


SpringCloud复习:(1)netflix包里的DiscoveryClient类_1024程序员节_05


SpringCloud复习:(1)netflix包里的DiscoveryClient类_1024程序员节_06

其中InstanceInfoReplicator是一个Runnable,它的run方法代码如下:

SpringCloud复习:(1)netflix包里的DiscoveryClient类_定时任务_07


其中调用的discoveryClient的register方法代码如下:

SpringCloud复习:(1)netflix包里的DiscoveryClient类_定时任务_08


这个register方法调用之后,就完成了服务的注册EurekaClientConfigBean类封装了Eureka相关的配置信息

SpringCloud复习:(1)netflix包里的DiscoveryClient类_定时任务_09


SpringCloud复习:(1)netflix包里的DiscoveryClient类_定时任务_10


getEurekaServerServiceUrls用来获取服务器地址:

SpringCloud复习:(1)netflix包里的DiscoveryClient类_1024程序员节_11