概述:谈到Eureka的自我保护机制时,我们需要知道其中一些客户端和服务端的概念。比如客户端的心跳发送时间间隔、服务续约时间;服务端的服务剔除时间间隔、阈值更新时间间隔。

客户端心跳发送时间间隔(eureka.instance.lease-renewal-interval-in-seconds):当Eureka客户端服务注册到服务端后,客户端会每固定间隔时间会向Eureka服务端发送心跳请求,用来通知Eureka服务端自己服务在正常运行中。

客户端服务续约时间(eureka.instance.lease-expiration-duration-in-seconds):当客户点最后一次发送心跳后,在该服务续约时间内如果没有再向服务端发送心跳链接,则服务器端可以对该服务进行剔除操作。

服务端的服务剔除时间间隔(eureka.server.eviction-interval-timer-in-ms):服务器在每固定间隔时间内会对客户端发送心跳情况进行检查,如果发现存在如上续约时间内,没有再次发送心跳链接的服务端,会对其在服务端内存中进行剔除操作。

阈值更新时间间隔(renewalPercentThreshold) : 服务器更新单位时间内接受心跳数与上次单位时间内的心跳总数的阈值因子值(系统默认配置的因子值为0.85)的间隔时间,默认为15分钟。(本次单位时间接受总数/上次单位时间接受心跳总数)

如上的默认配置时间都可以在org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean 源码中查看。

在了解了上述概念之后,正常情况下Eureka服务端也会按上面情况去运行,当个别客户端在续约时间未发送心跳,在服务端间隔时间内被扫描出来的客户端将会被剔除。但是如果在上面阈值更新时间间隔内统计出新的阈值因子比默认配置的0.85大的时候,Eureka就认为本台EurekaServer节点可能网络出现故障,当做自身问题进行做出处理,EurekaServer在该场景下将不会在去剔除客户端服务信息,对自己机制做出调整,此过程则为Eureka的自我保护机制。(当然也存在可能真的是Eureka客户端服务节点真的都挂了,调用将会出现失败情况)

一、在Eureka控制台页面配置展示服务端IP信息

Eureka客户端实例id: eureka.instance.instance-id,在没有配置的情况下在Eureka控制台默认展示为“服务器名:应用名称:端口”,我们可以通过SpringBoot配置文件对该展示项进行配置调整:我们修改为 ${spring.cloud.client.ip-address}:${server.port} 用ip和端口进行展示。配置文件如下:

server:port: 80 #服务端口
spring:application:name: cloud-order-service #服务名称
eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://eureka1.com:7001/eureka/instance:prefer-ip-address: true #使用ip进行注册instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注册中心注册服务IDlease-renewal-interval-in-seconds: 5 #发送心跳间隔时间 秒lease-expiration-duration-in-seconds: 10 # 服务续约时间 10秒内没有发送心跳(宕机)

配置前和配置后访问Eureka的控制台页面如下:

二、配置Eureka客户端心跳连接时间、服务续约时间配置

在EurekaClient客户端配置文件中通过 eureka.instance.lease-renewal-interval-in-seconds 配置项进行配置心跳间隔时间。默认30秒

在EurekaClient客户端配置文件中通过 eureka.instance.lease-expiration-duration-in-seconds 配置项进行配置服务续约时间。默认 90秒

eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://eureka1.com:7001/eureka/instance:prefer-ip-address: true #使用ip进行注册instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注册中心注册服务IDlease-renewal-interval-in-seconds: 5 #发送心跳间隔时间 秒lease-expiration-duration-in-seconds: 10 # 服务续约时间 10秒内没有发送心跳(宕机)

三、Eureka服务端关闭自我保护以及配置服务剔除时间间隔

在EurekaServer服务端配置文件中通过 eureka.server.enable-self-preservation 配置项进行配置开启关闭Eureka自我保护机制。默认ture

在EurekaServer服务端配置文件中通过 eureka.server.eviction-interval-timer-in-ms 配置项进行配置服务剔除扫描间隔时间。默认 15分钟

