尤里卡更新门槛&续约(最后一分钟)

时间:2018-01-25 07:33:28

标签: spring spring-cloud netflix-eureka spring-cloud-netflix

我有一个Eureka Server A和两个客户端实例B(Client3)和C(Client4)

我从Eureka Server获得了日志,如下所示:

2018-01-25 12:56:27.828  INFO 7145 --- [nio-8765-exec-2] c.n.e.registry.AbstractInstanceRegistry  : Registered instance CLIENT3/client3:bb488bb73fd313321e393915f746bfe5 with status UP (replication=false)
2018-01-25 12:56:28.417  INFO 7145 --- [nio-8765-exec-3] c.n.e.registry.AbstractInstanceRegistry  : Registered instance CLIENT3/client3:bb488bb73fd313321e393915f746bfe5 with status UP (replication=true)
2018-01-25 12:56:33.028  INFO 7145 --- [nio-8765-exec-3] c.n.e.registry.AbstractInstanceRegistry  : Registered instance CLIENT4/client4:9fcbf4ed26162ee12c4c4b85774c39b1 with status UP (replication=false)
2018-01-25 12:56:33.542  INFO 7145 --- [nio-8765-exec-8] c.n.e.registry.AbstractInstanceRegistry  : Registered instance CLIENT4/client4:9fcbf4ed26162ee12c4c4b85774c39b1 with status UP (replication=true)

a)他们是什么意思?我的意思是每个客户出现两次

b)续订门槛:5,续订(最后一分钟):8,为什么续约最后一分钟是8,应该是4?由于只有两个客户端,每个客户端每分钟节拍2次

c)当我启动第3服务D(CLient5)时,更新阈值为6但不是7,为什么会这样?

d)Eureka Peers如何将信息增量信息相互传递?例如,目前有两个eureka服务器(对等)和两个客户端(每个1个实例)。现在当一个新的客户端注册时,它会向两个对等端发送节拍还是只发送一个节点?在其中一个,其他同行如何知道?

1 个答案:

答案 0 :(得分:0)

a)这意味着Eureka正在向自己复制心跳。这很可能是由于配置错误。如果您查看Eureka的仪表板,则您的主机可能位于unavailable-replicas的列表中。要解决此问题,Eureka实例名称必须与defaultZone中使用的主机名相同。因此,对于您的独立Eureka服务器,配置应类似于

eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:8080/eureka/
  instance:
    hostname: localhost

eureka.instance.hostname必须与eureka.client.serviceUrl.defaultZone中的主机名匹配。配置完毕后,unavailable-replicas应该消失。

b):一旦解决了a)的问题,该问题将得到解决,并且应该会收到4次续订。

c)引用解释here

数学原理如下:如果有两个客户端注册到一个 尤里卡实例,每30秒发送一次心跳,该实例 一分钟内应该会收到4次心跳。春天增加了最低 的1到那个(可通过 eureka.instance.registry.expectedNumberOfRenewsPerMin),因此 实例希望每分钟收到5个心跳。然后是 乘以0.85(可通过 eureka.server.renewalPercentThreshold)并四舍五入到下一个 整数,使我们再次回到5。如果有的话 超过15分钟内Eureka收到的5个心跳(可由 eureka.server.renewalThresholdUpdateIntervalMs) 自我保存模式并停止已注册的过期 实例。

因此,在您的情况下,有两个实例:(2 * 2 +1)* 0.85 = 4.25,四舍五入为5。对于三个实例(2 * 3 +1)* 0.85 = 5.95四舍五入为6。

d) Eureka客户端仅将心跳发送到一个服务器实例。该实例将这些心跳传递给其他心跳,使它们保持更新。如果您查看Eureka服务器日志,则可以找到类似这样的日志

InstanceRegistry: renew SERVICEA serverId localhost:serviceA:12345, isReplication {}true

如果isReplication为true,则表示续订是从对等服务器节点发送的。如果为假,则表示实例本身已收到续订。