同一个服务的两个实例如果注册到不同的服务中心实例上,由于服务注册中心之间互相注册为服务,所以服务中心之间会互相转发注册请求服务给集群中的其他服务注册中心,从而实现服务注册中心之间的服务同步。
sometime,服务实例会因为内存溢出、网络故障等不正常下线了。但是服务注册中心并没有收到“服务下线”的请求。那么为了解决这个问题,Eureca Server 在启动的时候会创建一个定时任务,默认每隔六十秒将当前清单中超时(默认九十秒)没有续约的服务剔除出去。
EurekaServer会统计心跳失败的比例在15分钟之内是否低于85%,如果出现低于的情况,EurekaServer会将这些实例保护起来,让其不过期,但是这样会让客户端拿到已经挂掉的服务实例,这就要求客户端必须要有容错机制(请求重试、断路器等) eureka.server.enable-self-preservation=false : 关闭保护机制