SpringCloud-Eureka客户端启动(9)

一.自动装配→一切的起点

1.spring.factories

SpringCloud中,一切是基于SpringBoot构建的,而想要管理spring或者被spring管理,那都离不开自动装配。而自动装配离不开spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.netflix.eureka.config.EurekaClientConfigServerAutoConfiguration,\
org.springframework.cloud.netflix.eureka.config.EurekaDiscoveryClientConfigServiceAutoConfiguration,\
org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration,\
org.springframework.cloud.netflix.ribbon.eureka.RibbonEurekaAutoConfiguration,\
org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration

org.springframework.cloud.bootstrap.BootstrapConfiguration=\
org.springframework.cloud.netflix.eureka.config.EurekaDiscoveryClientConfigServiceBootstrapConfiguration

总共要引入6个配置类,那么他们分别是干什么的呢?

1.EurekaClientConfigServerAutoConfiguration:Eureka 客户端配置类,加载eureka配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UL4XoR5o-1606196771991)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/124607b2-c7b9-42f5-a366-410573bfe005/Untitled.png)]


2.EurekaDiscoveryClientConfigServiceAutoConfiguration: 通过配置中心config发现配置文件(这是配合SpringCloud Config使用的,这里不讨论)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jp7zdUwW-1606196771993)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e3d13232-3658-4524-a02d-d2e642546de8/Untitled.png)]

3.EurekaClientAutoConfiguration:EurekaClient核心功能装配,本节核心,稍后梳理

4.RibbonEurekaAutoConfiguration:Ribbon(负载均衡)基于eureka,这是后面将要讲的,这里不进行讨论
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4hZ7s2zD-1606196771995)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a55b0fb4-9a87-482f-a2eb-80f2b9e9c416/Untitled.png)]

5.EurekaDiscoveryClientConfiguration:Eureka自动发现与配置类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Re2jYn8Q-1606196771997)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d29e98e7-eb83-4126-9379-1324ecbc4de8/Untitled.png)]

6.EurekaDiscoveryClientConfigServiceBootstrapConfiguration:Eureka自动发现客户端配置中心引导类(就是配合SpringCloud Config进行配置文件读取)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eZkDsTaH-1606196772000)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/14f6caa8-0235-4884-aeed-cc93f246ef24/Untitled.png)]

二.**EurekaClientAutoConfiguration 启动开始**

1.先决条件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dp5L88EU-1606196772002)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/dd88e832-d502-409c-9f0c-fbb0e6ec2a5d/Untitled.png)]

这里我们主要说一下Marker在哪里实例化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DoOJEqKg-1606196772003)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bcb1a840-3256-443d-a909-4c7b187dd8df/Untitled.png)]

这里会不会发现,跟Eureka服务端初始化是不是很雷同,都是要Marker实例,但是Eureka客户端这边都不需要通过注解来引入,只要引入jar包就自动装配了。可以通过eureka.client.endabled=false关闭


2. 读取配置eurekaInstanceConfiguration

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vbBU88te-1606196772004)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/42dd0976-33fb-4816-8d7c-1a83d9e200e8/Untitled.png)]


3.实例化EurekaClient

1.在**EurekaClientAutoConfiguration** 中有两处进行了EurekaClient实例化,

第一处是在EurekaClientConfiguration

第二处是在**org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration.RefreshableEurekaClientConfiguration#eurekaClient 。**

都是通过new CloudEurekaClient进行对象实例化的,第二处是用来配合SpringCloud Config来动态刷新的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFdgUgKY-1606196772005)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/824354d4-ade9-45bc-b6f5-8774270fc39b/Untitled.png)]


2.开始实例化CloudEurekaClient,调用了父类的构造器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6p1NH434-1606196772006)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6ed12c2a-0274-411d-a699-c04d5d8609cf/Untitled.png)]

3.在将Provider实现类作为参数传递进入同级构造方法中,提供备份注册信息获取方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zZPhxDMl-1606196772007)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/90c9e94c-4481-49be-8d15-5c41219f292b/Untitled.png)]

4.在同级构造方法中构造定时任务执行线程池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JjXvMOcP-1606196772008)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8901e11c-9396-4f59-a0d6-bd965f5b0b4e/Untitled.png)]

5.获取注册信息

这里会去获取注册信息,在下面第四点我会进行分析,其实内部实现已经在服务器端讲解过。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GHHc6Pb1-1606196772009)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/225b9621-f339-4d01-a951-e7fc95448c4a/Untitled.png)]

6.注册自己到服务端,会在下面第五点进行分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FQmnhlLz-1606196772010)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e8aaa2b1-5230-45fc-8b99-0c213310a7db/Untitled.png)]

7.开启定时任务

开启定时任务:刷新缓存,心跳信息,实例复制,状态变更监听

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6h1v2kB-1606196772011)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e2631dba-0668-4bdb-9041-fe85fc33d723/Untitled.png)]

至此完成DiscoveryClient的初始化

4.从服务器获取已注册列表

传送门:SpringCloud-Eureka服务端集群如何同步(5)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSVPLi8T-1606196772013)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/037fa245-481a-4aa3-91e6-54d1298c0243/Untitled.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O9AVjnKh-1606196772014)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/26095964-c77e-4d9a-8fa4-7596c0a177de/Untitled.png)]


5.注册自己到Eureka服务端

1.基于http请求去注册客户端到服务器中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ybAs7MN-1606196772015)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7419f92a-83e6-4418-9805-4b661f7fb7ec/Untitled.png)]

2.底层使用的是jersey 客户端进行远程请求,至于jersey的底层我们将不再深入了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oiuJCdKT-1606196772016)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/087c119b-45b8-418b-bcb6-173707e251a9/Untitled.png)]

6.开启续约,缓存刷新,实例复制等定时任务,监听状态变化

1.缓存刷新

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6AUybiU-1606196772017)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5aadddfb-23bf-45af-9e60-128bf87d51bf/Untitled.png)]

fetchRegistry上面已经讲过,这里不再复述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PPtcb4Zc-1606196772018)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c744bc7b-1652-4f54-8e3f-f71285aa474d/Untitled.png)]


2.心跳续约

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SUUyYwNZ-1606196772019)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/838dfacb-92b8-43b5-8dd9-b71097d752b5/Untitled.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eTnGdBF6-1606196772020)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/dad33e24-7448-4f07-9ddf-5aa3917b2ff1/Untitled.png)]
在这里插入图片描述

3.构建状态监听器,并将自身状态更新到服务器上去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCtmAttG-1606196772021)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7698501a-ce54-494a-bcf0-6b7c64a1d7c6/Untitled.png)]

总结

在EurekaClient初始化过程中,eureka客户端所想做的事情,基本都已经做了。

1.从Eureka服务端获取注册列表

2.注册自己到Eureka服务端

3.开启注册列表刷新定时任务,定时拉取服务端注册表

4.续约定时任务开启

5.自身状态监听与定时同步到Eureka服务端

难的是开始,贵的是坚持,最后发现全是收获

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欢谷悠扬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值