微服务引擎支持通过接入指引,自动生成应用接入工作负载所需的 Label 和 Annotation 信息。将生成的 Label 和 Annotation 信息添加到部署应用的工作负载,并运行成功后,即可将应用接入微服务引擎。本文介绍如何将 Java 应用接入微服务引擎。
当前支持三种 Java 服务接入模式,满足不同的应用场景。
名称 | data-plane-mode | 服务发现 | 适用场景 |
---|---|---|---|
轻量级 Agent | "java_lite" | 注册中心 | 适用于 Spring Cloud、Dubbo 框架进行治理增强,不依赖控制面服务寻址,故障容错性和性能更强。目前仅支持优雅上下线、服务指标监控、全链路灰度能力。 |
全栈 Agent |
|
| 通过 XDS 可实现与多语言 Sidecar 统一服务寻址和治理规则配置,适用于异构框架统一场景。模式适用于异构框架统一治理规则和服务寻址场景,依赖控制面服务寻址下发,性能介于 Sidecar 代理模式和 Java Agent 轻量版之间。 |
功能 | 功能介绍 | 适用场景 |
---|---|---|
延迟下线 | 支持服务在注册中心注销后,延迟一定时间再下线实例,以确保在途请求的完成。延迟下线的时间支持自定义配置,默认为 5000 毫秒。无损下线详细介绍参见 延迟下线。 | 通过反注册和驻留时间,避免服务下线过程中的流量中断。 |
自适应下线 | 自适应下线是对原有延迟下线的能力的补充。自适应下线就是在实例触发实际下线后,进行服务端接受请求、在途请求和刷新客户端缓存操作。用户无需关注驻留时间配置即可在最大限度避免实例下线的流量异常。 | 服务下线过程中完成在途请求处理,避免业务中断。 |
延迟注册 | 延迟注册可以让应用在充分初始化后,再注册到注册中心,对外提供服务。延迟注册可以应对需要提前完成缓存数据加载的场景,避免应用启动后直接注册服务,流量资源未就绪而导致的报错。 |
|
已创建治理中心,操作方法参见 创建治理中心。
已创建同步任务,生成治理中心中服务网格命名空间。创建同步任务的方法参见 创建同步任务。
说明
服务网格命名空间的名称由 Nacos 注册中心名称、Nacos 命名空间名称和 NacosGroup 名称拼接而成。创建同步任务时,自动生成治理中心中服务网格命名空间。
(可选)实现 延迟下线、自适应下线 功能前,需要先完成 PreStop 改造,操作说明参见 PreStop 改造。
(可选)实现 延迟注册(延迟上线)功能前,需要先完成 ReadinessProbe 改造,操作说明参见 健康检查。
登录 微服务引擎控制台。
左侧导航栏单击 治理中心 > 接入指引。
在 接入指引 页面,填写服务配置并获取应用接入工作负载所需的 Label 和 Annotation 信息。
配置接入设置。
参数 | 说明 |
---|---|
接入类型 | 选择 内部服务。 |
选择语言 | 选择接入服务的开发语言,接入 Java 服务时选择 Java。 |
选择数据面接入模式 | 支持以下模式:
|
配置服务信息。
参数 | 说明 |
---|---|
治理中心 | 展示接入应用所属治理中心。 |
命名空间 | 展示接入应用所属治理中心中服务网格命名空间。服务网格命名空间的名称由 Nacos 注册中心名称、Nacos 命名空间名称和 NacosGroup 名称拼接而成。创建同步任务时,自动生成治理中心中服务网格命名空间。 |
说明
开启 高级配置 后,支持配置以下参数。
参数 | 说明 |
---|---|
泳道 | 选择应用接入的泳道。创建泳道的方法参见 创建流量泳道。 |
延迟下线 | 开启延迟下线后,支持服务在注册中心注销后,延迟一定时间再下线实例,以确保在途请求的完成。延迟下线的时间支持自定义配置,默认为 5000 毫秒。无损下线详细介绍参见 延迟下线。 |
自适应下线 | 在实例触发实际下线后,进行服务端接受请求、在途请求和刷新客户端缓存操作。用户无需关注驻留时间配置即可在最大限度避免实例下线的流量异常。使用本功能前需要先完成 PreStop 改造,操作说明参见 PreStop 改造。 |
延迟注册 | 延迟注册可以让应用在充分初始化后,再注册到注册中心,对外提供服务。延迟注册可以应对需要提前完成缓存数据加载的场景,避免应用启动后直接注册服务,流量资源未就绪而导致的报错。使用本功能前需要先完成 ReadinessProbe 改造,操作说明参见 健康检查。 |
单击获取应用接入微服务引擎所需的 Label 和 Annotation 信息。
配置 Deployment。将获取的 Label 和 Annotation 信息添加至已创建的 Deployment 中并更新。YAML 示例文件如下。
注意
不同接入模式对应的 sidecar.mesh.io/data-plane-mode
参数值不同,具体以控制台展示为准。
spec: template: metadata: annotations: sidecar.mesh.io/prestop-timeout: "5000" labels: sidecar.mesh.io/data-plane-mode: "java_proxyless" sidecar.mesh.io/lane: "****-****-13" sidecar.mesh.io/mse-namespace: "nacos-****-****-openapi-group"
类型 | 参数 | 说明 | 示例 |
---|---|---|---|
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" |
(可选)补充自定义 Header。
当您需要对 HTTP 请求中 Header 用于流量标识时。可以在入口服务工作负载的 Java 启动命令增加 -Dmse.custom.propagate.header.keys
启动参数,参数的 Value 值为自定义业务 Header 的 Key 值。例如,采用自定义 Header "x-canary:true" 的示例如下:
- args: - -c - /jdk/bin/java -jar -Dmse.custom.propagate.header.keys= x-canary xxx.jar
注意
为保障传输性能,单个治理中心内,仅允许设置 10 个自定义 Header,多个之间用 "," 分割。超出的自定义 Header 自动丢弃。