当我们的服务因某种原因(内存溢出,网络故障等)而不能正常工作时,服务注册中心并未收到服务下线的请求。相当于服务提供者的“服务续约”操作,服务注册中心在启动时会创建一个定时任务,默认每隔一段时间将当前清单中超时没有续约的服务剔除,这个操作称之为失效剔除
当服务未按时进行续约时,Eureka会统计服务实力最近15分钟续约的比例是否低于85%。在生产环境下,因为网络延迟等原因,心跳失败实例比例很可能会超标,但此时就把服务剔除列表并不妥当,因为服务可能没有宕机。Eureka在这段时间内不会剔除任何服务实例,直到网络恢复正常。生产环境下这很有效,保证了大多数服务依然可用,不过也有可能获取到失败的服务实例,因此服务调用者必须做好服务的失败容错。
eureka: server: enable-self-preservation: false #关闭自我保护模式(缺省为打开) 复制代码