Eureka
文章平均质量分 90
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Eureka注册中心如何承载大型系统的千万级访问
一、问题起源Spring Cloud架构体系中,Eureka是一个至关重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的。不少初学Spring Cloud的朋友在落地公司生产环境部署时,经常会问: Eureka Server到底要部署几台机器? 我们的系统那么多服务,到底会对Eureka Server产生多大的访问压力? Eureka Server能不能抗住一个大型系统的访问压力? 如果你也有这些疑问,别着急!咱们这就一起去看看,E转载 2022-04-10 15:04:17 · 399 阅读 · 0 评论 -
Spring Cloud之Eureka服务注册与发现源码
为了更深入的理解Eureka的运作和配置,下面我们结合源码来分别看看服务端和客户端的通信行为是如何实现的。首先,服务注册中心、服务提供者、服务消费者这三个主要元素来说,后两者(也就是Eureka客户端)在整个运行机制中是大部分通信行为的主动发起者,而注册中心主要是处理请求的接收者。所以,我们可以从Eureka的客户端作为入口看看它是如何完成这些主动通信行为的。我们在将一个普通的Spring Boot应用注册到Eureka Server中,或是从Eureka Server中获取服务列表时,主要就做了两原创 2020-06-27 04:53:49 · 403 阅读 · 0 评论 -
Eureka高可用之Eureka Server复制机制:PeerAwareInstanceRegistryImpl
还是先提出几个疑问,看本篇文章前最好看过Eureka高可用之Client重试机制:RetryableEurekaHttpClient,要知道Eureka Client只会向一个Server节点进行注册(心跳、状态改变等类似),注册失败时才会尝试下一个server节点。当然正是由于这种机制,才会有Eureka Server的复制行为,个人认为,Eureka Client向每个Eureka Server都发送注册、心跳等事件,会更好的保证一致性1、如果有4个Eureka Server集群节点,一个Clien原创 2020-06-26 15:03:47 · 349 阅读 · 0 评论 -
Eureka高可用之Client重试机制:RetryableEurekaHttpClient
下面有几个疑问是我看源码时问自己的,先提出来,希望看这篇文章的人带着疑问去读,然后初步介绍下EurekaHttpClient体系,后面会详细讲RetryableEurekaHttpClient1、Eureka Client如何向Eureka Server集群注册?如果我的Client端的ServiceUrl配置了多个Eureka Service地址,那么Client是否会向每一个Server发起注册?2、Eureka Server具有复制行为,即向其他Eureka Server节点复制自身的实例信原创 2020-06-26 14:33:28 · 1017 阅读 · 0 评论 -
Eureka 源码解析 —— StringCache
1. 概述本文主要分享Eureka 自己实现的 StringCache。先一起来看下美团点评技术团队对String#intern(...)的分享:FROM《深入解析String#intern》「 引言 」在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个 JAVA 系统级别提供的缓存。8 种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用...原创 2020-06-10 00:29:44 · 136 阅读 · 0 评论 -
Eureka 源码解析 —— 基于令牌桶算法的 RateLimiter
1. 概述本文主要分享RateLimiter 的代码实现和 RateLimiter 在 Eureka 中的应用。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Docker微服务架构实战》 两书齐买,京东包邮。2. RateLimitercom.netflix.discovery.util.RateLimiter,基于Token Bucket...原创 2020-06-10 00:27:41 · 488 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka-Server 集群同步
1. 概述本文主要分享Eureka-Server 集群同步注册信息。Eureka-Server 集群如下图:Eureka-Server 集群不区分主从节点或者Primary & Secondary 节点,所有节点相同角色( 也就是没有角色 ),完全对等。 Eureka-Client 可以向任意Eureka-Client 发起任意读写操作,Eureka-Server 将操作复制到另外的 Eureka-Server 以达到最终一致性。注意,Eureka-Server 是选择了 A...原创 2020-06-10 00:15:26 · 430 阅读 · 0 评论 -
Eureka 源码解析 —— 网络通信
1. 概述本文主要分享Eureka 的网络通信部分。在不考虑 Eureka 2.x 的兼容的情况下,Eureka 1.x 主要两部分的网络通信:Eureka-Client 请求 Eureka-Server 的网络通信 Eureka-Server 集群内,Eureka-Server 请求其它的Eureka-Server的网络通信本文涉及类在com.netflix.discovery.shared.transport包下,涉及到主体类的类图如下(打开大图):粉色部分 —— Eu...原创 2020-06-10 00:05:40 · 652 阅读 · 0 评论 -
Eureka 源码解析 —— EndPoint 与 解析器
1. 概述本文主要分享EndPoint 与 解析器。EndPoint ,服务端点。例如,Eureka-Server 的访问地址。 EndPoint 解析器,将配置的 Eureka-Server 的访问地址解析成 EndPoint 。目前有多种 Eureka-Server 访问地址的配置方式,本文只分享 Eureka 1.x 的配置,不包含 Eureka 1.x 对 Eureka 2.x 的兼容配置:第一种,直接配置实际访问地址。例如,eureka.serviceUrl.defaultZon.原创 2020-06-10 00:05:24 · 1173 阅读 · 0 评论 -
Eureka 源码解析 —— 任务批处理
1. 概述本文主要分享任务批处理。Eureka-Server 集群通过任务批处理同步应用实例注册实例,所以本文也是为 Eureka-Server 集群同步的分享做铺垫。本文涉及类在com.netflix.eureka.util.batcher包下,涉及到主体类的类图如下(打开大图):紫色部分 —— 任务分发器 蓝色部分 —— 任务接收器 红色部分 —— 任务执行器 绿色部分 —— 任务处理器 黄色部分 —— 任务持有者( 任务 )推荐 Spring Cloud 书籍:...原创 2020-06-10 00:05:13 · 597 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka源码解析 —— 应用实例注册发现 (九)之读写锁
1. 概述本文主要分享Eureka 注册中心的那把读写锁,让我瘙痒难耐,却不得其解。在某次意外的抠脚的一刻( 笔者不抽烟,如果抽烟的话,此处应该就不是抠脚了 ),突然顿悟,爽,这好比... 比喻有点猥琐,笔者就省略 100 字。不瞎比比,上代码:public abstract class AbstractInstanceRegistry implements InstanceRegistry { private final ReentrantReadWriteLock readWr.原创 2020-06-09 00:13:21 · 398 阅读 · 2 评论 -
Eureka 源码解析 —— 应用实例注册发现(八)之覆盖状态
1. 概述本文主要分享应用实例的覆盖状态属性。这里要注意下,不是应用实例的状态(status),而是覆盖状态(overridestatus) 。代码如下:public class InstanceInfo { private volatile InstanceStatus overriddenstatus = InstanceStatus.UNKNOWN; // ... 省略属性和方法}调用 Eureka-Server HTTP Restful 接...原创 2020-06-09 00:10:50 · 406 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(七)之增量获取
1. 概述本文主要分享Eureka-Client 向 Eureka-Server 获取增量注册信息的过程。前置阅读:《Eureka 源码解析 —— 应用实例注册发现(六)之全量获取》FROM《深度剖析服务发现组件Netflix Eureka》Eureka-Client 获取注册信息,分成全量获取和增量获取。默认配置下,Eureka-Client 启动时,首先执行一次全量获取进行本地缓存注册信息,而后每30秒增量获取刷新本地缓存( 非“正常”情况下会是全量获取 )。本文重点在于...原创 2020-06-09 00:10:34 · 539 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(六)之全量获取
1. 概述本文主要分享Eureka-Client 向 Eureka-Server 获取全量注册信息的过程。FROM《深度剖析服务发现组件Netflix Eureka》Eureka-Client 获取注册信息,分成全量获取和增量获取。默认配置下,Eureka-Client 启动时,首先执行一次全量获取进行本地缓存注册信息,而后每30秒增量获取刷新本地缓存( 非“正常”情况下会是全量获取 )。本文重点在于全量获取。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等...原创 2020-06-09 00:10:18 · 424 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(五)之过期
1. 概述本文主要分享Eureka-Server 过期超时续租的租约。FROM《深度剖析服务发现组件Netflix Eureka》推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Docker微服务架构实战》 两书齐买,京东包邮。2. 为什么需要过期正常情况下,应用实例下线时候会主动向 Eureka-Server 发起下线请求。但实际情...原创 2020-06-09 00:10:04 · 448 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(四)之自我保护机制
1. 概述本文主要分享自我保护机制,为应用实例过期下线做铺垫。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Docker微服务架构实战》2. 定义自我保护机制定义如下:FROM周立 —— 《理解Eureka的自我保护模式》当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护...原创 2020-06-09 00:09:52 · 167 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(三)之下线
1. 概述本文主要分享Eureka-Client 向 Eureka-Server 下线应用实例的过程。FROM《深度剖析服务发现组件Netflix Eureka》二次编辑蓝框部分,为本文重点。 非蓝框部分,Eureka-Server 集群间复制注册的应用实例信息,不在本文内容范畴。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Dock...原创 2020-06-09 00:09:38 · 173 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(二)之续租
1. 概述本文主要分享Eureka-Client 向 Eureka-Server 续租应用实例的过程。FROM《深度剖析服务发现组件Netflix Eureka》二次编辑蓝框部分,为本文重点。 非蓝框部分,Eureka-Server 集群间复制注册的应用实例信息,不在本文内容范畴。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Dock...原创 2020-06-09 00:09:25 · 422 阅读 · 0 评论 -
Eureka 源码解析 —— 应用实例注册发现(一)之注册
1. 概述本文主要分享Eureka-Client 向 Eureka-Server 注册应用实例的过程。FROM《深度剖析服务发现组件Netflix Eureka》二次编辑蓝框部分,为本文重点。 非蓝框部分,Eureka-Server 集群间复制注册的应用实例信息,不在本文内容范畴。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Dock...原创 2020-06-09 00:09:11 · 400 阅读 · 0 评论 -
Eureka 源码解析 —— 注册表 InstanceRegistry 类关系
1. 概述本文主要简介注册表 InstanceRegistry 的类关系,为后文的应用实例注册发现、Eureka-Server 集群复制做整体的铺垫。推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Docker微服务架构实战》 两书齐买,京东包邮。2. 类图com.netflix.eureka.registry.AwsInstanceReg...原创 2020-06-09 00:08:48 · 254 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka-Server 启动(二)之 EurekaBootStrap
1. 概述本文接《Eureka 源码解析 —— Eureka-Server 启动(一)之 EurekaServerConfig》,主要分享Eureka-Server 启动的过程的第二部分 ——EurekaBootStrap。考虑到整个初始化的过程中涉及的代码特别多,拆分成两两篇文章:ServerConfig 【本文】EurekaBootStrap推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服...原创 2020-06-08 00:53:25 · 434 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka-Server 启动(一)之 ServerConfig
1. 概述本文主要分享Eureka-Server 启动的过程。考虑到整个初始化的过程中涉及的代码特别多,拆分成两两篇文章:【本文】ServerConfig EurekaBootStrap推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Docker微服务架构实战》 两书齐买,京东包邮。2. EurekaServerConfigcom.ne...原创 2020-06-08 00:27:23 · 575 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka-Client 初始化(三)之 EurekaClient
1. 概述本文接《Eureka 源码解析 —— Eureka-Client 初始化(二)之 EurekaClientConfig》,主要分享Eureka-Client 自身初始化的过程的第三部分 ——EurekaClient,不包含 Eureka-Client 向 Eureka-Server 的注册过程( ????后面会另外文章分享 )。Eureka-Client 自身初始化过程中,涉及到主要对象如下图:创建EurekaInstanceConfig对象 使用 EurekaInstanceC原创 2020-06-08 00:23:57 · 302 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka-Client 初始化(二)之 EurekaClientConfig
1. 概述本文接《Eureka 源码解析 —— Eureka-Client 初始化(一)之 EurekaInstanceConfig》,主要分享Eureka-Client 自身初始化的过程的第二部分 ——EurekaClientConfig,不包含 Eureka-Client 向 Eureka-Server 的注册过程( ????后面会另外文章分享 )。Eureka-Client 自身初始化过程中,涉及到主要对象如下图:创建EurekaInstanceConfig对象 使用 EurekaI原创 2020-06-08 00:11:55 · 291 阅读 · 0 评论 -
Eureka 源码解析 —— Eureka-Client 初始化(一)之 EurekaInstanceConfig
1. 概述本文主要分享Eureka-Client 自身初始化的过程,不包含 Eureka-Client 向 Eureka-Server 的注册过程( ????后面会另外文章分享 )。Eureka-Client 自身初始化过程中,涉及到主要对象如下图:创建EurekaInstanceConfig对象 使用 EurekaInstanceConfig对象创建InstanceInfo对象 使用 EurekaInstanceConfig对象 + InstanceInfo对象创建Applica...原创 2020-06-08 00:08:20 · 395 阅读 · 0 评论 -
Eureka 源码解析 —— 调试环境搭建
1. 依赖工具Gradle JDK IntelliJ IDEA推荐 Spring Cloud 书籍:请支持正版。下载盗版,等于主动编写低级 BUG。 程序猿DD ——《Spring Cloud微服务实战》 周立 ——《Spring Cloud与Docker微服务架构实战》 两书齐买,京东包邮。2. 源码拉取从官方仓库https://github.com/Netflix/eureka.gitFork出属于自己的仓库。为什么要Fork?既然开始阅读、调试源码,我们可能会...原创 2020-06-08 00:01:27 · 819 阅读 · 0 评论 -
Eureka 源码解析 —— 项目结构简介
1. 概述本文主要分享Eureka 的项目结构,附带部分简介和原理。Eureka 项目地址:https://github.com/Netflix/eureka请注意下,不是spring-cloud-netflix-eureka-client/spring-cloud-netflix-eureka-server。 笔者 Fork 的代码仓库https://github.com/YunaiV/eureka,会随着这个系列的文章逐渐增加中文注释,可以先 Star 一下。推荐 Sprin...原创 2020-06-08 00:01:12 · 210 阅读 · 0 评论 -
Spring Cloud Netflix 注册中心 Eureka 入门
1. 概述本文我们来学习Spring Cloud Netflix提供的spring-cloud-netflix-eureka-server和spring-cloud-netflix-eureka-server组件,基于 Spring Cloud 的编程模型,接入Eureka作为注册中心,实现服务的注册与发现。旁白君:下面我们先来科普 Eureka 和注册中心的概念,保持耐心,嘿嘿~2. Eureka 简介Eureka 是 Netflix 开源的注册中心组件,分成 Eure...原创 2020-06-08 00:00:58 · 685 阅读 · 0 评论
分享