企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
如果你看到了下面红色字体的信息,则说明 Eureka 关闭了自我保护机制。 ![](https://img.kancloud.cn/86/cf/86cfdd46c0a3c956d0d611938e28cdab_2113x789.png) 如果关闭了自我保护机制,Eureka Server 在一定时间内没有接收到某个微服务实例的心跳,Eureka Server 将会注销该实例(默认90秒)。 <br/> 但是当网络分区故障发生时,微服务与 Eureka Server 之间无法正常通信,关闭自我保护机制的行为可能变得非常危险了,因为微服务本身其实是健康的,此时本不应该注销这个微服务。 Eureka 通过自我保护模式来解决这个问题,当 Eureka Server 节点在短时间内丢失过多客户端时,那么就会进入自我保护模式。 <br/> 一旦进入自我保护模式,Eureka Server 就会保护服务注册表中的信息,不再删除服务注册表中的数据,即不会注销任何微服务。当网络故障恢复后,该 Eureka Server 节点会自动退出自我保护模式。  <br/> 综上,自我保护模式是一种应对网络异常的安全保护措施。它宁可保留所有微服务(健康/不健康),也不盲目注销任何不健康的微服务,让 Eureka 集群更加的健壮、稳定。  <br/> 如果想要禁止使用 Eureka 的自我保护机制,可以如下配置: 1. 在 Eureka 服务端禁用自我保护机制。 ```yml #false 禁用自我保护机制,true(默认)开启自我保护 eureka.server.enable-self-preservation = false ``` 2. 在 Eureka 客户端缩小心跳时间。 ```yml eureka: instance: #心跳检测与续约时间 #开发时没置小些,保证服务关闭后注册中心能即使剔除服务 #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒) lease-renewal-interval-in-seconds: 1 #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务 lease-expiration-duration-in-seconds: 2 ```