You need to enable JavaScript to run this app.
文档中心
微服务引擎

微服务引擎

复制全文
下载 pdf
治理策略管理
延迟下线
复制全文
下载 pdf
延迟下线
在应用更新发布,尤其是业务并发请求量级较大的情况下,通常存在因前置服务提供方节点下线,导致部分在途请求异常的场景。延迟下线机制,即当服务实例预计触发下线操作时,尽量闭环在途请求后,再进行实际下线操作。本文介绍如何在微服务引擎实现服务的延迟下线。​
注意​
仅 注册中心 服务来源的服务支持本功能。​
背景信息​
服务延迟下线的主要步骤如下。​
  1. 服务提供方进行反注册,注销该实例的注册中心。​
  1. 服务订阅方更新注册中心的提供方服务实例列表,移除与下线实例的节点信息,不再将新流量路由至预下线实例。​
  1. 服务提供方预下线实例根据配置的 sidecar.mesh.io/prestop-timeout 时间(默认 5000 ms),在服务注销后延迟下线,以确保在途请求处理。​
  1. 延迟下线时间到达后,预下线实例完成实际下线操作。​
前提条件​
已创建同步任务,将目标服务同步至微服务引擎。操作详情参见 创建同步任务。​
操作流程​
微服务引擎将延迟下线功能集成至应用接入的过程中,在应用接入向导中选中 延迟下线,接入的应用即具备延迟下线的能力。​
  1. 服务提供方进行反注册,注销该实例的注册中心。​
说明​
  • 使用 PreStop 前,Kubernetes 中已配置 preStop 参数。​
  • 虚拟机场景 无需配置 readiness 机制。无损下线插件会对 Spring 的 ContextClosedEvent 事件进行监听,当监听到 ContextClosedEvent 事件后,会主动通知实例进行下线。​
  • 在容器场景利用 Kubernetes 提供的 preStop 机制,配合延迟下线 API 使用,可以实现流量的无损下线。如下示例代码所示,仅需在 Kubernetes 的 preStop 机制中添加 MSE Agent API 指令 curl http://127.0.0.1:17000/lossless/deregister。​
  • 改造前​
  • ​
    lifecycle:​
    preStop:​
    exec:​
    command:​
    - /bin/sh​
    - -c​
    ​
  • 改造后​
  • ​
    lifecycle:​
    preStop:​
    exec:​
    command:​
    - /bin/sh​
    - -c​
    - "curl http://127.0.0.1:17000/lossless/deregister"​
    ​
  1. 应用接入时,在 接入指引 > 配置服务信息 > 高级配置 中,选中 延迟下线。应用接入操作详情参见 接入 Java 应用。​
  1. 将 配置 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"​
    ​
​
类型​
参数​
说明​
示例值​
annotations​
sidecar.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 注册中心名称、Nacos 命名空间名称和 NacosGroup 名称拼接而成。创建同步任务时,自动生成治理中心中服务网格命名空间。​
sidecar.mesh.io/mse-namespace: "nacos-test-public-default-group"​
​
​
最近更新时间:2025.09.16 18:08:50
这个页面对您有帮助吗?
有用
有用
无用
无用