Spring Eureka服务器显示续订量少于阈值[重复]

我已经开始开发微服务,尽管我已经进行了一段时间的研究,同时阅读了Spring的文档和Netflix的文档。

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

关键是,当一切都运行时,我希望如果其中一个私有微服务被杀死,Eureka服务器会意识到这一点并将其从注册表中删除。

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

自我保存模式已关闭。在网络/其他问题的情况下,此设置可能无法保护即时实例。

此外,打开自我保存功能后,您可能会在Eureka Server控制台中收到一条警告消息:

紧急!如果不是,EUREKA可能会不正确地提出索赔要求。续订比阈值要少,因此仅出于安全性考虑,实例不会过期。

现在,继续使用Spring Eureka Console。

Lease expiration enabled    true/false

Renews threshold 5

Renews (last min) 4

我遇到了阈值计数的怪异行为:当我单独启动Eureka Server时,阈值为1。

renew threshold 5

rewnews last min: (client1) +2 + (client2) +2 -> 4

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

spring:

application:

name: random-image-microservice

server:

port: 9999

eureka:

client:

serviceUrl:

defaultZone: http://localhost:8761/eureka/

healthcheck:

enabled: true

回答:

我遇到的问题与@codependent遇到的问题相同,我在Google上搜索了很多并做了一些实验,在这里我来贡献一些关于Eureka服务器和实例如何工作的知识。

每个实例都需要以每30秒1次的频率将其租约续签到Eureka

Server,可以在中定义eureka.instance.leaseRenewalIntervalInSeconds

:表示在最后一分钟从尤里卡实例收到的更新数

:Eureka服务器期望每分钟从Eureka实例收到的续订。

例如,如果registerWithEureka将if 设置为

eureka.instance.leaseRenewalIntervalInSeconds则将其设置为30并运行2个Eureka实例。两个Eureka实例将每分钟向Eureka服务器发送

续订,Eureka服务器的最小阈值为 (用代码编写),因此该阈值为

(此数字将乘以一个因子eureka.server.renewalPercentThreshold,稍后将进行讨论)。

:如果“ 小于“ ,则将激活自保存模式。

因此在上例中,由于阈值为5,所以激活了SELF PRESERVATION MODE,但是Eureka服务器每分钟只能接收4次更新。

  1. 问题1:

“自我保护模式”旨在避免不良的网络连接失败。Eureka实例A和B之间的连通性很好,但是B由于连接中断而未能在短时间内将其租约续签到Eureka服务器,此时Eureka服务器不能简单地将实例B踢出去。尽管B可用,但A不会从Eureka服务器获得可用的注册服务。因此,这是自保存模式的目的,最好将其打开。

  1. 问题2:

最小阈值1写入代码中。registerWithEureka设置为false,因此将没有Eureka实例寄存器,阈值为1。

在生产环境中,通常我们部署两个Eureka服务器,registerWithEureka并将其设置为true。因此,阈值将为2,Eureka服务器将每分钟两次向其续订租约,因此RENEWALS

ARE LESSER THAN THRESHOLD不会有问题。

  1. 问题3:

是的,你是对的。eureka.instance.leaseRenewalIntervalInSeconds定义每分钟发送到服务器的续订数量,但是它将乘以上述系数eureka.server.renewalPercentThreshold,默认值为0.85。

  1. 问题4:

是的,这很正常,因为阈值初始值设置为1。因此,如果registerWithEureka将其设置为false,则续订始终低于阈值。

我对此有两个建议:

  1. 部署两个Eureka服务器并启用registerWithEureka
  2. 如果只想在演示/开发环境中进行部署,则可以将其设置eureka.server.renewalPercentThreshold为0.49,因此,当单独启动Eureka服务器时,阈值将为0。

以上是 Spring Eureka服务器显示续订量少于阈值[重复] 的全部内容, 来源链接: utcz.com/qa/423196.html

回到顶部