微服务网关开发指南
最近更新时间: 2025-10-11 18:10:00
操作场景
TSF 微服务网关在开源原生网关 Spring Cloud Gateway 和 Zuul 的基础上增加了命名空间、网关分组、支持 TSF 服务治理、TSF 网关插件以及 TSF 配置 API 限流和超时等 TSF 特有的功能,但增加了这些 TSF 特有的功能以后,一些开源网关的功能使用反而受到了限制,因此需要在使用 TSF 网关的同时兼容使用开源网关的功能,使用户更加灵活方便地扩展一些定制化的功能。
功能对比说明
从1.32.0 版本SDK (2021年6月发布)开始,TSF 微服务网关 SDK 支持兼容使用开源网关功能(包括但不限于支持网关自定义 Routes,支持转发 WebSocket 协议,支持跨域,支持开源网关 API 使用 TSF 服务治理等功能)。
- TSF API 请求:受 TSF 托管,走 TSF 请求的逻辑,会校验网关分组、请求 URL 请求路径等是否合法,支持 TSF 服务治理、支持使用网关 API 限流和超时以及 API 插件等 TSF 特有的功能,但是不支持使用开源网关自定义 Routes 以及支持转发 WebSocket 协议。
- 开源 API 请求:不受 TSF 托管,走开源请求的逻辑,不会校验网关分组和 URL 请求路径等是否合法,可兼容开源原生 API 的逻辑,支持开源网关自定义 Routes、支持转发 WebSocket 协议等等,同时可兼容使用 TSF 服务治理功能, 但由于不受 TSF 托管,所以这类请求不支持使用网关 API 限流和超时以及 API 插件等 TSF 特有的功能。
| 功能 | TSF API 请求 | 开源 API 请求 |
|---|---|---|
| TSF 服务治理 | 支持 | 支持 |
| 跨域 | 支持 | 支持 |
| TSF 网关 API 限流和超时以及 API 插件等 TSF 特有的功能 | 支持 | 不支持 |
| 开源网关自定义 Routes | 不支持 | 支持 |
| 转发 WebSocket 协议 | 不支持 | 支持 |
前提条件
开始实践配置微服务 SDK 支持兼容使用开源网关功能之前,请确保您已完成 [微服务网关 SDK 使用指南]。
操作步骤
方法一、在微服务网关的请求header头里设置标识某个请求是开源网关 API 的请求
(1)请求的Header 头里设置 TSF-Opensource-Mode=true:表示本次网关请求是开源 API 的请求,走开源请求的逻辑,否则依然走 TSF API 请求(默认都是 TSF API 请求)。
(2)请求的Header 头里设置 TSF-NamespaceId=namespace-xxxxx :表示本次网关请求路由到命名空间 ID 为 namespace-xxxxx 的下游服务,如果不设置则默认请求到与网关相同命名空间的下游服务。
注意:
- 只有全局命名空间的网关才可以路由到任意一个命名空间的服务,普通命名空间的网关只能路由到与网关相同普通命名空间的服务。
- TSF-NamespaceId 填写的是命名空间 ID,而非命名空间名称。
方法二、在微服务网关应用的配置文件设置 tsf.gateway.opensource-mode: true
tsf:
gateway:
opensource-mode: true
注意:
- tsf.gateway.opensource-mode 默认为 false,表示默认是 TSF 网关模式,如果设置为 true 表示开启 TSF 兼容开源网关模式。
- 开启 TSF 兼容开源网关模式以后,所有非 TSF 网关分组前缀的请求都会被当作是开源 API 的请求,比如某个 TSF 网关分组名是 /test,那么只有 http://ip:port/test/xxx 的请求才会走原先 TSF API网关的逻辑,其他请求,比如 http://ip:port/abc/xxx 的请求会走开源 API 请求的逻辑。