文档章节

Spring Cloud Eureka 自我保护机制实战分析

Java技术栈
 Java技术栈
发布于 05/27 13:58
字数 838
阅读 21
收藏 0

前些天栈长在Java技术栈微信公众号分享过 Spring Cloud Eureka 的系列文章:

其中,可能大家关于自我机制的具体保护逻辑还不是特别清楚,今天栈长就具体分析和实战一下,自我保护机制到底是怎么工作的。

现在我们把保护机制开启:

关注右上角的两个重要参数:

参数说明
Renews thresholdEureka Server 期望每分钟收到客户端实例的总心跳数
Renews (last min)Eureka Server 最后一分钟收到的总心跳数

我这里显示的数值如下:

Renews threshold	6
Renews (last min)	8

这个 6 和 8 分别是怎么算出来的?

先来看这两个参数的默认设置,摘自《Spring Cloud Eureka 常用配置详解》一文:

eureka.server.renewal-percent-threshold: 表示 Eureka Server 开启自我保护的系数,默认:0.85。

eureka.instance.lease-renewal-interval-in-seconds: 表示 Eureka Client 向 Eureka Server 发送心跳的频率(默认 30 秒),如果在 lease-expiration-duration-in-seconds 指定的时间内未收到心跳,则移除该实例。

这里有 4 个注册实例,保护系数:0.85,心跳频率:30秒(每分钟两次),计算公式如下:

Renews threshold = 4 * 2 * 0.85 = 6.8(取整为:6)
Renews (last min) = 4 * 2 = 8

现在删除一个配置中心实例测试一下:

出现警告:

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 Server 已经进行保护模式了,并且我删除的那个实例并不会从注册列表中移除,保护机制生效成功。

由此可知:Eureka Server 在一分钟内如果没有收到 6 个以上的心跳,即:Renews threshold >= Renews (last min),如果保护机制已开启的情况下,则会开启保护机制。

为什么移除一个实例后,Renews threshold 还是 6 呢,算出来应该是 5,这是因为 Eureka Server 还没刷新这个值,默认 15 分钟刷新一次,可以通过设计以下值进行调整:

eureka.server.renewal-threshold-update-interval-ms=900000

了解了心跳策略和保护机制后,对注册中心的日常维护就会有很多帮助。

好了,今天的分享就到这里了,建议转发收藏,不再迷路。

后续会分享更多 Eureka 高级玩法,栈长正在拼命撰写中……关注Java技术栈微信公众号可获取及时推送。在公众号后台回复:cloud,获取栈长整理的更多的 Spring Cloud 教程,都是实战干货,以下仅为部分预览。

  • Spring Cloud 配置中心高可用搭建
  • Spring Cloud 多版本如何选择
  • Spring Cloud 是什么,和 Dubbo 对比
  • Spring Cloud 注册中心高可用搭建
  • Spring Cloud Eureka 自我保护机制
  • ……

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "cloud" 可获取更多 Spring Cloud 教程,转载请原样保留本信息。

© 著作权归作者所有

Java技术栈
粉丝 172
博文 164
码字总数 144636
作品 0
深圳
架构师
私信 提问
注册中心 Eureka 源码解析 —— 应用实例注册发现 (四)之自我保护机制

摘要: 原创出处 http://www.iocoder.cn/Eureka/instance-registry-self-preservation/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 Eureka 1.8.X 版本 1. 概述 2. 定义 3. 实现 3....

芋道源码
2018/05/04
0
0
Spring Cloud Eureka 常用配置详解,建议收藏!

前几天,栈长分享了 《Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!》,今天来分享下 Spring Cloud Eureka 常用的一些参数配置及说明。 Spring Boot 的配置参考Java技术栈微信...

Java技术栈
04/24
0
0
Spring Cloud Eureka 你还在让它裸奔吗??

前些天栈长在微信公众号Java技术栈分享了 Spring Cloud Eureka 最新版 实现注册中心的实战教程:Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!,成功进入 Eureka 控制台页面。 ...

Java技术栈
04/22
0
0
理解Eureka的自我保护模式

本文我们来探讨Eureka的自我保护模式。自我保护模式是Eureka的重要特性。进入自我保护模式最直观的体现,是Eureka Server首页输出的警告,如图4-10所示。 图4-10 Eureka Server自我保护模式界...

eacdy0000
2017/10/16
0
0
Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

Spring Cloud 的注册中心可以由 Eureka、Consul、Zookeeper、ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netflix 的 Eureka 做了二次封装,完成分布式服务中服...

Java技术栈
04/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Netdata:轻量级linux服务器的性能监控工具

https://github.com/netdata/netdata/ yum install zlib-devel gcc make git autoconf autogen guile-devel automake pkgconfig -y yum install libuuid-devel zlib-devel -y wget https://g......

perofu
13分钟前
4
0
java画图工具来添加水印

用Java代码给图片加水印 不多哔哔,直接上代码: /** * @param srcImgFile 原图片文件对象 * @param outFile 输出图片文件对象 * @param waterMarkConte...

嘻嘻哈哈的忧郁
15分钟前
2
0
支付宝开源非侵入式 Android 自动化测试工具 Soloπ

前言 近年来,随着移动互联网的蓬勃发展,移动测试技术也取得了长足的进步,从早期基于测试脚本的单机自动化,到录制回放、图像识别、云测平台等测试技术贴合实际业务需求深度应用和创新,测...

shzwork
17分钟前
4
0
p3d分红逻辑学习

每次p3d余额变动,就会计算profitPerShare: profitPerShare_ += (_dividends * magnitude / (tokenSupply_)); 我的分红余额: (profitPerShare * myTokenBalanceLedger) - myPayouts 举栗子......

wmzsonic
21分钟前
5
0
CentOS7救援模式

问题 很久没有使用的一台虚拟机,忘记了root密码,这里使用救援模式,对root密码重设密码。 步骤 关机,重新开机,选中对应对版本,按“e”: 按“e” 找到“linux16”行 替代"or"为“rw in...

亚林瓜子
24分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部