我已经开始开发微服务,尽管我已经研究了一段时间,同时阅读了Spring的文档和Netflix的文档。
我已经开始在Github上进行一个简单的项目。它基本上是一个Eureka服务器(Archimedes)和三个Eureka客户端微服务(一个公共API和两个私有)。查看github的自述文件以获取详细描述。
关键是,当一切都运行时,我希望如果某个私有微服务被杀死,Eureka服务器会意识到这一点并将其从注册表中删除。
我在Stackoverflow上发现了这个问题,并且该解决方案通过enableSelfPreservation:false
在Eureka Server配置中使用而得以通过。一段时间后,被取消的服务会按预期消失。
但是我可以看到以下消息:
自我保存模式已关闭。在网络/其他问题的情况下,此设置可能无法保护实例终止。
1.自我保存的目的是什么?该文档指出,通过自我保留,“客户端可以获取不再存在的实例”。那么什么时候建议打开/关闭它呢?
此外,启用自我保存功能后,你可能会在Eureka Server控制台中收到一条警告消息:
紧急!如果不是,EUREKA可能会不正确地提出索赔要求。续订比阈值要少,因此仅出于安全性考虑,实例不会过期。
现在,继续使用Spring Eureka Console。
Lease expiration enabled true/false
Renews threshold 5
Renews (last min) 4
我遇到了阈值计数的怪异行为:当我单独启动Eureka Server时,阈值为1。
2.我有一台Eureka服务器,并且配置registerWithEureka: false为防止它在另一台服务器上注册。那么,为什么它会显示在阈值计数中?
3.对于我启动的每个客户,阈值计数都会增加+2。我猜是因为他们每分钟发送2条更新消息,对吗?
renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
服务器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
客户端1 cfg:
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 设置为false,eureka.instance.leaseRenewalIntervalInSeconds
则将其设置为30并运行2个Eureka实例。两个Eureka实例将每分钟向Eureka服务器发送4个续订,Eureka服务器的最小阈值为1(用代码编写),因此阈值为5(此数字将乘以一个因子eureka.server.renewalPercentThreshold
,稍后将进行讨论)。
自保存模式:如果“ 续订”(最后一个分钟)小于“ 续订”阈值,则将激活自保存模式。
因此在上例中,由于阈值为5,所以激活了SELF PRESERVATION MODE,但是Eureka服务器每分钟只能接收4次更新。
问题1:
“自我保护模式”旨在避免不良的网络连接失败。Eureka实例A和B之间的连通性很好,但是B由于连接中断而在短时间内无法将其租约续订到Eureka服务器,此时Eureka服务器不能简单地将实例B踢出去。尽管B可用,但A不会从Eureka服务器获得可用的注册服务。因此,这是“自我保存模式”的目的,最好将其打开。
问题2:
最小阈值1写入代码中。registerWithEureka
设置为false,因此将没有Eureka实例寄存器,阈值为1。
在生产环境中,通常我们部署两个Eureka服务器,registerWithEureka
并将其设置为true。因此,阈值将为2,Eureka服务器将向其自身续租两次(每分钟两次),因此RENEWALS ARE LESSER THAN THRESHOLD不会有问题。
问题3:
是,你说得对。eureka.instance.leaseRenewalIntervalInSeconds
定义每分钟发送到服务器的续订数量,但是它将乘以上述系数eureka.server.renewalPercentThreshold
,默认值为0.85。
问题4:
是的,这很正常,因为阈值初始值设置为1。因此,如果registerWithEureka
将其设置为false,则续订始终低于阈值。
我对此有两个建议:
registerWithEureka
。eureka.server.renewalPercentThreshold
为0.49,因此,当单独启动Eureka服务器时,阈值将为0。我已经在GitHub上启动了一个简单的项目。它基本上是一个Eureka服务器(阿基米德)和三个Eureka客户端微服务(一个公共API和两个私有API)。查看GitHub的自述文件获得详细描述。 关键是,当一切都在运行时,我希望如果一个私有微服务被杀死,那么Eureka服务器会发现并从注册表中删除它。 我在Stackoverflow上发现了这个问题,通过在Eureka服务器配置中使用解决了这个问题
当我查看注册表仪表板时,当结束时,我会看到以下警告消息: 当我查看代码时,测试始终为true 为什么是默认配置,它似乎怪异,因为它不断地产生一个警告! 如果有谁能给我一个解释。我想我错过了什么…
尤里卡服务器2:
我是Eureka的新手,我从我的Eureka服务器(localhost:8761/)的主页上看到了这些信息。我没有从官方文件中找到任何关于“续费”和“续费门槛”的解释。谁能解释一下这些话吗?谢谢
问题内容: 我已经开始开发微服务,尽管我已经进行了一段时间的研究,同时阅读了Spring的文档和Netflix的文档。 我已经开始在Github上进行一个简单的项目。它基本上是一个Eureka服务器(Archimedes)和三个Eureka客户端微服务(一个公共API和两个私有)。查看github的自述文件以获取详细描述。 关键是,当一切都运行时,我希望如果其中一个私有微服务被杀死,Eureka服
我需要找到我的数据连续几天达到阈值的位置。我正在寻找超过阈值的4个连续观察值。我想返回符合这些标准的系列的第一个观察值的位置。 下面是一个数据集示例: 我想要平均符合标准的日期(平均 在这种情况下,我可以将第一种情况下的< code>TRUE作为答案,但如果第二种、第三种或第四种情况不是< code>TRUE,这将不起作用 我需要条件为的第一个日期: 以及该系列中第一个观察的位置: 我已经找到了相