eureka自我保护模式详解(全网最全)

news/2024/10/24 1:48:46/

1. 什么叫自我保护模式?


        当微服务客户端启动后,会把自身信息注册到Eureka注册中心,以供其他微服务进行调用。一般情况下,当某个服务不可用时(一段时间内没有检测到心跳或者连接超时等),那么Eureka注册中心就会将该服务从可用服务列表中剔除,但是在微服务架构中,因为服务数量众多,可能存在跨机房或者跨区域的情况,因此当某个服务心跳探测失败并不能完全说明其无法正常提供服务而将其剔除,并且服务一旦剔除后,再重新注册将会重新进行负载均衡等等一系列的操作,考虑到性能问题,eureka会将不可用的服务暂时断开,并期望能够在接下来一段时间内接收到心跳信号,而不是直接剔除,同时,新来的请求将不会分发给暂停服务的实例,这就是eureka的保护机制,它保护了因网络等问题造成的短暂的服务不可用的实例,避免频繁注册服务对整个系统造成影响。


2. 什么时候触发自我保护模式

比如你有10个user-service节点注册到eureka-server中,这个时候挂了两台。那么比例就是:(10-2)/10 = 80% 。这个时候就会引发自我保护机制。

3.自我保护模式效果

一旦进入到保护模式,所有的eureka服务都不再被踢出来。

举例:比如你有10个user-service节点注册到eureka-server中,这个时候挂了两台。那么比例就是:(10-2)/10 = 80% 。这个时候就会引发自我保护机制。剩下的8台服务器如果有一台出现网络故障或者其他原因,注册中心超过90秒没有检查到这台故障服务的心跳,不会直接剔除,同时,新来的请求将不会分发给暂停服务的实例,这就是eureka的保护机制。如果你15分钟内一直没有修复,超过15分钟,eureka就启动剔除机制,把坏服务剔除掉,目的就是节约内存空间。

如果觉得85%这个值比较大,可以调低一点使用以下方式:

eureka.server.renewalPercentThreshold=0.49

4.关闭自我保护模式

  • 我们在单机测试的时候很容易满足心跳失败比例在 15 分钟之内低于 85%,这个时候就会触发 Eureka 的保护机制,所以单机状态下不建议开启。们可以使用eureka.server.enable-self-preservation=false来关闭保护机制,这样可以确保注册中心中不可用的实例被及时的剔除(不推荐)。
  • 默认情况下客户端每隔30秒(lease-renewal-interval-in-seconds)客户端会向注册中心发送一次心跳,证明自己还活着。如果超过90秒(lease-expiration-duration-in-seconds)没有收到心跳,EurekaServer就会认为该服务宕机。那么我们定义了eviction-interval-timer-in-ms: 60000,注册中心每60s检查失效服务进行剔除,这三个值在生产环境不要修改,默认即可。
  • 服务端关闭自我保护模式的方式
eureka:instance:#如果超过90秒没有发送心跳,EurekaServer就会认为该服务宕机,会从服务列表中移除,lease-expiration-duration-in-seconds: 90#每隔30秒服务会向注册中心发送一次心跳,证明自己还活着lease-renewal-interval-in-seconds: 30server:# 服务失效剔除时间间隔,默认60秒 eureka服务定时扫描失效的服务,把失效的服务剔除eviction-interval-timer-in-ms: 60000 #关闭自我保护模式(默认是打开的)enable-self-preservation: false

 5.案例

a.  注册中心注册了7台微服务

 b. 关闭一个微服务,等待90秒钟后刷新页面。因为如果超过90秒没有发送心跳,EurekaServer就      会认为该服务宕机。判断是否开启自我保护模式。

    关闭一台发现,没有触发自我保护模式,因为6/7*100%>85%;

 c. 在关闭一台微服务,等待90秒;发现开启了自我保护模式,因为:5/6*100%=83%<85%;心跳续约的比例小于85%


http://www.ppmy.cn/news/58404.html

相关文章

管家婆辉煌Ⅱ 13.32版安装方法

因管家婆辉煌版已经长期不更新&#xff0c;现已经出现蓝屏的问题&#xff0c;故此新开此贴&#xff0c;慢慢更新安装方法。 首先管家婆下载地址&#xff1a;http://www.grasp.com.cn/download.aspx?id116 先安装sql server 2008 下载后&#xff0c;运行安装&#xff0c;请注…

【Java笔试强训 22】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;小易的升…

Microsoft office Word 批注相关问题解决

Microsoft office word 批注相关问题解决 目录 Microsoft office word 批注相关问题解决1.增添并显示批注2.批注显示及取消操作3.更改批注者姓名4.将Microsoft office Word文档中已批注的名字以及缩写修改为自己需要的4.1将Microsoft office Word文档中已批注的名字修改为自己需…

用格林童话教你1分钟清晰JS加密

在许多格林童话中&#xff0c;我们可以看到许多隐藏的玄机和谜题&#xff0c;就像JavaScript代码一样。为了保护您的代码安全&#xff0c;我们可以使用JavaScript混淆加密技术来隐藏代码中的逻辑和关键信息。在本文中&#xff0c;我们将以“灰姑娘”为例&#xff0c;介绍如何使…

Elasticsearch:定制 Elasticsearch 镜像

在很多时候&#xff0c;我们希望定制我们的 Elasticsearch 镜像&#xff0c;比如&#xff0c;我们需要安装一些额外的插件&#xff0c;或者如果我们想要一个带有同义词文件和自定义配置的 Elasticsearch&#xff1f;或者我们需要一些相应的配置等。我们想在每次的 docker 部署中…

微服务和领域驱动

一、微服务 1.1 什么是微服务 微服务就是一些协同工作的小而自治的服务。 关键词&#xff1a; 小而自治 -- 小 “小”这个概念&#xff0c;一方面体现在微服务的内聚性上。 内聚性也可以称之为单一职责原则&#xff1a;“把因相同原因而变化的东西聚合到一起&#xff0c;…

Redis学习——day01

Redis学习基础 Nosql&#xff1a;Redis入门&#xff1a;Redis安装&#xff1a;Windows&#xff1a;Linux安装&#xff1a; Nosql&#xff1a; Nosql Not Only Sql&#xff08;不仅仅Sql&#xff09;NoSQL&#xff0c;泛指非关系型的数据库。随着互联网web2.0网站的兴起&#…

检测是否所有a都在b前面

题目描述 现在给你一个仅由字符 a 和 b 组成的字符串 s 作为输入。你需要编写一个程序来实现字符串中每个 a 都出现在每个 b 之前&#xff0c;如果满足要求&#xff0c;那我们就输出 True &#xff1b;否则&#xff0c;我们就输出 False 。 输入输出格式 输入格式 输入字符 …