eureka:instance:hostname: eureka1.comclient:register-with-eureka: false #是否将自己注册到注册中心上fetch-registry: false #是否从Eureka上获取注册信息service-url:defaultZone: http://eureka1.com:7001/eureka/server:eviction-interval-timer-in-ms: 20000 #服务剔除间隔enable-self-preservation: false #关闭自我保护机制

SpringCloud Eureka自我保护机制介绍及配置相关推荐

  1. SpringCloud Eureka自我保护机制

    转载自 SpringCloud Eureka自我保护机制 自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他 ...

  2. eureka自我保护时间_Spring Cloud Eureka 自我保护机制

    自我保护出现 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...

  3. eureka自我保护时间_SpringCloud Eureka自我保护机制

    自我保护背景 首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行. 默认情况下,如果Eureka Serve ...

  4. Eureka自我保护机制

    本文来说下Eureka自我保护机制 文章目录 为什么要有自我保护机制 重要变量 变量更新 Eureka-Server初始化 cancle主动下线 客户端注册 定时器 自我保护机制 开启 解除 本文小结 ...

  5. Spring Cloud Eureka 自我保护机制

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

  6. Spring Cloud Eureka 自我保护机制(EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY)

    在本地启动一个Euraka-Server服务(服务注册中心)和一个Euraka-Client服务(服务注册者-应用服务)两个服务.过了一会儿后,在Euraka-Server界面显示:EMERGENCY ...

  7. eureka:自我保护机制_对自我怀疑的开发人员:您足够好吗?

    eureka:自我保护机制 by Sihui Huang 黄思慧 对自我怀疑的开发人员:您足够好吗? (To self-doubting developers: are you good enough ...

  8. eureka自我保护机制配置关闭

    问题分析 eureka的自我保护机制指的是,当网络发生问题导致服务访问失败时,eureka注册中心不会马上把应用剔除,继续保留一段时间.但这样对我们实际开发来说,需要频繁重启应用的时候,不方便测试,需 ...

  9. 天荒地老修仙功-第六部第二篇:Spring Cloud Eureka自我保护机制

    Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期,但是在保护期内如果 ...

最新文章

  1. 新闻网大数据实时分析可视化系统项目——5、Hadoop2.X HA架构与部署
  2. PHP SSL certificate: unable to get local issuer certificate的解决办法
  3. 微服务实践分享(4)配置中心
  4. 使用Nomad构建弹性基础架构:计划和自我修复
  5. React Native实现一个带筛选功能的搜房列表(2)
  6. pbc是什么材料_职道漫谈 | 华为的绩效跟你们公司的绩效,有什么区别?
  7. 上周热点回顾(7.9-7.15)
  8. 深入理解InnoDB(2)—页的存储结构
  9. 微软语音识别技术屡破世界纪录的秘密都在这里了
  10. 经典Java入门视频教程免费下载
  11. 阿里云手机号短信设置
  12. Servlet 容器
  13. Greenplum 6 磁盘配额管理工具“Diskquota”
  14. Homebrew完美卸载软件及其依赖包
  15. 爬去动态网站今日头条图片集
  16. 大厂Java面试过程中如何介绍自己的项目经历?
  17. 什么是数位板? 数位板,又名绘图板、绘画板、手绘板等等,是计算机输入设备的一种,通常是由一块板子和一支压感笔组成,它和手写板等作为非常规的输入产品相类似,都针对一定的使用群体。 与手写板所不同的是
  18. Cookie和Post模拟登陆
  19. Mac将应用程序及其数据移到外接硬盘的步骤 #替身 #软链接
  20. 使用Busybox制作根文件系统

热门文章

  1. 把一个sql where表达式转化为一个二叉树
  2. [ZT]firefox实现ie的方法和属性)
  3. Struts2之struts-2.3.20开发环境的搭建并实现第一个Hello World小应用
  4. Jedis的使用及SpringBoot整合Redis
  5. Log4j2日志框架集成Slf4j日志门面
  6. Dubbo新手入门实例HelloWorld(zookeeper)
  7. ASP.NET Core 基于SignalR实时通讯的前后端分离技术
  8. alook浏览器_alook浏览器下载-Alook浏览器iOS版下载 苹果版v10.8-PC6苹果网
  9. 解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)
  10. Expression Design与Blend制作滚动的小球动画教程