##序 最近一口气发布好几个服务,涉及大约9个实例同时更新,而总共有16个服务实例注册,出现了eureka开启自我保护模式,过了好几分钟还没有恢复。

##分析 设定的eureka.instance.leaseRenewalIntervalInSeconds为10秒。eureka为2个实例,eureka.server.renewalPercentThreshold为0.85,而eureka.server.renewalThresholdUpdateIntervalMs为900000。

按这么算,正常的阈值为27,而当9个服务重启,则瞬间注册的实例为16+9=25,那么此时阈值就更新为42,而启动的时候,旧的9个实例相续关闭,而新的9个实例相续还没有启动起来,那么实际每分钟能发送心跳的数为7*6=42.

##是否开启自我保护 eureka-core-1.4.12-sources.jar!/com/netflix/eureka/registry/PeerAwareInstanceRegistryImpl.java

@Override

public boolean isLeaseExpirationEnabled() {

if (!isSelfPreservationModeEnabled()) {

// The self preservation mode is disabled, hence allowing the instances to expire.

return true;

}

return numberOfRenewsPerMinThreshold > 0 && getNumOfRenewsInLastMin() > numberOfRenewsPerMinThreshold;

}

最近1分钟收到的心跳数没有大于阈值,那么这个时候,就开启自我保护了。

##小结 这个有点类似惊群问题(thundering herd):

故障后的服务恢复上线后,如果有大量其他服务正在同一个重试窗口内重试,此时很容易给系统造成巨大压力。这种情况也叫惊群效应(Thundering herd),使用随机化的重试窗口可轻松避免这种问题。如果基础架构没有实施断路开关,建议将随机化重试窗口与指数退避(Exponential backoff)配合使用以便让请求进一步分散。

同理,对于使用eureka作为服务发现的应用来说,在部署生产的要十分小心,要么每次部署的实例不要太多,要么修改eureka的相关参数,比如renewalPercentThreshold或者renewalThresholdUpdateIntervalMs。

想获取最新资讯,请关注微信公众号

java 惊群效应,eureka的惊群效应相关推荐

  1. 什么是惊群,如何有效避免惊群?

    前言 因为项目涉及到 Nginx 一些公共模块的使用,而且也想对惊群效应有个深入的了解,在整理了网上资料以及实践后,记录成文章以便大家复习巩固. 结论 不管还是多进程还是多线程,都存在惊群效应,本篇文 ...

  2. SpringCloud创建Eureka模块集群

    1.说明 本文详细介绍Spring Cloud创建Eureka模块集群的方法, 基于已经创建好的Spring Cloud Eureka Server模块, 请参考SpringCloud创建Eureka ...

  3. Eureka Server 集群

    Eureka Server 集群建立的步骤相对简单, 1.需要修改application.yml配置文件 spring:application:name: eureka-server--- sprin ...

  4. SpringCloud的入门学习之Netflix-eureka(Eureka的集群版搭建)

    1.Eureka单机版的话,可能会出现单点故障,所以要保障Eureka的高可用,那么可以进行搭建Eureka的集群版. 高可用的Eureka的注册中心,将注册中心服务部署到多台物理节点上,形成一个集群 ...

  5. 【修真院JAVA小课堂】redis缓存集群简单介绍

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,redis缓存集群简单介绍. 1.背景介绍 redis是一个key-value存储系统.和 ...

  6. 配置 Eureka Server 集群

    简介 为了使 Eureka Server 实现高可用,我们需要为它配置集群.这样当有一台 Eureka Server 有故障时,集群中的其他 Server 可以进行代替.Eureka 集群之中的 No ...

  7. java及大数据程微信交流群

    java及大数据程微信交流群,欢迎准java及大数据行业人员加入 微信群,请扫描二维码加入 本人在北京,不限java行业交流,大数据,python,go语言也欢迎加入. 杜绝假冒程序员加入,精兵简政 ...

  8. Java第十四课——相声和群口相声

    Java第十四课--相声和群口相声 Java第十四课--相声和群口相声 一.聊天界面优化 二.增加发送内容的样式 三.群聊雏形 相声,我们知道有一个逗哏一个捧哏,也就是一唱一和,也就相当于双向的交流. ...

  9. Eureka Server集群数据同步

    一.数据同步 Eureka Server之间会互相进行注册,构建Eureka Server集群,不同Eureka Server之间会进行服务同步,用来保证服务信息的一致性.当服务提供者发送注册请求到一 ...

最新文章

  1. pytorch 调用forward 的具体流程
  2. 图神经网络从入门到入门
  3. 时间到,考试结束。请同学们交卷......
  4. 图解CSS的padding,margin,border属性
  5. Docker安装启动influxDB数据库及建库查询基本操作
  6. 深度学习:tensorflow 的整体实现,numpy实现深度学习(三)
  7. printstream_Java PrintStream close()方法与示例
  8. 轻松使用终端开启macOS系统的隐藏功能,小白都能看得懂
  9. Spring boot(6)---在Eclipse中搭建Spring boot 项目
  10. python万年历时钟_python实现万年历类calendar
  11. vscode配置C++ CMake项目
  12. 伪随机数与采样(sampling)
  13. 软件开发工作过程中的一些总结
  14. ThinkPad SL400 改装Win2003方法以及驱动下载列表(适用于SL500)
  15. 【Excel_007】利用excel进行线性规划求解
  16. 高斯公式积分matlab,数值分析 高斯—勒让德积分公式
  17. 如何在PDF中修改内容?这个方法免费编辑
  18. Metrics 入门教程
  19. 使用命令行操作Windows防火墙
  20. exchange外网访问和证书配置

热门文章

  1. 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践
  2. LoadRunner接口工作总结
  3. web项目使用配置web.xml实现重定向
  4. linux 上 Mysql 快速链接 去掉DNS解析
  5. WCF元数据交互及其序列化
  6. TFS的站点中无法找到Report服务器
  7. think php上传图片,基于ThinkPHP5.0实现图片上传插件
  8. 用户输入的数是否为合数php,php怎么判断一个数是不是素数?
  9. SqlServer的分割函数
  10. Java经典算法50道题