我是开发微服务的新手,虽然我已经研究了一段时间,阅读了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)