我有一个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个实例)。现在当一个新的客户端注册时,它会向两个对等端发送节拍还是只发送一个节点?在其中一个,其他同行如何知道?
答案 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,则表示续订是从对等服务器节点发送的。如果为假,则表示实例本身已收到续订。