摘要: 前言 eureka客户端和服务端的通信前面九篇文章都已经将源码分析完毕,这篇文章我们将重点放在eureka server集群内的多个节点间是如何通信的。 正文 eureka server集群采用peer to peer的通信方式,简称p2p。即没有主副节点,所有节点地位平等。这就意味着所有节点要将自 阅读全文
posted @ 2021-06-28 19:42 孔令翰 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 正文 自我保护机制 是指,eureka sever如果在1min内,发现超过15%的大量服务实例下线了,会认为是自身出了问题,比如断网,导致服务实例client无法向自己发送心跳,这时不会将这些服务实例剔除。 自我保护机制的入口: com.netflix.eureka.registry.PeerAw 阅读全文
posted @ 2021-06-28 19:41 孔令翰 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 前言 eureka源码系列已经过去了大半,这篇文章我们来看 ”服务下线“ 。 正文 服务下线 是指:服务实例主动下线,由服务实例所在的eureka client主动发起,并且通知server进行注册表下线的功能。 client下线 client调用链路: com.netflix.discovery. 阅读全文
posted @ 2021-06-28 19:40 孔令翰 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 正文 服务剔除是指:服务端会定时对实例进行检查检查,如果有没有发送心跳续约的实例,则将这个实例从注册表中剔除。 所以这个功能是在服务端实现的,调用链路: com.netflix.eureka.EurekaBootStrap contextInitialized com.netflix.eureka. 阅读全文
posted @ 2021-06-28 19:38 孔令翰 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 前言 正文 client发送续约心跳 client在构造方法中启动定时调度任务的方法中,启动了定时向server发送心跳的任务: client调用链路: DiscoveryClient DiscoveryClient DiscoveryClient heartbeatExecutor Discove 阅读全文
posted @ 2021-06-28 19:37 孔令翰 阅读(141) 评论(0) 推荐(0) 编辑
摘要: client抓取全量注册表 入口 客户端会在创建DiscoveryClient实例的时候,也就是DiscoveryClient的构造函数中,根据配置判断是否需要抓取注册表,默认是需要抓取。如果需要的话,第一次抓取采用全量抓取的方式,所谓全量抓取就是请求server的全量抓取接口,然后缓存在本地。调用 阅读全文
posted @ 2021-06-28 19:36 孔令翰 阅读(166) 评论(0) 推荐(1) 编辑
摘要: 前言 本文讲解 “服务注册” 这个功能模块,这个模块涉及到client主动请求server进行 服务注册 ,和server端对client端的请求进行处理。 client向server请求注册服务 client端服务注册的代码入口很难找,方法调用链路如下: DiscoveryClient Disco 阅读全文
posted @ 2021-06-28 18:29 孔令翰 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 前言 本文讲解eureka server的启动源码。 Server启动 "《Eureka源码系列 —— 2.源码启动入口》" 文章中我们提到过 实现了 接口,web容器启动的时候,会调用 方法,将实现类的逻辑拉起来,这个方法就是eureka server的启动入口,该方法如下图: 分为三步: 1. 阅读全文
posted @ 2021-06-28 17:28 孔令翰 阅读(241) 评论(0) 推荐(0) 编辑