我们有一个应用程序接收来自使用Eureka的其他服务的调用,以发现不同应用程序实例/副本的不同IP地址。
在部署此应用程序的新版本时,我们的部署系统(在我们的示例中为kubernetes)将SIGTERM发送到应用程序的一个实例以将其关闭。
但是服务中的Eureka客户端向应用程序发送请求,保留了Eureka信息的本地缓存。这意味着这些应用程序不会意识到应用程序的实例已经关闭,并且它们将继续向不再有效的实例发送请求。
有没有办法让Spring Cloud应用程序在关闭之前等待几秒钟以确保所有客户端都有更新的Eureka信息(此应用程序不再被列出的位置)?
答案 0 :(得分:0)
如果您正在使用Kubernetes,那么您可以将服务映射到向eureka注册的每个应用/服务,并告诉应用使用服务名称而不是IP进行注册。然后,您可以使用Kubernetes管理蓝/绿部署(前提是您已设置探针)。然后,Eureka将了解服务名称以及是否为其注册了某些内容,Kubernetes将在升级期间管理可用性。这是一个混合模型。
如果您要移除应用程序或更改名称而不是升级,那么我认为您需要为eureka注册数据设置租约时间。 Eureka never unregisters a service