文档

设置无损上下线

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

在实例扩缩容、应用回滚升级、应用启停等场景中,应用可能会出现短时间内服务不可用等异常情况。Serverless 应用引擎 SAE(Serverless App Engine)集成了微服务引擎 MSE(Microservices Engine)的无损上下线功能,通过服务预热、服务延迟注册等功能,为应用提供业务保障。

背景信息

  • 无损上线:

    对于任何一个线上应用来说,发布、扩容、缩容、重启等操作不可避免。在应用启动各阶段,无损上线能够提供相应的保护能力。微服务的Provider服务只要注册到注册中心即可被Consumer调用,但此时,Provider可能还需要更进一步的初始化,例如数据库连接池的初始化等。因此,对于流量比较大的微服务应用,推荐开启无损上线功能。

  • 无损下线:

    线上应用在服务更新部署过程中,需要尽量保证客户端无感知,即从应用停止到重启恢复服务的阶段不能影响正常的业务请求。由于微服务应用自身调用特点,在高并发下,服务提供端应用实例的直接下线,会导致服务消费端应用实例无法实时感知下游实例的实时状态,因而出现继续将请求转发到已下线的实例,从而出现请求报错,导致流量有损。因此,在应用执行部署、停止、回滚、缩容和重置时,需要通过无损下线配置来保证应用正常关闭。

前提条件

功能入口

  1. SAE控制台应用管理 > 微服务应用页面顶部菜单栏选择地域,然后在应用列表页面,单击目标应用名称。

  2. 在左侧导航栏,选择微服务治理 > 流量治理,单击无损上下线页签。

设置无损上下线

  1. 无损上下线页面,配置相关信息。

    重要
    • 如果您是第一次使用该功能,需要在该页面单击开启微服务治理刷新页面,才能配置无损上下线。

    • 开启过程大约需要1~2分钟,请您耐心等待。

    无损上线

    无损上线区域,打开无损上线的开关,然后配置一下信息。

    配置项

    说明

    延迟注册时间(秒)

    设置服务注册的延迟时间。该参数可以将原本服务注册时间往后推迟指定时长。如果您的应用在启动后有耗时较长的异步资源加载过程,可以通过该参数调节新上线节点的服务注册行为,以推迟其收到调用请求的时机。

    重要

    延迟注册时长不为0时,必须在应用部署中配置readiness(就绪检查),访问路径设置为/health,且端口设置为54199,以保证服务完全注册到注册中心后,Kubernetes才认定该服务为就绪状态。这一措施能有效避免因服务消费者找不到可用服务提供者而导致的入流量骤降问题。至关重要的是,切忌将LivenessProbe(存活探针)设置为同一路径/health,因为这样做可能引发应用不断重启的死循环状况。配置应用业务就绪检查的具体步骤,请参见在部署应用过程中配置健康检查

    小流量预热时长(秒)

    打开高级选项,设置小流量预热时长。流量预热机制是为了确保新节点加入时,初期分配给该节点的微服务调用流量维持在较低水平,并随着时间平缓增加。这样设计是为了缓解JAVA应用冷启动期间处理能力较弱的问题,防止系统整体响应时间(RT)显著上升。预热过程将在预设的时长结束后自动终止,之后该节点将正常承载全量流量。

    无损下线

    接入MSE后,无损下线默认开启。

    如果打开主动通知开关,节点在下线时会主动通知消费者自身已经下线,避免消费者调用到该节点。默认情况下无需开启,如果应用使用的是Spring Cloud框架,并且发现应用在下线过程中有消费者调用出错的情况,可以尝试开启该功能来解决。

关闭无损上下线

  • 无损上线

    在目标应用的左侧导航栏,选择微服务治理 > 流量治理,单击无损上下线页签,然后在无损上线区域,关闭开关。

  • 无损下线

    无损下线功能接入MSE后默认开启,不支持单独关闭。

如果您无需使用微服务治理功能,为避免产生不必要的MSE费用,可以在应用基本信息页面右上角,选择更多 > 关闭微服务治理,根据页面提示信息,关闭微服务治理功能。

警告

关闭微服务治理功能后,除服务列表外,其他微服务治理功能(包括无损上下线、灰度规则和限流降级)将无法使用,且关闭过程中会触发一次应用重启,请自行判断业务风险后再进行操作。