前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试系列之-Spring Cloud Eureka

面试系列之-Spring Cloud Eureka

作者头像
用户4283147
发布于 2023-11-20 07:02:02
发布于 2023-11-20 07:02:02
1870
举报
文章被收录于专栏:对线JAVA面试对线JAVA面试
Eureka架构

Eureka 由 Eureka Server 和 Eureka Client 两部分组成:

  • Server 是服务注册中心,负责维护集群中的服务实例信息和状态,以及给 Client 返回服务列表。在分布式环境下一般会多实例部署来达到高可用,比如在多个可用区上均部署 Eureka Server;
  • Client 是一个嵌入到业务服务的模块,负责与 Server 交互,包括发送注册请求、维持心跳、拉取服务列表等;
  • 引入了服务发现中心后,需要为其他应用提供服务的应用在启动时需要先通过 Eureka Client 向 Eureka Server 发送注册请求,把自己的服务信息注册到 Eureka Server 上,同时需要定期发送心跳。在应用下线时发送取消注册请求,把自身从 Eureka Server 的服务列表里删除;
Eureka工作原理
  1. client-A向server发起服务注册请求
  2. client-A默认每个30s向server发送心跳
  3. server每个90s检查一次 剔除下线的服务
  4. client-B向server发起注册请求,初次全量拉去
  5. 先到从server的只读缓存中获取(一级),如果获取不到,再去读写缓存中获取(二级),如果获取不到再去注册表缓存中读取(三级)
  6. client-B默认每个30s向server增量拉去注册表
  7. 同时读写注册表缓存中数据发生变化,会是读写缓存失效,30s同步到只读缓存
Eureka 的自我保护/服务摘除/服务续约
  • Eureka 心跳机制:每个服务每隔 30s 自动向 Eureka Server 发送一次心跳,Eureka Server 更新这个服务的最后心跳时间。如果 180 s 内(版本1.7.2)未收到心跳,则任务服务故障了;
  • Eureka 自我保护机制:如果上一分钟实际的心跳次数,比我们期望的心跳次数要小,就会触发自我保护机制,不会摘除任何实例。期望的心跳次数:服务实例数量 * 2 * 0.85;
  • Eureka 服务摘除机制:不是一次性将服务实例摘除,每次最多随机摘除 15%。如果摘除不完,1 分钟之后再摘除;

各个服务的注册、服务下线、服务故障,全部会在内存里维护和更新注册表,各个服务每隔30秒拉取注册表的时候,Eureka Server就是直接提供内存里存储的有变化的注册表数据给他们就可以了;同样每隔30秒发起心跳时,也是在这个纯内存的Map数据结构里更新心跳时间;

两个重要属性

eureka.instance.lease-expiration-duration-in-seconds

leaseExpirationDurationInSeconds,表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则将移除该instance,默认为90秒;

如果该值太大,则很可能将流量转发过去的时候,该instance已经不存活了。如果该值设置太小了,则instance则很可能因为临时的网络抖动而被摘除掉,该值至少应该大于leaseRenewalIntervalInSeconds;

eureka.instance.lease-renewal-interval-in-seconds

leaseRenewalIntervalInSeconds,表示eureka client发送心跳给server端的频率。如果在leaseExpirationDurationInSeconds后,server端没有收到client的心跳,则将摘除该instance。除此之外如果该instance实现了HealthCheckCallback,并决定让自己unavailable的话,则该instance也不会接收到流量,默认30秒;

Eureka Server端多级缓存机制
服务端注册表拉取维护
在拉取注册表的时候首先从ReadOnlyCacheMap里查缓存的注册表;若没有就找ReadWriteCacheMap里缓存的注册表;如果还没有,就从内存中获取实际的注册表数据。在注册表发生变更的时候会在内存中更新变更的注册表数据,同时过期掉ReadWriteCacheMap,此过程不会影响ReadOnlyCacheMap查询注册表;一段时间内(默认30秒),各服务拉取注册表会直接读ReadOnlyCacheMap;30秒过后,Eureka Server的后台线程发现ReadWriteCacheMap已经清空了,也会清空ReadOnlyCacheMap中的缓存;
多级缓存机制的优点

