摘要: 再看@LoadBalanced注解 上一篇文章中我们看到过@LoadBalanced注解的源码: 我们发现这个注解上面有一行注释,指引我们去看 类,我们就跟着这个线索去看一下 LoadBalancerClient负载均衡客户端 接口,继承自 接口, 提供了一个方法,可以 通过服务ID选择一个具体的服 阅读全文
posted @ 2021-07-02 16:51 孔令翰 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 前言 这篇文章,笔者开始研究新的系列啦,也就是标题里的Ribbon系列源码🤓。 之前的Eureka系列分了十篇讲解,但是阅读量好低,应该不是博客园的原因吧🤡。 客户端负载均衡 Ribbon和前面研究的Eureka组件不太一样,他不需要独立部署,而是依附于客户端应用,随着客户端一起部署。在调用方客 阅读全文
posted @ 2021-07-02 11:51 孔令翰 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 前言 Thread-local Storage,缩写TLS,中文翻译为线程本地存储。是多线程编程中一种常用的设计模式,在许多编程语言中都有对应实现,具体可以看这个wiki。本篇文章笔者聚焦Java中的实现——ThreadLocal,争取一篇文章将源码、坑点和最佳实践讲明白。 基本介绍 API Thr 阅读全文
posted @ 2021-07-01 14:39 孔令翰 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 前言 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) 编辑