今天学习了spring cloud 中的注册中心——eureka,作为微服务的注册中心,eureka需要对服务的可用状态进行一个体现。直观的体现方式就是在eureka启动后的ui界面上可以看到服务的是否可用。
在某一个时刻下,如果后端某一个服务不可用了,eureka不会立即将其从ui界面上删除。而是等待一段时间后再删除,在默认情况下,这个时间是90s。在90s内,eureka会有一个心跳机制来判断服务是否健康。每相隔30s会发送一个心跳信号。如果超过3次,也就是90s未收到信号,则判定发送心跳信号的服务不可用了,这时候才会将服务删除。
但是,这里有一个问题。eureka接收心跳信号,信号也是通过网络传输的。假如,不是服务失效,而是网络状态不好。导致eureka服务器接收不到信号,那是否会因为网络的问题造成eureka误判了服务的可用情况,导致服务被误删了呢?
考虑到这种情况,eureka设置了阈值。当15分钟之内,若挂掉的服务超过了15%。(也就是eureka突然对项目服务中的15%失去了心跳信号)那eureka会判断,这些15%的服务挂掉的原因,不是由于服务真的挂掉了,而是网络不好,心跳信号传达不到。然后eureka不会删除这些服务。
例子:三年一班今天老师上课突然发现了15%的学生(服务)都没来上课(失效)。老师进行判断,这15%的学生有可能是堵车(网络拥堵)了,不是故意迟到的。因为平常不会突然大量的学生同时迟到。老师不对他们追究责任(不删除服务)。
标签:服务,浅谈,删除,eureka,15%,信号,心跳,机制 From: https://www.cnblogs.com/xjhblogs/p/17673589.html