当前位置:网站首页>Eureka自我保护
Eureka自我保护
2022-07-17 07:23:00 【幻清】
故障现象:
概述
保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。-旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。
如果在Eureka Server的首页看到以下这段提示,则说明Eureka进入 了保护模式:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT.RENEWALS ARE LESSER THAN THRESHOLD AND HENCE thE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE
导致原因:
一句话:某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存。
属于CAP里面的AP分支。
为什么会产生Eureka自我保护机制?
为了防止EurekaClient可以正常运行,但是与EurekaServer网络不通情况下,EurekaServer不会立刻将EurekaClient服务剔除
什么是自我保护模式?
默认情况下,果EurekaServer在一定时间内没有接收到某 个微服务实例的心跳,EurekaServer将会注销该实例 (默认90秒)。但是当网络分区故障发生(延时、卡顿、 拥挤)时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了一因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过 “自我保护模式”来解决这个问题一当EurekaServer节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。
例如

自我保护机制∶默认情况下EurekaClient定时向EurekaServer端发送心跳包
如果Eureka在server端在一定时间内(默认90秒)没有收到EurekaClient发送心跳包,便会直接从服务注册列表中剔除该服务,但是在短时间( 90秒中)内丢失了大量的服务实例心跳,这时候Eurekaserver会开启自我保护机制,不会剔除该服务(该现象可能出现在如果网络不通但是EurekaClient为出现宕机,此时如果换做别的注册中心如果一定时间内没有收到心跳会将剔除该服务,这样就出现了严重失误,因为客户端还能正常发送心跳,只是网络延迟问题,而保护机制是为了解决此问题而产生的)。
在自我保护模式中,Eureka Server会保护服务注册表中的信息,不再注销任何服务实例。
它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例。一句话讲解:好死不如赖活着。
综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留)也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。
如何禁止自我保护:
1、注册中心eureakeServer端7001
Eureka的自我保护机制enable-self-preservation: true默认 是开启的,关闭时只需在注册中心eureakeServer端的application.yml文件中加入
eureka:
server:
#关闭自我保护机制,保证不可用服务被及时踢除
enable-self-preservation: false
#心跳时间10秒
eviction-interval-timer-in-ms: 10000
效果图:
在客户端payment8001的application.yml文件添加
eureka:
instance:
instance-id: payment8001
prefer-ip-address: true
#心跳检测与续约时间
#开发时没置小些,保证服务关闭后注册中心能即使剔除服务
#Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
lease-renewal-interval-in-seconds: 1
#Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
lease-expiration-duration-in-seconds: 2
效果图:
此时只有payment8002.
说明Eureka的自我保护已经关闭了。
注意:
在集群配置情况下,没有服务端和客户端都需要进行这样的配置。
边栏推荐
- The connection between neural network and automatic control
- 【flask入门系列】异常处理
- 警惕!又一起网络钓鱼攻击事件:Uniswap被盗810万美元
- 演示集合注入
- If a number in C language is exactly equal to the sum of its factors, this number is called "perfect". For example, 6=1 + 2 + 3 programming
- 全志V3s学习记录(13)OV2640的使用
- 网传USDT和USDC要做空?带你一探究竟 | Tokenview
- Oi memoirs
- [C # console] - C # console class
- Unity custom sky ball model to prevent it from being cropped
猜你喜欢

美国压力激增,TikTok 更换全球安全主管

The website vulnerability repair service provider analyzes the ultra vires caused by controllable parameters

黑马程序员-软件测试-16阶段3-功能测试-175-198,URL组成介绍,请求内容以及组成说明行功能测试与数据库,url组成扩展说明,客户端与服务器请求与响应,-Fiddler按照以及功能检查确认,

leetcode:287. 寻找重复数【快慢指针板子】

经典通用的Pbootcms花卉网站模板源码,自适应手机端,带后台管理
![Paddleserving服务化部署 tensorrt报错, shape of trt subgraph is [-1,-1,768],](/img/15/5dde91261a44fcfeda4d8436bb8559.png)
Paddleserving服务化部署 tensorrt报错, shape of trt subgraph is [-1,-1,768],

依赖注入方式

写代码遇到Qt相关问题

Redis cluster

Will it be a little late to realize your "wonderful" 360?
随机推荐
[characteristic Engineering]
How to check whether the app has user information and data leakage vulnerabilities
Real case: how to check the soaring usage of CPU after the system goes online?
leetcode:287. 寻找重复数【快慢指针板子】
openpyxl跨工作簿复制sheet页
Redis transaction
No module named ‘yaml‘ 解决办法
5.1 vulnérabilités et précautions en matière de sécurité
Kingbasees can realize any of MySQL by constructing an aggregate function_ Value function.
DP动态规划企业级模板分析(数字三角,上升序列,背包,状态机,压缩DP)
【特征工程】
聊聊分布式锁
How to convert STR in read list to float
Is it necessary to buy pension insurance? What are the pension products suitable for the elderly?
Niuke topic - house raiding 1, house raiding 2
从 B 站崩溃报告看分布式系统的技术栈
Obtain the home location through IP
How to use curl in Jenkins pipeline and process response results
[C# 类和对象]-C# 中的方法以及类和对象编程
ansible自动化运维详解(四)ansible中playbook的编写使用、执行命令及实例演示