背景
默认情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。但90s内如果客户端已经停止了运行,却服务仍然在注册中心的列表中,会导致服务消费者可能会调用已经下架的服务然后出错。
解决方案
通过actuator 监控组件来实现服务的优雅下架
1.引包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.在配置文件中配置actuator
management.endpoints.enabled=true
management.endpoints.web.base-path=/actuator 默认值是actuator
management.endpoints.web.exposure.include=service-registry,info,health,metrics
有引入micrometer-registry-prometheus 的按以下配置
management.endpoints.web.exposure.include=service-registry,info,health,metrics,prometheus
management.endpoints.web.exposure.exclude=shutdown
3.停机后在任意一台服务器上用curl发送shutdown命令
curl -X POST http://ip:端口/actuator/shutdown