本文基于SpringCloud-Dalston.SR5

自我保护机制

关闭自我保护机制(默认是打开的):eureka.server.enable-self-preservation=false

自我保护机制:默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。

Eureka通过“自我保护模式”来解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。

综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。

但是,在我们实际生产中,我们云环境同一个Region下不会发生大规模网络分区状况,所以没有启用自我保护。

相关参数:eureka.server.renewalPercentThreshold = 0.85

整体逻辑

在每一个服务实例注册时:

expectedNumberOfRenewsPerMin += 2
numberOfRenewsPerMinThreshold = RenewalPercentThreshold*numberOfRenewsPerMinThreshold

无论你设置心跳时间是多少,expectedNumberOfRenewsPerMin都是+2(默认心跳时间是30s,每分钟有60s,所以+2,但是没有根据真正的心跳时间修改,应该算是个缺陷

在收到心跳时:

renewsLastMin.increment()

renewsLastMin<numberOfRenewsPerMinThreshold,就会触发自我保护,不会失效过期服务

Spring Cloud Eureka 全解 (5) - 自我保护机制相关推荐

  1. Spring Cloud Ribbon 全解 (1) - 总览篇

    本文基于SpringCloud-Dalston.SR5 Ribbon是一个客户端负载均衡解决方案,简单来说,就是从Eureka获取可用服务实例列表,然后将请求根据某种策略发到这些实例上面执行 What ...

  2. Spring Cloud Ribbon 全解 (4) - 基本组件实现源码(2)

    本文基于SpringCloud-Dalston.SR5 我们继续逐个分析 所有Ribbon负载均衡器需要实现的接口IClient 服务实例列表维护机制实现的接口ServerList 负载均衡数据记录L ...

  3. Spring Cloud Eureka 自我保护机制

    Spring Cloud Eureka 自我保护机制 Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这 ...

  4. Spring Cloud Eureka 入门 (三)服务消费者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "真正的进步 ...

  5. Spring Cloud Eureka 入门 (二)服务提供者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "优秀不是过 ...

  6. 【SpringClould】Spring Cloud Eureka源码分析

    文章目录 1.概述 1.1 Eureka的一些概念 2.源码分析 2.1 Eureka Server源码 2.1.1 `@EnableEurekaServer`注解 2.1.2 EurekaServe ...

  7. spring cloud Eureka 之配置信息

    转载来源:http://blog.51cto.com/881206524/2117014 spring cloud Eureka 之配置信息 Eureka instance 一个服务,如:订单系统,会 ...

  8. 技术-2022-05-《Spring cloud Alibaba全解》阅读笔记

    技术-2022-05-<Spring cloud Alibaba全解> 创建时间: 2022/5/22 15:21 更新时间: 2023/2/17 8:52 作者: HelloXF 第一章 ...

  9. Spring Cloud Eureka(四):Eureka 配置参数说明

    Eureka Client 配置项(eureka.client.*) org.springframework.cloud.netflix.eureka.EurekaClientConfigBean 参 ...

  10. Spring Cloud原理详解

    概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...

最新文章

  1. git 下载 安装
  2. Netty入门系列(1) --使用Netty搭建服务端和客户端
  3. 联想计算机BIOS开启Intel-vx,如何在计算机BIOS或UEFI固件中启用Intel VT-x | MOS86
  4. 【ArcGIS遇上Python】ArcGIS批量处理栅格影像(NDVI)归一化完整案例代码
  5. 电子商务应用课程知识整理 第五章-搜索引擎优化(SEO)
  6. 如何使用JavaScript中的工厂函数构建可靠的对象
  7. 蓝桥杯 2017 国赛B组C/C++【对局匹配】
  8. python删除mysql数据库_python 删除mysql数据库
  9. corosync+openais+pacemaker+web
  10. ZOJ3805Machine(二叉树左右子树变换)
  11. trie树 Codeforces Round #367 D Vasiliy's Multiset
  12. 为什么都建议学java而不是python-都已经掌握了Java,为什么我们还要学Python?
  13. linux中crontab的用法
  14. 关于 Windows6.1-KB2999226-x64.msu 此更新不适用你的计算机解决办法
  15. linux系统下怎么测试网口通不通,linux udp端口测试_linux udp端口测试_linux测试端口通不通...
  16. 使用短信接口进行通知
  17. 搜索引擎算法研究(一)
  18. 主板南北桥芯片都起什么作用
  19. 泰克TDS3054B示波器技术指标
  20. magento-onestep-checkout-remove-payment-method-step

热门文章

  1. 7.JUC 三大辅助类
  2. 六度分隔,邓巴数和幂律如何主宰我们的社交网络
  3. 安装SQL SERVER 2005后,没有SSMS界面管理的问题
  4. WIN2003序列号
  5. linux下通过inode删除文件
  6. Selenium启动项参数设置
  7. 非常全面的IReport的使用
  8. 区块链技术的应用价值了解下
  9. CF1427F-Boring Card Game【贪心】
  10. 【圆梦名企第三季】4月12日软件业“人才留湘 引才入湘”专项行动