Spring colud 服务上线下线

1,直接kill 

该方式借助的是Spring Boot应用的Shutdown hook,应用本身的下线也是优雅的,但如果你的服务发现组件使用的是Eureka,那么默认最长会有90秒的延迟,其他应用才会感知到该服务下线,这意味着:该实例下线后的90秒内,其他服务仍然可能调用到这个已下线的实例。因此,该方式是不够优雅

2, 主动关闭Eureka客户端

这种方式相对于直接关闭服务来说,优雅了许多,可以通过监控查看是否下线后还有流量进来,等到完全没有流量进来后再进行发布。因为Eureka注册中心在收到某个客户端下线后不会马上通知所有的注册的客户端,而是等到客户端进行心跳的时候再将下线的数据返回。通过这种方式下线的话,可以在某个服务下线后防止其他服务调用此服务失败。在项目中可以使用如下方式关闭客户端:
 

     @Autowired
    private EurekaClient client;

     
    @RequestMapping(value = { "/eurekaUnRegister" }, method = RequestMethod.GET)
    public String shutDown() {
        eurekaClient.shutdown();
        return "eurekaUnRegistering";
    }

直接调用/eurekaUnRegister即可让当前服务下线,做好权限控制。 

特点:需要改代码。 下线后服务进程还在,可以等没有流量再发布。注册中心服务下线。

3. /shutdown 端点

Spring Boot提供了/shutdown 端点,可以借助它实现优雅停机。

在想下线应用的 properties中添加如下配置,从而启用并暴露/shutdown 端点

#启用shutdown

endpoints.shutdown.enabled=true

#禁用密码验证

endpoints.shutdown.sensitive=false

然后发送POST请求到/shutdown 端点

curl -X http://你想停止的服务地址/shutdown

 

特点:发现这个进程停止了。

4./pause 端点

Spring Boot应用提供了/pause 端点,利用该端点可实现优雅下线。

使用方式:

在想下线应用的 properties中添加如下配置,从而启用并暴露/pause 端点

#启用pause,restart,之所以要启用restart端点,是因为pause端点的启用依赖restart端点的启用

endpoints.pause.enabled=true

endpoints.restart.enabled=true

#禁用密码验证

endpoints.pause.sensitive=false

#暴露端点

endpoints.web.exposure.include=pause

特点:pause后服务进程在;注册中心显示DOWN;  如果你的服务发现组件用的是Eureka,并且你的应用开启了健康检查(eureka.client.healthcheck.enabled = true ,那么/pause 端点无效!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值