尽可能保证了内存注册表数据不会出现频繁的读写冲突问题;并且进一步保证对Eureka Server的大量请求,都是快速从纯内存走,性能极高;

客户端更新拉取维护

通过定时任务30秒拉取一次注册表,30秒发起一次心跳

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 对线JAVA面试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
【一起学源码-微服务】Nexflix Eureka 源码八:EurekaClient注册表抓取
上一讲 我们通过单元测试 来梳理了EurekaClient是如何注册到server端,以及server端接收到请求是如何处理的,这里最重要的关注点是注册表的一个数据结构:ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>>()
一枝花算不算浪漫
2020/01/02
5020
SpringCloud之Eureka原理
哈喽大家好,本人最近面试经历有点坎坷,很久没更新了,但我打开公众号发现粉丝居然还涨了,非常感谢各位一直以来的关注,接下来会整理一下最近面试遇到知识点分享给大家。
用户3467126
2021/07/14
9900
SpringCloud之Eureka原理
详解Nacos和Eureka的区别「建议收藏」
Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, 由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用于实现AWS云的中服务定位,以实现中间层服务器的负载均衡和故障转移,遵循着CAP理论中的A(可用性)P(分区容错性)
全栈程序员站长
2022/09/24
3.4K0
详解Nacos和Eureka的区别「建议收藏」
Spring Cloud Eureka如何解决服务上下线延时过长问题
1)中小型的项目建议关闭自我保护(eureka.server.enableSelfPreservation=false)
海涛
2019/12/02
3.9K0
Eureka服务下线太慢,电话被告警打爆了
某天,忽然发现大量的告警,经过多番调查研究考察(此处省略3000字),发现是由于 Eureka 服务下线太慢,而仍然有大量的请求打进来导致的报错。
艾小仙
2022/09/01
5500
Eureka服务下线太慢,电话被告警打爆了
Eureka设计原理
目前我越来越关注技术原理层面的东西,开始考虑中间件设计背后,要考虑哪些因素,为什么要这样设计,有什么优化的地方,这次来讨论Eureka
老梁
2019/08/21
1.1K0
Eureka设计原理
程序员笔记|API网关如何实现对服务下线实时感知
在基于云的微服务应用中,服务实例的网络位置都是动态分配的。而且由于自动伸缩、故障和升级,服务实例会经常动态改变。因此,客户端代码需要使用更加复杂的服务发现机制。
宜信技术学院
2019/06/28
1.1K0
Spring Cloud Eureka - 集群间数据同步
Eureka集群没有主从概念,所有节点全部平等,集群间数据通过5个Http接口完成数据同步,下面介绍这几种接口以及同步流程。
夹胡碰
2021/03/15
2.1K0
(二)Spring Cloud: Eureka服务交互
Eureka Client主要是用来简化每一个服务和Eureka Server之间的交互,Eureka Client会自动拉取、更新以及缓存Eureka Server中的信息,这样,即使Eureka Server所有节点都宕机,Eureka Client依然能够获取到想要调用的服务地址(地址可能不准确)。
关忆北.
2021/12/07
2850
Spring-Cloud-Netflix-Eureka集群搭建
JokerDJ
2023/11/27
1730
Spring-Cloud-Netflix-Eureka集群搭建
Spring Cloud Eureka详解
服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。
全栈程序员站长
2022/09/14
7700
Spring Cloud Eureka详解
Eureka服务配置与进阶
1. Eureka服务配置与进阶 1.1. 主要配置 1.1.1. 服务端(eureka.server.*) enableSelfPreservation默认true,启用注册中心的自保护机制,Eureka如果统计到15分钟之内损失>15%的微服务心跳,则会触发自保护机制,不再提出服务提供者 waitTimeInMsWhenSyncEmpty默认1000605,在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间,单位为毫秒,单机开发模式建议设置为0 1.1.2. 客户信息配置(eurek
老梁
2019/09/10
7020
Eureka服务配置与进阶
微服务组件--注册中心Spring Cloud Eureka分析
【1】服务注册(register):Eureka Client会通过发送REST请求的方式向Eureka Server注册自己的服务,提供自身的元数据,比如ip地址、端口、运行状况指标的url、主页地址等信息。Eureka Server接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。
忧愁的chafry
2022/10/30
4530
微服务组件--注册中心Spring Cloud Eureka分析
【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
Spring Cloud架构体系中,Eureka是一个至关重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的。
方志朋
2019/06/21
3.1K0
【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问?
EUREKA生产环境的参数如何优化?
之前微服务项目的时候一直没有时间去总结,最近闲下来了,可以好好的把以前学习的微服务的知识和微服务的项目好好总结归纳一下了。
技术从心
2020/03/10
3.1K0
EUREKA生产环境的参数如何优化?
【一起学源码-微服务】Nexflix Eureka 源码十一:EurekaServer自我保护机制竟然有这么多Bug?
上一讲主要讲了服务下线,已经注册中心自动感知宕机的服务。 其实上一讲已经包含了很多EurekaServer自我保护的代码,其中还发现了1.7.x(1.9.x)包含的一些bug,但这些问题在master分支都已修复了。
一枝花算不算浪漫
2020/02/11
8130
Spring Cloud Eureka集群
Spirng Cloud Eureka使用Netflix Eureka来实现服务注册与发现。它既包含了服务端组件,也包含了客户端组件,并且服务端与客户端均采用java编写,所以Eureka主要适用于通过java实现的分布式系统,或是JVM兼容语言构建的系统。Eureka的服务端提供了较为完善的REST API,所以Eureka也支持将非java语言实现的服务纳入到Eureka服务治理体系中来,只需要其他语言平台自己实现Eureka的客户端程序。目前.Net平台的Steeltoe、Node.js的eureka-js-client等都已经实现了各自平台的Ereka客户端组件。
全栈程序员站长
2022/08/18
4450
Spring Cloud Eureka集群
SpringCloud学习1-服务注册与发现(Eureka)
前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能。拖了半年之久的Spring Cloud学习就从今天开始了。中文教材不多,而且大多都是简单的离散的信息,想要找到企业级的一体化解决方案很少。不过,对于入门来说,简单就够了,等到用的时候自然而然的汇总起来。 目标是把springcloud的子项目过一遍。 Component Edgware.SR2 Finchley.M7 Finchley.BUILD-SNAPSHOT
Ryan-Miao
2018/03/14
2.5K0
SpringCloud学习1-服务注册与发现(Eureka)
精读此文后你会感觉之前对微服务核心模块-服务注册中心一无所知
在微服务架构中,帮助开发者快速构建应用的脚手架技术无疑是非常重要的。以Spring Boot为代表的基底技术在继承了Spring框架思想的同时将简洁便利、约定优于配置、开箱即用等特性进一步发扬光大。然而仅仅依靠Spring Boot还不足以支撑微服务架构应对服务高可用、服务动态配置、服务高可扩展、服务负载均衡、服务容错与隔离等非功能需求,我们还需要相关基础设施提供服务治理及管控能力。
愿天堂没有BUG
2022/10/28
5850
精读此文后你会感觉之前对微服务核心模块-服务注册中心一无所知
springcloud学习手册-Eureka常见问题总结
导读 | Eureka常见问题总结 一、配置方法问题汇总 1.1. Eureka Environment的配置: eureka.environment: 字符串 配置环境名称,可以在appliacti
程序源代码
2018/03/09
3.5K0
springcloud学习手册-Eureka常见问题总结
相关推荐
【一起学源码-微服务】Nexflix Eureka 源码八:EurekaClient注册表抓取
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档