配置兼容开源网关功能

最近更新时间:2023-03-30 17:31:05

我的收藏

操作场景

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 支持兼容使用开源网关功能之前,请确保您已完成 微服务网关开发

操作步骤

您可以通过以下两种方式配置兼容开源网关功能。
方式一:在微服务网关的请求 Header 头设置
方式二:在微服务网关应用的配置文件设置
在微服务网关的请求 Header 头里设置标识某个请求是开源网关 API 的请求。
请求的 Header 头里设置 TSF-Opensource-Mode=true:表示本次网关请求是开源 API 的请求,走开源请求的逻辑,否则依然走 TSF API 请求(默认都是 TSF API 请求)。
请求的Header 头里设置 TSF-NamespaceId=namespace-xxxxx :表示本次网关请求路由到命名空间 ID 为 namespace-xxxxx 的下游服务,如果不设置则默认请求到与网关相同命名空间的下游服务。
说明
只有全局命名空间的网关才可以路由到任意一个命名空间的服务,普通命名空间的网关只能路由到与网关相同普通命名空间的服务。
TSF-NamespaceId 填写的是命名空间 ID,而非命名空间名称。
请求的Header 头里设置 TSF-NamespaceId=namespace-xxxxx :表示本次网关请求路由到命名空间 ID 为 namespace-xxxxx 的下游服务,如果不设置则默认请求到与网关相同命名空间的下游服务。
在微服务网关应用的配置文件设置 tsf.gateway.opensource-mode: true
tsf:
gateway:
opensource-mode: true
说明
TSF-NamespaceId 填写的是命名空间 ID,而非命名空间名称。
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 请求的逻辑。