Eureka服务端application.yml文件:
eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka7002.com:7002/eureka/
# ******下面的代码用来关闭Eureka服务端的自我保护机制******
server:
# 关闭自我保护机制,保证不可用的服务被及时剔除
enable-self-preservation: false
# 如果2秒内没有收到某个微服务的心跳,那就剔除该微服务,单位为毫秒
eviction-interval-timer-in-ms: 2000
Eureka客户端application.yml文件:
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
# ******下面的操作用来配合被关闭的Eureka的自我保护机制******
instance:
instance-id: payment8001
prefer-ip-address: true
# Eureka客户端向服务心跳的时间间隔是1s,默认是30秒
lease-renewal-interval-in-seconds: 1
# Eureka服务端在收到一次心跳后等待时间上限是2s,默认是90s,超时将剔除该微服务,其实Eureka服务端已经设置了,可能就是也告诉服务提供者一下
lease-expiration-duration-in-seconds: 2
结论:
Eureka客户端会间隔1s向Eureka服务端发送一次心跳包,而Eureka服务端的自我保护机制已经关闭了,如果在2s之内没有收到Eureka客户端发送过来的心跳包,那就会立即剔除注册的Eureka客户端