如果您期望托管至SAE的微服务应用其处理完请求后再停止,您可以使用SAE优雅下线功能(即无损下线)。SAE支持Spring Cloud和Dubbo应用优雅下线。本文介绍如何在SAE控制台上配置优雅下线。

背景信息

您可以在应用创建和部署过程中或应用成功部署后配置优雅下线相关参数:

  • 环境变量设置
  • 应用生命周期管理设置中的停止前处理(PreStop设置)

如果您的应用已部署在SAE,需注意的是修改优雅下线相关配置会触发该应用自动重新部署。请谨慎评估该操作对您业务的影响。本文以为已部署在SAE的应用配置优雅下线参数为例。

配置步骤

  1. 登录 SAE 控制台
  2. 应用列表页面单击具体应用名称,进入应用详细页面。
  3. 应用详情页面,单击部署应用
  4. 部署应用页面,找到环境变量设置区域,添加以下变量。
    配置环境变量开启无损下线功能
    变量名称 是否必填 操作 参数说明
    profiler.micro.service.http.server.enable 将该变量取值设置为true。 是否开启优雅下线服务治理能力。取值说明如下:
    • true:开启。
    • false:默认值,关闭。使用默认值则无需配置。
    profiler.micro.service.http.server.port 将该变量取值设置为54188。 SAE优雅下线功能默认占用54199端口。如果使用54199默认端口,则无需配置该参数。如果此默认端口和您应用端口产生冲突,请配置新的端口。
    micro.service.shutdown.wait.time 将该变量取值设置为5000。 收到Spring的ContextClosedEvent事件后,进程动态等待n毫秒后关闭。例如,取值设置为5000 ms,那么进程收到kill信号后,会等待5000 ms再关闭。

    配置该参数后,需要设置micro.service.shutdown.auto.wait参数为false。

    micro.service.shutdown.auto.wait 将该变量取值设置为false。 是否开启自动等待功能。取值说明如下:
    • true:默认值,开启。进程可能会随着流量停止而提前关闭。如果使用默认值,则无需配置。
    • false:关闭。进程直接等待micro.service.shutdown.wait.time所配置的值的对应时常后再关闭。

    您也可以通过JVM参数-D进行配置。

  5. 应用详情页面,找到应用生命周期管理设置区域,单击停止前处理(PreStop设置)页签,如图所示输入相关信息。
    应用生命周期管理 PreStop 中增加配置

    第三行输入的内容为:curl http://127.0.0.1:54188/offline,端口需与配置环境变量时的取值保持一致。本文示例为54188。

  6. 单击确认
    变更详情页面中的执行状态执行成功,则说明配置成功。
说明 SAE微服应用优雅下线后,如果存在流量损失问题,那么请重启您的客户端和服务端应用。