微服务网关开发指南

最近更新时间: 2024-10-17 17: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 请求的逻辑。