You need to enable JavaScript to run this app.
导航
延迟下线
最近更新时间:2024.06.24 15:47:32首次发布时间:2023.09.27 16:47:12

在应用更新发布,尤其是业务并发请求量级较大的情况下,通常存在因前置服务提供方节点下线,导致部分在途请求异常的场景。延迟下线机制,即当服务实例预计触发下线操作时,尽量闭环在途请求后,再进行实际下线操作。本文介绍如何在微服务引擎实现服务的延迟下线。

背景信息

服务延迟下线的主要步骤如下。

  1. 服务提供方进行反注册,注销该实例的注册中心。
  2. 服务订阅方更新注册中心的提供方服务实例列表,移除与下线实例的节点信息,不再将新流量路由至预下线实例。
  3. 服务提供方预下线实例根据配置的 sidecar.mesh.io/prestop-timeout 时间(默认 5000 ms),在服务注销后延迟下线,以确保在途请求处理。
  4. 延迟下线时间到达后,预下线实例完成实际下线操作。

前提条件

已创建同步任务,将目标服务同步至微服务引擎。操作详情参见 创建同步任务

操作流程

微服务引擎将延迟下线功能集成至应用接入的过程中,在应用接入向导中选中 延迟下线,接入的应用即具备延迟下线的能力。

  1. 应用接入时,在 应用接入向导 > 配置服务信息 > 高级配置 中,选中 延迟下线。应用接入操作详情参见 接入 Java 应用

    alt

  2. 配置 Deployment 中接入服务所需的配置信息,添加至服务对应的 Deployment 中。配置信息示例如下。

    spec:
      template:
        metadata:
          annotations:
            sidecar.mesh.io/prestop-timeout: "5000"
          labels:
            sidecar.mesh.io/data-plane-mode: "java_proxyless"
            sidecar.mesh.io/lane: "mse-base"
            sidecar.mesh.io/mse-namespace: "test-public-test"
    
    类型参数说明示例值
    annotationssidecar.mesh.io/prestop-timeout可选,开启延迟下线后支持。实例延迟下线的时长,单位为毫秒,支持根据实际业务情况调整时长。sidecar.mesh.io/prestop-timeout: "5000"

    labels

    sidecar.mesh.io/data-plane-mode

    微服务引擎数据面组件。

    sidecar.mesh.io/data-plane-mode: "java_proxyless"

    sidecar.mesh.io/lane服务所处泳道名称。sidecar.mesh.io/lane: "mse-base"

    sidecar.mesh.io/mse-namespace

    服务所处 Nacos 命名空间的名称。

    sidecar.mesh.io/mse-namespace: "nacos-test-public-default-group"