1、调用/service-registry端点将状态置为 OUT_OF_SERVICE
2、sleep 缓存刷新时间 + 单个请求处理时间
3、kill 服务pid,让容器执行相关资源的释放以及扫尾工作
4、kill -9 终止服务,杀死进程
5、调用 /service-registry端点将状态置为 CANCEL_OVERRIDE,其实就是向Server端发送DELETE overriddenstatus的请求,这会让Server端 status=UNKNOWN 且 overriddenstatus=UNKNOWN
这里可以写个类容器启动时自动向eureka发出这个请求
@Slf4j
@Component
public class EurekaOverridenStatusCleanListener implements ApplicationRunner {
@Autowired
private ServiceRegistryEndpoint serviceRegistryEndpoint;
@Override
public void run(ApplicationArguments args) throws Exception {
serviceRegistryEndpoint.setStatus("CANCEL_OVERRIDE");
}
}
6、服务定时更新状态线程更新Up状态给Eureka,服务发布完成。无缝发布不影响业务