我是开发微服务的新手,虽然我已经研究了一段时间,阅读了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 云框架。所以我的每个微服务都必须在 Eureka 服务器上注册,所以 Eureka 知道唯一的 id 或应用程序名称。
(1) 我必须在 Eureka 注册多个相同微服务的实例,我该如何实现?微服务部署在 Cloud Foundry 中。
(2) 当所有来自同一个微服务的实例都注册到 Eureka 时,Eureka 如何知道哪些实例是活动的,哪些不是?Eureak 知道的频率以及 Eureka 如何获取这些信息。
spring microservices spring-cloud netflix-eureka spring-cloud-netflix