当前位置: 首页 > news >正文

医疗器械商标seo外包网络公司

医疗器械商标,seo外包网络公司,温州专业网站建设,减肥药 做网站营销学海无涯,拉钩作伴。感谢拉钩教育提供的学习平台,让我们有一个提升自我的机会上一篇文章我们对eureka的服务端启动流程做了大致的源码剖析,接下来我们对eureka的客户端进行一下源码剖析看看他里面做了些什么事情首先我们和上一篇文章一样,看看…

学海无涯,拉钩作伴。感谢拉钩教育提供的学习平台,让我们有一个提升自我的机会

上一篇文章我们对eureka的服务端启动流程做了大致的源码剖析,接下来我们对eureka的客户端进行一下源码剖析看看他里面做了些什么事情

首先我们和上一篇文章一样,看看启动类上添加的注解org.springframework.cloud.netflix.eureka.EnableEurekaClient里面有没有什么信息可以获取

2c26a4d2e25557ad4b8b1d485714f1ce.png

有点失望,这里面什么也没有,空空如也,那我们再去看看eureka的类路径下有没有配置客户端的自动装配相关信息

f598ab26baee279e5a829a890c753f13.png

嗯,这个类和服务端自动装配的名称很像,是不是就是他呢,咱们点进去看看这里面的内容我们进入到org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration里面看看

c53db8b8ce82e2b739b8ccfd5a97d7ae.png

哟熟悉的味道啊,这里也整了一个条件marker而且这个marker也是在一个配置类的内部类,而且我们还发现这里还有一个@AutoConfigureAfter注解,注解中正好也配置了这个配置类,这个注解的意思就是在注解加里面的类都注入完之后再对添加该注解的类进行注入。那么我们进入这个配置类org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration里看看里面又做了啥

4664f26bec6dd90aeb30bbd36883463f.png

o my good,这里也是熟悉的味道啊,简简单单就把这个空的marker创建了然后交给spring容器。

回到主配置类EurekaClientAutoConfifiguration,我们还发现可以通过参数eureka.client.enabled不要作为eureka客户端进行配置,如果不想让当前项目作为客户端可以设置为false

下面我们来看一下EurekaClientAutoConfifiguration这里面都做了啥

ad405c99d87a9e1c0f411a8786dcf777.png

嗯?这些参数是不是很熟悉啊,这不是咱们在客户端的配置文件中配置的信息吗,他这里把配置文件解析出来分装到了一个org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean中然后交个IOC容器

再往下看我们可以看到他在自己的内部类org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration.EurekaClientConfiguration中注入了com.netflix.discovery.EurekaClient

d96499320a06c1bef508d8d9b10b450b.png

8d80b1d398562fd3dbf2c662d5ea7dd7.png

我们来看一下org.springframework.cloud.netflix.eureka.CloudEurekaClient里又做了啥

b9075ac6d1c597d6b79d6d2affcce729.png

我们点击进入父类com.netflix.discovery.DiscoveryClient的构造方法中看看里面做了啥,这时候来到了com.netflix.discovery.DiscoveryClient#DiscoveryClient()方法中,咋一看

6e7367675023bd300a5fbd633a899e29.png

又调用自己的构造方法,咱们继续跟进

52bd5b064eb9c2874f55d6b64cea68fd.png

到这里我们就发现他开始做事情了,我们重点关注途中标红数字的地方

1、从注册中心中获取列表信息

点进com.netflix.discovery.DiscoveryClient#fetchRegistry方法中

dadbb397ecc145abd5df9610fa61ad3b.png

可以看到这里获取可以全量获取或者增量获取列信息,咱们先看看全量获取是怎么获取的

ac840d2aa57b1575cb4e6698ff3ddd2e.png

这里我们可以发现他是使用com.netflix.discovery.shared.transport.EurekaHttpClient进行查找的,而这个client又有四个实现类,那咱们应该用哪个类的查找方法呢?通过上一篇文章我们可以知道,在eureka服务端启动流程中注入了jersey框架,这个框架就是用来处理rest请求的,所以客户端发送请求的是有也是使用jersey进行请求发送。

因此我们进入到com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient#getApplications中看看里面做了啥

2e966ae7ee6fbaedf0e910d42a36a7ab.png

继续跟进

c9cbb219eb0562a56be22986fc1ef451.png

可以看到这里就是使用jerseyClient进行资源获取,然后将返回的结果进行加工并返回。到这里全量获取就算是完事了。

接下来我们看一下增量获取的

01900f48e902321ad4cfa3c8cbaed35f.png

可以看到这里就直接使用Jersey获取增量,然后看看是否有增量数据,如果没有直接去获取全量信息,如果有增量信息,更新增量信息到本地

672fb6cf44927a85d60e2229ddfef57b.png

到这里增量获取也看完了接下来我们回到DiscoveryClient中看看他接下来要做什么

2、注册自己

5e4f29bd339757e28af414f886f7e3b4.png

bd9db3aff21067670c87534f3eaa7be6.png

这里同样使用com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient发送请求请求注册

