You need to enable JavaScript to run this app.
导航

Upstream 概述

最近更新时间2024.02.27 10:57:18

首次发布时间2023.02.24 11:15:43

本文为您介绍 Upstream 的概念及作用。

定义

Upstream 是对后端的抽象。您可以将具有相同功能的后端应用抽象为一个 Upstream,实现路由和后端应用解耦,更灵活地支持后端应用的灰度发布、多版本管理等场景。

类型

Upstream 当前支持对接的后端类型:函数服务、云服务器、容器服务、注册中心。

  • 函数服务类型 Upstream
    即后端类型为函数服务的 Upstream。API 网关支持对接火山引擎的函数服务,通过公网/私网的 HTTP/HTTPS 流量,触发函数代码逻辑。您可将已发布的函数封装为一个 Upstream,作为网关的路由后端。当 API 网关接收到流量时,当前函数将被触发执行,并将执行结果返回给 API 网关。

    一个函数服务类型 Upstream 可抽象一个函数。

  • 云服务器类型 Upstream
    即后端类型为云服务器的 Upstream。API 网关支持对接火山引擎的云服务器,您可将同一私有网络下的多个云服务器封装为一个 Upstream,作为网关的路由后端。

    一个云服务器类型 Upstream 可抽象多个云服务器。

  • 容器服务类型 Upstream
    即后端类型为容器服务的 Upstream。API 网关支持对接火山引擎的容器服务,您可将 K8S 部署的服务封装为一个 Upstream,作为网关的路由后端。API 网关会自动聚合 Upstream 来源中所有集群下的同名服务(即 Namespace、Service 及 Port 的名称均相同),将其看作一个应用。结合 Upstream 和路由权重配置功能,可以实现 K8S 集群内/跨 K8S 集群的流量管理。

    一个容器服务类型 Upstream 可抽象一个/多个相同的 K8S Service。

  • 注册中心类型 Upstream

    即后端类型为注册中心的 Upstream。API 网关支持对接火山引擎的微服务引擎,您可将已发布的 Nacos 服务封装为一个 Upstream,作为网关的路由后端。当 API 网关接收到流量时,当前 Nacos 服务将被触发执行,并将执行结果返回给 API 网关。

    一个注册中心类型 Upstream 可抽象多个 Nacos 服务。

使用场景

  • 跨后端类型的流量分发
    一条路由支持对接多种后端类型的 Upstream。通过在路由中配置多个 Upstream 的流量权重,实现跨后端类型的流量分发。例:应用跨后端类型部署、应用迁移。
  • 灰度发布/多版本管理
    一条路由支持对接多个 Upstream。通过在路由中配置多个 Upstream 的流量权重,实现多个 Upstream 间的流量分发。例:应用的多个版本部署在多组云服务器实例上,将每组实例抽象为一个 Upstream, 实现应用的多版本管理。
  • 跨 K8S 集群的流量管理
    将多个 K8S 集群中具有相同 Namespace、Service 及 Port 的一组应用抽象为一个 Upstream。此时 API 网关的路由仅需对接一个 Upstream 即可完成跨集群的流量管理。例:应用高可用部署场景(一个应用部署在多个集群的同名命名空间下)、应用的多个版本部署在多个集群的同名命名空间下。
  • K8S 集群内的流量管理
    实际应用中,K8S 集群内的流量管理和跨 K8S 集群的流量管理可以结合在一起使用。例:某应用高可用部署,该应用迭代时,多个灰度版本部署在同一 K8S 集群的同一命名空间下。此时,可进一步根据 VKE 侧设置的标签(对应 Deployment YAML 中的spec.template.metadata.labels),在 API 网关侧配置当前应用的多个灰度版本。之后,通过在路由中配置当前 Upstream 下多个灰度版本的流量权重,实现集群内多个版本的流量分发。