SpringCloud(四)Eureka自我保护机制

Eureka自我保护机制

  • 默认情况下,EurekaClient会定时向EurekaServer端发送心跳,如果EurekaServer在一定时间内没有收到EurekaClient发送的心跳,便会把该实例从注册服务列表中剔除(默认是90秒),但是在短时间内丢失大量的实例心跳,这时候EurekaServer会开启自我保护机制,Eureka不会踢出该服务。
  • 自我保护模式可以让集群更加健壮,但是我们在开发测试阶段,需要频繁地重启发布,如果触发了保护机制,则旧的服务实例没有被删除,这时请求有可能跑到旧的实例中,而该实例已经关闭了,这就导致请求错误,影响开发测试

在这里插入图片描述

  • 图中我们可以看到 shopping-member做了集群有两个节点
  • Renews threshold:Eureka Server 期望每分钟收到客户端实例续约的总数。
  • Renews (last min):Eureka Server 最后 1 分钟收到客户端实例续约的总数。

当后者(最后一分钟收到的心跳数)小于前者(心跳阈值)的时候,触发保护机制,会出现红色的警告
在这里插入图片描述

紧急!EUREKA可能错误地声明实例已经启动,而实际上它们并没有。续订低于阈值,因此不会为了安全而终止实例

关闭自我保护机制就会出现图一中的提示

THE SELF PRESERVATION MODE IS TURNED OFF.THIS MAY NOT PROTECT INSTANCE EXPIRY IN CASE OF NETWORK/OTHER PROBLEMS.

  • 自我保存模式是关闭的。当网络或其他问题发生时,它可能无法保护实例过期。

关闭服务保护机制

  • 在开发中因为会频繁重启服务,所以建议关闭自我保护机制,但是在生产是不推荐这样做的

配置Eureka服务端

###服务端口号
server:
  port: 8100
###eureka 基本信息配置
spring:
  application:
    name: eureka-server
eureka:
  instance:
    ###注册到eurekaip地址
     hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    ###因为自己是为注册中心,不需要自己注册自己
    register-with-eureka: false
    ###因为自己是为注册中心,不需要检索服务
    fetch-registry: false

  server:
    # 测试时关闭自我保护机制,保证不可用服务及时踢出
    enable-self-preservation: false
    # 每隔两秒检测一次
    eviction-interval-timer-in-ms: 2000

配置Eureka客户端

server:
  port: 9100
spring:
  application:
    name: shopping-member
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8100//eureka
    register-with-eureka: true
    fetch-registry: true

  instance:
    ###Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则)
    lease-renewal-interval-in-seconds: 1
    ####Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己)
    lease-expiration-duration-in-seconds: 2

这样在开发环境中我们就能及时剔除死掉的服务

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值