相关疑难解决方法(0)

了解Spring Cloud Eureka Server自我保护和更新阈值

我是开发微服务的新手,虽然我已经研究了一段时间,阅读了Spring的文档和Netflix.

我已经在Github上开始了一个简单的项目.它基本上是Eureka服务器(阿基米德)和三个Eureka客户端微服务(一个公共API和两个私有).查看github的自述文件以获取详细说明.

关键是当一切都在运行时,我希望如果其中一个私有微服务被杀死,Eureka服务器会实现并从注册表中删除它.

在Stackoverflow上发现了这个问题,解决方案通过enableSelfPreservation:false在Eureka Server配置中使用.一段时间后执行此操作,被杀死的服务会按预期消失.

但是我可以看到以下消息:

自保护模式已关闭.在网络/其他问题的情况下,可能无法保护实例.

1.自我保护的目的是什么?该文件指出,对"客户端进行自我保护可以获得不再存在的实例".那么什么时候打开/关闭它是否明智?

此外,启用自我保护后,您可能会在Eureka Server控制台警告中收到一条未完成的消息:

紧急!当EUREKA不是时,EUREKA可能会不正当地提出申请.更新的数量超过了阈值,并且这些实际情况并未到期,只是为了安全起见.

现在,继续使用Spring Eureka控制台.

Lease expiration enabled    true/false
Renews threshold    5
Renews (last min)   4
Run Code Online (Sandbox Code Playgroud)

我遇到了一个奇怪的阈值计数行为:当我单独启动Eureka Server时,阈值为1.

2.我有一个Eureka服务器并配置registerWithEureka: false为防止它在另一台服务器上注册.那么,为什么它会显示在阈值计数中?

3.对于每个客户端,我开始阈值计数增加+2.我想这是因为他们每分钟发送2条续订消息,对不对?

4. Eureka服务器永远不会发送续订,因此最后一次更新时间始终低于阈值.这是正常的吗?

renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
Run Code Online (Sandbox Code Playgroud)

服务器cfg:

server:
  port: ${PORT:8761}

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enableSelfPreservation: false
#   waitTimeInMsWhenSyncEmpty: 0 …
Run Code Online (Sandbox Code Playgroud)

spring spring-cloud netflix-eureka

76
推荐指数
2
解决办法
4万
查看次数

标签 统计

netflix-eureka ×1

spring ×1

spring-cloud ×1