码迷,mamicode.com
首页 > 编程语言 > 详细

【解决方案】SpringCloud项目优雅发版、部署

时间:2019-07-31 21:48:48      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:href   使用   image   put   pid   instance   出现   cat   code   

背景

SpringCloud分布式项目,部署在多个节点上。一般的发版方式是,使用Kill -15 pid,逐一地关闭、部署、重启。

但中间涉及到一个问题,当执行kill命令时,服务虽然关闭,但Eureka那里依然保存着这台服务器的IP,请求依然会跑到这台服务器上。

直到持续数十秒后,Eureka将该服务的IP剔除掉。

如果请求量大,会导致大量请求在发版的过程中出现异常。所以要想到一个更优雅的方式来部署服务。

方案一:

调用Eureka的接口,让Eureka自动剔除该服务IP。

获取服务的AppID和InstanceID,分别对应响应中的<app>instanceId

curl -X GET   http://IP:port/eureka/apps/

技术图片

从可用服务列表中剔除该服务

curl -X PUT   'http://IP:port/eureka/apps/AppID/InstanceID/status?value=DOWN' \

技术图片

将该服务加到可用服务列表中

curl -X PUT   'http://IP:port/eureka/apps/AppID/InstanceID/status?value=UP' \

技术图片

方案二 :

调用服务接口,服务向Eureka报告为不可用状态

项目中增加配置,重点是service-registry

management.endpoints.web.base-path=/monitor
management.endpoints.web.exposure.include=health,service-registry

部署前执行命令

curl -X POST   'http://IP:port/monitor/service-registry?status=DOWN'   -H 'content-type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8' \

技术图片

部署后执行命令

curl -X POST   'http://IP:port/monitor/service-registry?status=UP'   -H 'content-type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8' \

技术图片

参考文档

[1]: SpringCloud微服务如何优雅停机及源码分析
[2]: 实用技巧:Spring Cloud中,如何优雅下线微服务?

【解决方案】SpringCloud项目优雅发版、部署

标签:href   使用   image   put   pid   instance   出现   cat   code   

原文地址:https://www.cnblogs.com/fonxian/p/11278846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!