2f91f9e73e9b8f57fe82b9e7689085d2.png

到这里我们注册流程也看完了,我们继续回到DiscoveryClient中看看接下来干什么了

3、初始化⼀些定时任务(⼼跳续约,刷新本地服务缓存列表)

405712701fe3926eef7a6d7524d30b5d.png

6d3a2a0e72d39a59988a085efcaae00b.png

可以看到授信定义刷新本地缓存定时任务

21b4d646c0ad9430931b3b7f83311d50.png

17c42af84f4f103723c702343545cbde.png

可以看到这里还是调用的是获取列表信息方法我们再点进去看看

02878268acadab5812056434076e1411.png

从上面两张图联合可以看出,在定时任务执行过程中,如果远程区域发生了变动,他这里是使用的全量更新,也就是丢弃本地缓存

那么这个定时任务多久执行一次呢?

8b25192656ea59989f1ab1d545917302.png

从org.springframework.cloud.netflix.eureka.EurekaClientConfigBean配置类中我们可以看到时间间隔是30s

接下来是初始化心跳(续约)定时任务

c3d429f821346ebb4b4b6fb6988055f3.png

这里的定时任务的间隔也是30s

9057dbe8e97dfa2cee5ec1a7c4000f63.png

eb0741b61b87d297424850ab0ffaeba7.png

98714e2b7b7864c86a05c48136ef634d.png

364fe830ded9fce337eafb5d8f7e6787.png

从上面两张图我们可以发现他也是使用jersey发送请求。然后判断是否找到对应的服务信息,如果找不到,再重新注册一次

上面我们看完了客户端主动查询、注册、心跳相关的源码,接下来我们看一下注销的源码,这个源码在哪里呢?我们回到EurekaClientAutoConfiguration中

26a1722f1cf9b6987b8711020a89945b.png

看到这个熟悉spring声明周期的同学们应该都不陌生,就是告诉容器,这个eurekaClient对象销毁的时候需要执行shutdown方法。接下来我们就来看看shutdown这个方法具体代码

dbf2a20012afef62470e1301bd2d2938.png

可以看到这个方法中主要就是把一些监听器关闭,然后取消定时任务,然后调用了一下unregister方法

55bb5b145c9cbe0d361197182979da1c.png

老套路,使用jersey发送请求注销

到这里,我们客户端启动主流程基本就完事了。咱们来梳理一下这个过程中主要都做了什么事

1、客户端启动类上使用@EnableEurekaClient注解

2、基于springboot自动装配bean原则找到EurekaClientAutoConfiguration

3、注入EurekaDiscoveryClientConfiguration中的marker以便注入EurekaClientAutoConfiguration

4、解析在客户端配置的配置文件并封装到bean中注入到容器

5、注入EurekaClient

  • 获取注册列表
  • 注册自己
  • 初始化定时任务
  1. 心跳定时任务
  2. 缓存更新定时任务

 6、注销客户端(关闭客户端时)

http://www.lbrq.cn/news/2758213.html

相关文章:

  • 优化网络速度公司网络优化方案
  • css网站开发技术有哪些营销渠道名词解释
  • 985建设网站专业技能培训机构
  • 建设本地端网站最知名的网站推广公司
  • 做效果图的素材网站做一个简单网页
  • 网站美编设计怎么做流量精灵网页版
  • 包牛牛网站怎么做免费的网络营销方式
  • 专业微信网站建设价格seo搜索引擎优化兴盛优选
  • 衡阳网站建设十大免费网站推广平台有哪些
  • 大连做网站qq群优化大师软件大全
  • 安全网站建设的研究方法网站关键词优化应该怎么做
  • 衡水建设局网站爱站网能不能挖掘关键词
  • 安阳市城乡建设规划局网站乔拓云网微信小程序制作
  • 直销网站建设网站关键词查询优化
  • 石家庄网站设计网站维护网站seo优化发布高质量外链
  • 给人做ppt的网站吗推广软件赚钱的平台
  • 大型网站seo方案百度广告多少钱
  • 泰安房价网二手房出售信息网站关键词优化推广
  • 上海专做特卖的网站病毒营销案例
  • 学校网站建设开发商百度软件应用中心下载
  • 怎么做微商的微网站搜索引擎的工作原理有哪些
  • 海南论坛论坛网站建设怎么查搜索关键词排名
  • 想给大学做网站写软文一篇多少钱合适
  • 中华人民共和国建设部网站抖音seo排名优化公司
  • 做公司的网站有哪些东西吗徐州seo外包
  • 多图片网站优化网站优化推广
  • 南京网站建设服务公司知名品牌营销策略
  • 自己做网站花钱么百度知道官网登录入口
  • 做网站是用什么语言的市场营销推广策略
  • 做鸡尾酒的网站东莞seo优化案例
  • Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin(2)
  • 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛
  • 麒麟V10静默安装Oracle11g:lsnrctl、tnsping等文件大小为0的解决方案
  • 评测系统构建
  • API生命周期10阶段
  • (一)React企业级后台(Axios/localstorage封装/动态侧边栏)