无损上线

最近更新时间:2025-06-11 15:55:02

我的收藏

功能概述

对于任何一个线上应用来说,发布、扩容、缩容、重启等操作不可避免。Java 应用经常会延迟加载,启动后异步加载一些资源,例如:服务需要从文件存储 COS 获取数据或者文件,待数据或者文件拉取完成后才能对外提供服务。如果在应用启动后直接注册服务,会导致服务实际没有就绪而调用失败。为了确保服务无损上线,需要实例成功注册并且就绪后,先小流量预热,再放流量进来。具体功能包含:
服务延迟注册
服务注册就绪检查(提供服务注册是否成功的接口,以便打通 K8s 就绪检查)
服务小流量预热


操作步骤

要实现服务路由需要完成两部分操作:
在腾讯云控制台上,设置无损上线的规则。
客户端接入,并引入无损上线的插件。北极星提供两种接入方式:
SpringCloud Tencent
Java Agent
下文将详细讲解使用步骤。

腾讯云控制台操作步骤

1. 登录 TSF 控制台
2. 在左侧导航栏,选择 Polaris(北极星),在实例详情页选择目标引擎实例。
3. 单击左侧导航栏访问限流,进入熔断规则展示页面,单击新建限流规则,在弹窗中配置好限流规则后,单击提交。
4. 在左侧导航栏,服务治理中心下,单击服务管理,选择目标北极星引擎和目标服务,进入服务详情页
5. 单击无损上下线的 TAB。
6. 在无损上线的配置框中,点击设置按钮。

7. 按业务诉求,开启配置开关。

功能
描述
字段
延迟注册
北极星提供延迟注册的能力,待应用完全启动后,再进行服务注册。北极星支持两种延迟注册方式:
时长延迟:通过设置延迟注册时间,可让应用在充分初始化后再注册到注册中心对外提供服务。
探测延迟:探测应用对外暴露的检查接口,接口探测成功,返回200,确认应用可对外服务后再注册到注册中心。
时长延迟:
延迟注册时间:延迟注册的时间,支持0-3600秒,默认延迟注册时间:30秒
探测延迟:
探测协议:支持HTTP
探测方法:支持PUT、GET、POST、DELETE、全部。
探测接口:填写业务暴露健康检查接口,接口探测成功后,服务注册。例如:/health
服务预热
北极星提供服务预热的能力,小流量验证后无误后,再放入正常流量。
预热时长:默认120秒,支持 0~86400 秒(24小时)。
预热终止保护百分比:当超过一定百分比的节点处于预热阶段,则预热终止,避免流量聚集在少量节点导致过载。默认50%
预热曲线值:默认为1,支持 1~5 之间的整数值,流量权重会根据配置的预热曲线值呈指数型增长。数值越大,预热曲线梯度越大。
服务实例权重计算规则:



就绪检查
就绪检查开关开启后,提供接口判断注册是否完成。和 K8s 就绪检查功能配合使用,当应用注册完成返回200状态码,帮助 K8s 判定应用已就绪;未完成注册返回500,帮助 K8s 判定应用未就绪。
接口:/readiness
端口:28080

8. 可观测性。
可以实时查看服务无损上线的状态、服务请求等,确保每一步操作符合预期。


应用客户端操作步骤

北极星提供两种接入方式:
1. SpringCloud Tencent
2. Java Agent
SpringCloud Tencent
Java Agent
1. 服务通过 Spring Cloud Tencent 接入北极星服务注册与发现能力。具体步骤请参见:Spring Cloud Tencent 接入北极星
2. 引入 spring cloud tencent 无损上下线插件依赖。
在 pom.xml 中添加依赖:
<dependencies>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-tencent-lossless-plugin</artifactId>
</dependency>
</dependencies>
服务通过 Java Agent 接入北极星。具体步骤请参见:Spring Cloud 使用 Java Agent