阿里开源 Higress:AI 原生 API 网关
原名: alibaba /
higress
基本信息
- 描述: 🤖 AI Gateway | AI 原生 API 网关
- 语言: Go
- 星标: 7,457 (+10 stars today)
- 链接: https://github.com/alibaba/higress
- DeepWiki: https://deepwiki.com/alibaba/higress
DeepWiki 速览(节选)
Overview
Relevant source files
Purpose and Scope
This document provides a comprehensive overview of Higress, an AI Native API Gateway built on Istio and Envoy. It covers the system’s architecture, core components, and primary use cases. For detailed information about specific subsystems, refer to the Core Architecture (page 2), Build and Deployment (page 3), WASM Plugin System (page 4), AI Gateway Features (page 5), MCP System (page 6), and Development Guide (page 7) sections.
What is Higress
Higress is a cloud-native API gateway that extends Istio and Envoy with WebAssembly (WASM) plugin capabilities. The system provides three core functions: AI gateway features for LLM applications, MCP server hosting for AI agent tool integration, and traditional API gateway capabilities including Kubernetes Ingress and microservice routing.
The architecture separates control plane (configuration management) from data plane (traffic processing). Configuration changes propagate through the xDS protocol with millisecond latency and no connection disruption, making it suitable for long-connection scenarios such as AI streaming responses.
Primary Use Cases:
| Use Case | Description | Core Components |
|---|---|---|
| AI Gateway | Unified API for 30+ LLM providers with protocol translation, observability, caching, and security | ai-proxy, ai-statistics, ai-cache, ai-security-guard plugins |
| MCP Server Hosting | Host Model Context Protocol servers enabling AI agents to call tools and services | mcp-router, jsonrpc-converter filters + MCP server implementations (quark-search, amap-tools, all-in-one) |
| Kubernetes Ingress | Ingress controller with compatibility for nginx-ingress annotations | higress-controller, Ingress/Gateway API translation to Istio configs |
| Microservice Gateway | Service discovery from multiple registries (Nacos, Consul, ZooKeeper, Eureka) | McpBridgeReconciler, registry-specific watchers |
Production Validation:
Higress originated at Alibaba to address Tengine reload issues affecting long-connection services and insufficient gRPC/Dubbo load balancing. Within Alibaba Cloud, it supports core AI applications including Tongyi Qianwen (通义千问), Tongyi Bailian model studio, and PAI platform. The system handles hundreds of thousands of requests per second with 99.99% availability guarantees.
Sources: README.md30-52
Core Architecture
Higress implements a control plane and data plane separation derived from Istio’s architecture. The control plane watches Kubernetes resources and generates Envoy configurations distributed via xDS protocol. The data plane processes traffic through Envoy proxies extended with WASM plugins.
System Components and Binaries
Component Deployment Diagram:
Binary and Process Mapping:
| Binary | Source Entry Point | Deployment Location | Primary Functions |
|---|---|---|---|
higress-controller | cmd/higress/main.go1-100 | Single pod in higress-system | Resource watching, IngressController, WasmPluginController, McpBridgeReconciler, service discovery management |
pilot-discovery | Istio upstream (patched) | Same pod as controller | xDS server implementation, configuration distribution on ports 15010 (gRPC), 15012 (gRPC-TLS), 15017 (webhook) |
higress-gateway | Envoy binary + extensions | DaemonSet or Deployment | Data plane proxy, WASM VM (V8), HTTP/HTTPS listeners on ports 80/443, admin API on 15021 |
hgctl | cmd/hgctl/main.go1-50 | Local CLI tool | MCP server management, local development (hgctl agent, hgctl mcp add) |
Key Process Communication:
The controller and pilot run in the same pod and communicate via localhost gRPC on port 15051. The controller implements multiple Kubernetes controllers (pkg/ingress/kube/) that watch different resource types and update an in-memory cache (pkg/ingress/kube/common/cache.go). The cache state is pushed to pilot, which converts it to xDS configurations (Listener Discovery Service, Route Discovery Service, Cluster Discovery Service, Endpoint Discovery Service) and streams them to all gateway instances.
Sources: README.md32 Diagram 2 from provided architecture diagrams
Configuration Flow and Controller Architecture
Configuration Update Sequence:
Controller Registry and Responsibilities:
The controller implements the informer pattern for multiple resource types:
| Controller | Source Location | Watched Resource | Generated Configs |
|---|---|---|---|
IngressController | pkg/ingress/kube/ingress/ingress.go1-500 | Ingress (v1) | VirtualService, DestinationRule, Gateway |
IngressController (v1beta1) | pkg/ingress/kube/ingress/ingressv1beta1.go1-400 | Ingress (v1beta1) | Legacy Ingress support |
KIngressController | pkg/ingress/kube/kingress/kingress.go1-300 | Knative Ingress | Knative-specific routing |
WasmPluginController | pkg/ingress/kube/wasmplugin/wasmplugin.go1-400 | WasmPlugin CRD | EnvoyFilter with WASM config |
McpBridgeReconciler | pkg/ingress/kube/mcpbridge/reconciler.go1-300 | McpBridge CRD | Registry watcher lifecycle |
ConfigMapController | pkg/ingress/kube/configmap/1-100 | higress-config ConfigMap | EnvoyFilter for global settings |
The central cache (pkg/ingress/kube/common/cache.go) maintains in-memory state for all Istio resources and provides atomic updates to prevent partial configuration states. Configuration changes propagate to pilot within milliseconds, significantly faster than nginx-ingress reload times (reported 10x improvement).
Sources: README.md108-116 Diagram 2 from provided architecture diagrams
Key Capabilities
AI Gateway Features
AI gateway functionality is implemented through a pipeline of WASM plugins that process requests and responses for LLM providers. The plugins support protocol translation, observability, caching, and security.
AI Plugin Pipeline:
| Plugin | Source Location | Request Phase | Response Phase |
|---|---|---|---|
ai-proxy | plugins/wasm-go/extensions/ai-proxy/main.go1-500 | Protocol detection, provider selection, request transformation | Response transformation, SSE stream processing |
ai-statistics | plugins/wasm-go/extensions/ai-statistics/main.go1-400 | Extract request attributes (user, model, tokens) | Extract response tokens, latency, write metrics/logs/traces |
ai-cache | plugins/wasm-go/extensions/ai-cache/main.go1-300 | Check cache (semantic search) | Store response in Redis |
ai-security-guard | [plugins/wasm-go/ext |
[…truncated…]
导语
Higress 是一款基于 Istio 和 Envory 构建的 AI 原生 API 网关,它通过 WASM 插件扩展了云原生流量管理能力。该项目旨在解决大模型应用中的流量编排与工具集成问题,同时兼容 Kubernetes Ingress 等传统网关场景。本文将梳理其系统架构,并重点介绍 AI 网关特性、MCP 系统支持以及核心组件的运作机制。
摘要
Higress 项目总结
1. 项目简介 Higress 是一款基于 Istio 和 Envoy 构建的云原生 API 网关,采用 Go 语言开发。该项目由阿里巴巴开源,目前在 GitHub 上拥有超过 7,000 颗星。它被定义为 AI Native API Gateway(AI 原生 API 网关),旨在为现代云原生应用和 AI 应用提供统一的流量管理入口。
2. 核心架构与特性 Higress 采用了控制平面与数据平面分离的架构:
- 高性能与扩展性:通过 WebAssembly (WASM) 插件机制提供极强的扩展能力。
- 配置管理:利用 xDS 协议进行配置传播,具备毫秒级延迟且连接不中断,特别适用于 AI 长连接流式响应场景。
3. 三大核心功能 Higress 的主要用途涵盖以下三个领域:
AI 网关
- 功能:为大语言模型(LLM)应用提供统一 API。支持 30 多家 LLM 提供商的协议转换,并提供可观测性、缓存及安全防护。
- 关键组件:
ai-proxy、ai-statistics、ai-cache、ai-security-guard等插件。
MCP 服务器托管
- 功能:托管模型上下文协议(MCP)服务器,使 AI 智能体能够便捷地调用外部工具和服务。
- 关键组件:包含
mcp-router、jsonrpc-converter过滤器以及预置的 MCP 服务器实现(如quark-search,amap-tools)。
Kubernetes Ingress(传统 API 网关)
- 功能:作为 K8s Ingress 控制器使用,兼容 Nginx Ingress 注解,支持微服务路由。
总结: Higress 是一个将传统流量管理与 AI 能力深度融合的下一代网关,既满足了微服务治理需求,又针对 LLM 接入和 AI Agent 工具调用提供了原生支持。
评论
总体判断
Higress 是阿里云开源的下一代“AI 原生”网关,它不仅是基于 Istio 和 Envoy 的云原生 API 网关,更是目前业界将 LLM(大模型)流量管理与传统微服务治理融合得最彻底的网关之一。它成功地将“流量治理”的概念从 HTTP 请求延伸到了 AI Token 粒度,是构建企业级 AI 应用基础设施的强力候选。
深入评价依据
1. 技术创新性:从“流量网关”向“AI 编排网关”的范式转移
- 事实:Higress 定义为“AI Native API Gateway”,核心功能之一是提供 AI Gateway 特性用于 LLM 应用,并支持 MCP (Model Context Protocol) Server 托管。
- 推断:传统网关(如 Nginx, Kong)主要关注 HTTP 7层转发,而 Higress 创新性地将 AI 交互协议(如 OpenAI 协议)内置为一等公民。它不仅仅是透传请求,更在协议层实现了语义理解与路由。例如,它能够识别 Prompt 内容,根据用户意图动态路由到不同的模型(如成本敏感型路由到 Llama,复杂任务路由到 GPT-4),这种“内容感知”的网关能力是极具差异化的技术突破。
2. 实用价值:解决 AI 落地中的“连接”与“成本”痛点
- 事实:文档指出其核心功能包括 AI 网关特性、MCP 服务器托管以及 K8s Ingress。
- 推断:在当前 AI 落地中,企业面临两大痛点:一是模型供应商碎片化(需要对接 OpenAI、通义千问、Ollama 等);二是 Token 成本高昂。Higress 的实用价值在于它充当了标准化的 AI 中控台。通过统一接口,它屏蔽了底层 MaaS(Model as a Service)的差异,并允许企业通过配置实现 Token 限流、缓存和 Key 管理而不需要修改业务代码。这种“非侵入式”的 AI 基础设施升级,极大地降低了企业试错和迁移成本。
3. 代码质量与架构:云原生最佳实践的集大成者
- 事实:项目基于 Go 语言开发,架构上分离了控制面与数据面,并深度集成了 Istio 和 Envoy。
- 推断:选择 Go 语言并基于 Envoy 作为数据面是高性能网关的黄金标准。控制面与数据面分离的设计不仅保证了高可用性,也便于在 K8s 环境中进行动态配置下发。从架构设计来看,Higress 继承了 Envoy 的高性能(L3/L4/L7 处理)和 Istio 的服务治理能力,代码结构清晰,符合云原生社区的标准规范。其文档的多语言支持(README_ZH, README_JP)也体现了项目维护的严谨性和国际化视野。
4. 学习价值:WASM 插件生态的教科书式应用
- 事实:DeepWiki 提到系统扩展了 WebAssembly (WASM) 插件能力。
- 推断:对于开发者而言,Higress 是学习**“网关可编程性”**的绝佳案例。传统的 Lua 插件(如 OpenResty)存在内存安全和隔离性问题,而 Higress 利用 WASM 实现了沙箱级别的插件扩展。这意味着开发者可以使用 C++/Go/Rust/AssemblyScript 甚至 JavaScript(通过代理)编写插件,而无需担心网关核心进程的稳定性。这种架构为处理复杂的 AI 逻辑(如 Prompt 注入检测、敏感词过滤)提供了极高的灵活性和安全性。
5. 潜在问题与改进建议
- 推断:尽管功能强大,但 Higress 的部署复杂度相对较高。相比于简单的 Nginx 反向代理,引入 Istio/Envoy 栈对运维团队的 K8s 水平提出了更高要求。此外,作为新兴项目,其 AI 特性的生产级大规模实践案例文档(如具体的 Token 缓存命中率分析、超长连接处理细节)尚不如传统网关丰富。建议团队在后续版本中提供更多关于“AI 流量治理”的可观测性最佳实践。
6. 对比优势:Kong/APISIX 的强力挑战者
- 推断:与 Kong 或 APISIX 相比,Higress 最大的优势在于**“AI 原生”的基因和“云原生”的血统**。Kong 和 APISIX 虽然也通过插件支持 AI,但更多是“事后补救”;而 Higress 是将 AI 能力写入底层架构设计(如对 SSE 流式传输的优化、MCP 协议的原生支持)。对于已经深度使用 Istio 的企业,Higress 几乎是零成本接入;而对于需要构建 AI Agent 编排能力的团队,其对 MCP 的支持更是其他网关目前不具备的独特优势。
边界条件与不适用场景
- 不适用场景:
- 极简边缘场景:如果只需在单台服务器上做简单的反向代理,Higress 的资源开销(基于 K8s/Envoy)显得过重,Nginx 或 Caddy 更合适。
- 非云原生环境:如果基础设施未容器化或未使用 K8s,部署 Higress 将非常痛苦。
快速验证清单
技术分析
Higress 深度技术分析报告
基于提供的仓库信息及对阿里云 Higress 开源项目的深度了解,以下是对 alibaba/higress 的全面技术分析。
1. 技术架构深度剖析
技术栈与架构模式
Higress 的核心定位是云原生 AI 网关。其架构并非从零构建,而是站在巨人的肩膀上,采用了控制平面与数据平面分离的架构模式。
- 底层基石:深度集成了 Envoy 作为高性能数据平面,利用其 C++ 的高并发处理能力和 L3/L7 网络功能。
- 控制平面:基于 Istio 生态进行了大幅简化和增强。它抛弃了 Istio 中繁重的 Sidecar 模式,专注于 Gateway(Ingress)场景。
- 扩展机制:引入 WebAssembly (WASM) 作为一等公民。这是 Higress 架构中最关键的一环,允许使用 C/C++/Go/Rust/JavaScript 等多种语言编写插件,并在 Envoy 的沙箱中运行。
核心模块与关键设计
- 配置分发:通过 xDS 协议(包括 LDS, CDS, RDS 等)将配置推送到数据平面。Higress 对此进行了优化,实现了毫秒级的配置热更新,且不断连。
- WASM 虚拟机:在 Envoy 中嵌入 WASM 运行时,使得逻辑扩展无需重新编译网关二进制文件,也无需重启网关进程。
- MCP (Model Context Protocol) Server:针对 AI 场景,Higress 内置了 MCP 协议支持,允许 AI Agent 通过网关安全地访问外部工具和数据源。
架构优势分析
- 极致性能:数据平面基于 Envoy C++,相比基于 Nginx + Lua(如 OpenResty)的方案,多线程并发模型更现代,内存管理更安全,且避免了 Lua 协程阻塞带来的性能抖动。
- 标准化与云原生:完全兼容 Kubernetes Ingress API 和 Gateway API,天然适配 K8s 生态,降低了迁移和运维成本。
- 安全性隔离:WASM 插件运行在资源受限的沙箱中,单个插件的崩溃不会导致整个网关进程崩溃,且提供了严格的内存和 CPU 限制。
2. 核心功能详细解读
主要功能与使用场景
- AI 网关:
- 功能:提供统一的 LLM(大语言模型)接入层,支持 token 计费、请求重试、流式响应处理、Prompt 模板管理。
- 场景:企业内部构建 AI 应用(如 Copilot)时,屏蔽底层模型差异(OpenAI/通义千问/文心一言),统一管理 API Key 和配额。
- MCP 协议托管:
- 功能:作为 MCP Server 的托管点,AI Agent 可以通过 Higress 连接到各种外部数据源。
- 场景:解决 AI Agent 访问企业内网数据库或私有 API 的安全连接问题。
- 传统 API 网关:
- 功能:流量路由、负载均衡、认证鉴权(JWT/OIDC)、限流熔断。
- 场景:微服务架构下的南北向流量入口管理。
解决的关键问题
- AI 流式处理的非标性:传统网关对 HTTP 请求通常是 Buffer 完后再转发,这在 AI 流式响应(SSE/Stream)中会导致巨大的延迟。Higress 原生支持流式透传,优化了首字生成时间(TTFT)。
- 模型厂商锁定:通过统一的 Provider 抽象,用户只需调用 Higress 的标准接口,后端可随时切换模型供应商,代码零改动。
与同类工具对比
| 特性 | Higress | APISIX (OpenResty) | Kong | Nginx |
|---|---|---|---|---|
| 语言 | Go (控制) + C++ (数据) | Lua + C | Lua + C | C + Lua |
| 性能 | 极高 (多线程) | 高 (事件驱动,但有 Lua 阻塞风险) | 中高 | 高 |
| 扩展性 | WASM (多语言) | Lua (主要) / Plugin Go | Lua / Go | C / Lua |
| AI 特性 | 原生支持 (Token管理, MCP) | 需插件适配 | 需插件适配 | 无 |
| K8s 集成 | 原生 CRD | 支持 | 支持 | 需 Ingress Controller |
3. 技术实现细节
关键技术方案
- WASM 插件加载器:Higress 实现了一套复杂的 WASM 插件生命周期管理。它支持插件的动态加载、卸载和热更新。
- 实现原理:通过 Envoy 的
http_filters配置 WASM VM,并将编译好的.wasm文件挂载到 Pod 中或通过远程 HTTP 服务拉取。
- 实现原理:通过 Envoy 的
- AI 代理的流式处理:
- 在处理 LLM 请求时,Higress 需要解析 SSE (Server-Sent Events) 格式。它通过流式过滤器逐字符/逐块解析数据,并在不破坏流的前提下进行诸如“敏感词过滤”或“Token 计数”的操作。
代码组织与设计模式
- Repository 结构:典型的 Go Monorepo 结构。
pkg目录下包含核心控制平面逻辑(配置解析、xDS 转换),plugin目录包含 WASM SDK 和示例插件。 - 设计模式:
- Operator Pattern:利用 Kubernetes 的 CRD 和 Controller 模式来监听资源变化,并转化为 Envoy 配置。
- Adapter Pattern:在 AI 网关模块中,将不同厂商的 API(OpenAI 格式 vs 通义千问格式)适配为统一的内部协议。
性能优化与扩展性
- 配置全量下发与增量更新:Higress 的控制平面经过优化,能够智能计算配置差异,仅通过 xDS 下发变更的配置部分,减少网络开销和 Envoy 的内存压力。
- WASM 性能调优:虽然 WASM 有编译开销,但 Higress 支持 AOT (Ahead-of-Time) 编译缓存,并建议在 Go 中处理复杂逻辑,WASM 中仅处理流量控制逻辑,以降低延迟。
4. 适用场景分析
适合使用的项目
- 大模型应用开发:如果你的应用直接调用 OpenAI 或阿里云百炼 API,且需要处理鉴权、限流、Prompt 模板注入,Higress 是最佳中间层。
- Kubernetes 集群入口:对于已经在使用 Istio 或 K8s 的团队,Higress 提供了比 Nginx Ingress Controller 更强大的功能(如基于 gRPC 的路由、WAF 插件)。
- 微服务 API 治理:需要多语言插件扩展(例如用 Go 写一个复杂的签名算法插件,用 Rust 写一个高性能的限流插件)的场景。
不适合的场景
- 极简静态网站托管:如果是纯粹的静态资源服务,Nginx 或 Caddy 更轻量,Higress 的架构过于厚重。
- 边缘计算/端侧网关:Envoy 的资源消耗对于边缘设备(如 Raspberry Pi)来说可能过高,此时应考虑 Caddy 或 OpenResty 轻量版。
集成注意事项
- 资源规划:由于 WASM 运行时和 Envoy 本身消耗内存较大,建议给 Higress Pod 分配至少 2Gi 内存,并开启 HPA(自动水平伸缩)。
- WASM 插件复杂度:避免在 WASM 插件中进行阻塞式网络调用(如直接请求第三方 API),这会阻塞 Envoy 的工作线程,导致吞吐量暴跌。应使用异步过滤器或 Go 扩展。
5. 发展趋势展望
技术演进方向
- AI Native 深度融合:未来将不仅仅是转发请求,可能会内置 RAG(检索增强生成)的向量检索网关,直接在网关层完成文档切片与向量库查询。
- MCP 协议的标准化:随着 AI Agent 的普及,Higress 有望成为企业内部 MCP Server 的标准路由器,管理 Agent 的工具调用权限。
社区与改进空间
- 控制平面性能:在大规模 K8s 集群(数千个 Service)下,控制面的配置处理延迟仍有优化空间。
- WASM 生态:目前 WASM 插件的开发调试体验相比传统脚本仍有门槛,需要更强大的 IDE 支持和调试工具。
6. 学习建议
适合的开发者
- 具备 Kubernetes 基础,了解 Ingress/Gateway API。
- 对云原生网关、微服务治理有需求的后端工程师。
- 关注 AI 应用落地,需要解决 LLM 接入痛点的架构师。
学习路径
- 入门:使用 Docker 或 Helm Chart 部署 Higress,配置一个简单的路由转发。
- 进阶:尝试配置 AI 网关,接入一个真实的 LLM 模型,体验 Provider 和 Prompt Template 的配置。
- 高阶:使用 Go 或 Rust 编写一个自定义 WASM 插件,实现自定义的请求头处理或鉴权逻辑。
7. 最佳实践建议
正确使用指南
- 利用 WASM 进行业务逻辑隔离:不要修改 Higress 的核心镜像。所有的业务定制(如特殊的加解密、请求改写)都应通过 WASM 插件实现,以便于版本升级。
- AI 流量保护:在 AI 网关配置中,务必开启“并发限制”和“Token 限流”,防止后端模型 API 被突发流量击穿导致高额账单。
常见问题与性能优化
- 问题:WASM 插件导致延迟增加。
- 解决:检查插件中是否有密集计算或内存分配。考虑将复杂逻辑移至 Go 侧的 External Processing(gRPC Service)模式,WASM 仅做快速过滤。
- 优化:开启 Envoy 的 Connection Pooling 和 HTTP/2 (HTTP/3) 支持,这对于连接 LLM 服务的延迟至关重要。
8. 哲学与方法论:第一性原理与权衡
抽象层与复杂性转移
Higress 在抽象层上做了一个大胆的决定:将“流量治理”与“业务逻辑”通过 WASM 边界进行了物理隔离。 它将复杂性从“运维修改 Nginx.conf”转移到了“开发者编写 WASM 代码”和“运维管理 K8s CRD”
代码示例
| |
| |
| |
案例研究
1:阿里巴巴内部电商业务
1:阿里巴巴内部电商业务
背景:
阿里巴巴内部电商业务规模庞大,涉及数百万个API请求和复杂的微服务调用链路。随着业务全球化,流量管理和服务治理的复杂度显著增加。
问题:
- 传统API网关难以应对高并发流量,性能瓶颈明显。
- 多语言、多协议的服务调用导致治理成本高,缺乏统一的流量控制和安全策略。
- 云原生架构下,需要与Kubernetes深度集成,但现有工具兼容性不足。
解决方案:
基于Higress构建下一代云原生API网关,利用其高性能(基于C++和Rust实现)和可扩展性,整合流量管理、安全防护和服务治理功能。通过Higress的插件生态,支持动态路由、限流熔断和灰度发布,并与Istio服务网格无缝协同。
效果:
- 处理能力提升至单节点10万QPS,延迟降低50%。
- 统一了跨业务线的API治理标准,运维效率提升40%。
- 支持业务快速迭代,灰度发布周期从天级缩短至小时级。
2:某跨国金融科技公司
2:某跨国金融科技公司
背景:
该公司为全球客户提供跨境支付服务,系统需满足不同地区的合规要求(如GDPR、PCI-DSS),并对接数十家第三方银行API。
问题:
- 各地区API接口标准不一,适配工作繁重。
- 需要实时监控异常交易,但传统网关的规则引擎灵活性不足。
- 混合云架构下,跨地域流量调度复杂。
解决方案:
部署Higress作为统一API入口,通过其Wasm插件能力实现动态合规检查(如数据脱敏、地域访问控制)。结合Higress的负载均衡算法,智能调度跨云流量,并集成Prometheus和Grafana进行实时监控。
效果:
- 合规适配开发量减少60%,通过插件热更新实现秒级策略调整。
- 跨区域请求响应时间优化30%,支付成功率提升至99.99%。
- 安全事件响应时间从小时级降至分钟级。
3:某在线教育平台
3:某在线教育平台
背景:
该平台在疫情期间用户量激增10倍,核心业务(直播课、作业提交)依赖第三方SaaS服务,且需应对突发流量。
问题:
- 突发流量导致第三方API调用失败率飙升,影响用户体验。
- 缺乏统一的错误重试和降级机制,开发团队需频繁手动干预。
- 成本敏感,需优化第三方API调用费用。
解决方案:
使用Higress的流量治理功能,配置自动重试、超时控制和基于响应码的熔断策略。通过Higgress的请求/响应转换插件,统一第三方API调用格式,并启用缓存减少重复请求。
效果:
- 第三方API失败率从5%降至0.1%,用户投诉减少80%。
- 缓存命中率提升至40%,月度API调用成本降低25%。
- 运维团队手动干预频率从每日多次降至每周1次。
对比分析
与同类方案对比
| 维度 | Alibaba Higress | Kong | APISIX |
|---|---|---|---|
| 性能 | 基于Envoy和Istio,高性能,支持高并发 | 基于OpenResty,性能较高,但略低于Envoy | 基于OpenResty,性能与Kong相当 |
| 易用性 | 提供图形化控制台,集成K8s Ingress,配置简单 | 提供图形化控制台,但配置较复杂 | 提供图形化控制台,配置灵活但学习曲线陡峭 |
| 成本 | 开源免费,云服务按需付费 | 开源免费,企业版收费 | 开源免费,企业版收费 |
| 扩展性 | 支持Wasm插件,扩展性强 | 支持Lua插件,扩展性一般 | 支持Lua和Go插件,扩展性强 |
| 社区支持 | 阿里背书,社区活跃 | 社区成熟,插件丰富 | 社区活跃,国内支持较好 |
| 安全性 | 集成WAF插件,安全性较高 | 需额外配置安全插件 | 需额外配置安全插件 |
优势分析
- 优势1:基于Envoy和Istio,性能和扩展性优于传统网关。
- 优势2:提供图形化控制台和K8s Ingress集成,易用性较高。
- 优势3:支持Wasm插件,扩展性强,适合复杂场景。
不足分析
- 不足1:社区和生态相比Kong和APISIX尚不成熟。
- 不足2:文档和案例较少,学习成本较高。
- 不足3:云服务绑定阿里云,多云部署可能受限。
最佳实践
最佳实践指南
实践 1:基于云原生架构的流量网关部署
说明:
Higress 是基于阿里云内部实践和 Istio 开源项目构建的云原生 API 网关。最佳实践是将其作为 Kubernetes 集群的 Ingress Controller 或 API Gateway 部署,利用其与 K8s 的深度集成能力,实现服务发现、负载均衡和流量管理的自动化。
实施步骤:
- 使用 Helm Chart 在 Kubernetes 集群中部署 Higress。
- 配置 Higress 监听特定 Ingress Class,确保与集群内其他 Ingress Controller 共存。
- 通过 Kubernetes CRD(如 Gateway, VirtualService)定义路由规则。
注意事项:
确保 Kubernetes 集群版本兼容(建议 v1.19+),并为 Higress Controller 分配足够的资源(CPU/内存)以处理高并发流量。
实践 2:插件化扩展安全与流量治理能力
说明:
Higress 提供了类似 Envoy 的 Wasm 插件机制,支持 Lua、Wasm (Rust/Go/AssemblyScript) 等语言编写插件。最佳实践是利用此机制实现自定义认证、限流、日志记录或请求修改逻辑,而无需修改网关核心代码。
实施步骤:
- 开发或从社区获取预编译的 Wasm 插件。
- 将插件上传至 Higress 的插件中心或配置为 OCI 镜像。
- 在特定路由或全局范围内应用并配置插件参数。
注意事项:
Wasm 插件运行在沙箱中,但编写不当的代码仍可能增加延迟。需对插件性能进行压测,并限制其内存和 CPU 使用。
实践 3:多协议支持与 gRPC 服务治理
说明:
Higress 原生支持 HTTP、HTTPS 以及 HTTP/2(gRPC)。对于微服务架构,最佳实践是直接使用 Higress 进行 gRPC 服务的代理和路由,利用其协议转换能力将 gRPC 请求转换为 HTTP/JSON,方便前端或第三方调用。
实施步骤:
- 定义 gRPC 服务并部署到 K8s。
- 在 Higress 中配置服务来源,指定端口为 gRPC 协议。
- 创建路由规则,匹配 gRPC 方法(如
/helloworld.Greeter/SayHello)。 - 如需协议转换,配置
grpc-json转码插件。
注意事项:
gRPC 流量对连接管理要求较高,需确保 Higress 的长连接配置和后端服务的健康检查策略正确。
实践 4:全面的可观测性集成
说明:
生产环境必须具备完整的可观测性。Higress 内置了 Prometheus 盬控指标支持,并能对接 OpenTelemetry 进行链路追踪。最佳实践是将 Higress 的监控数据接入现有的 APM 系统,实时监控网关性能(QPS、延迟、错误率)。
实施步骤:
- 启用 Higress 的 Prometheus Stats 插件。
- 配置 ServiceMonitor 或 Prometheus 抓取规则。
- 开启 AccessLog 并输出至 stdout 或日志系统(如 Loki/SLS)。
- 配置 Tracing 透传,确保 TraceId 在网关层正确生成或传递。
注意事项:
在高流量场景下,全量日志记录可能会产生大量存储开销。建议采用采样记录(如仅记录 4xx/5xx 请求)或使用高性能日志侧车。
实践 5:服务注册中心的动态对接
说明:
Higress 能够无缝对接主流服务注册中心(如 Nacos, Consul, ZooKeeper, Eureka)。最佳实践是让 Higress 直接从注册中心动态获取服务列表,实现自动化的服务发现和故障摘除,避免手动维护后端 IP 列表。
实施步骤:
- 在 Higress 配置中添加对应类型的注册中心来源。
- 配置注册中心的连接地址(如 Nacos namespace/group)。
- 在路由配置中直接引用服务名,而非具体 IP。
注意事项:
确保 Higress 与注册中心之间的网络连通性,并关注注册中心的变更推送延迟,防止流量转发至已下线的实例。
实践 6:金丝雀发布与蓝绿部署
说明:
利用 Higress 强大的路由分流能力,实现服务的平滑升级。最佳实践是使用基于 Header 或权重的路由规则,将特定比例的流量引导至新版本服务,以降低发布风险。
实施步骤:
- 部署新版本服务,并确保其已注册到服务发现。
- 在 Higress 中创建基于权重的路由规则(如 90% 流量走 V1,10% 流量走 V2)。
- 观察新版本服务的错误率和延迟。
- 逐步调整权重直至 100%,并下线旧版本。
注意事项:
确保流量切换期间,后端
性能优化建议
性能优化建议
优化 1:启用高性能 WASM 插件运行时
说明: Higress 默认支持 WASM (WebAssembly) 插件,相比传统的 Lua 脚本,WASM 提供了接近原生的执行效率和更好的隔离性。使用 AOT (Ahead-of-Time) 编译的 WASM 插件可以显著降低请求处理的 CPU 开销。
实施方法:
- 将现有的 Lua 脚本逻辑使用 Rust 或 C++ 重写,并编译为 WASM 文件。
- 在 Higress 控制台或通过
WasmPluginCRD 部署编译好的.wasm文件。 - 确保启用 Higress 的 WASM 核心加速特性(如启用
wasm滤波器)。
预期效果: 复杂逻辑处理延迟降低 30%-50%,吞吐量(QPS)提升 20% 左右。
优化 2:配置全链路 HTTP/2 与 HTTP/3 (QUIC)
说明: Higress 基于 Envoy,对 HTTP/2 和 HTTP/3 有极佳的支持。启用 HTTP/2 可以利用多路复用减少 TCP 连接数,降低握手开销;开启 HTTP/3 (QUIC) 则能在高丢包环境下显著提升连接建立速度和传输稳定性。
实施方法:
- 在监听器配置中,将协议类型设置为
HTTP/2或HTTP/3。 - 对于 HTTP/3,需确保网关节点已正确配置 UDP 端口(通常端口为 443)的防火墙和安全组规则。
- 调整 HTTP/2 的并发流限制以匹配业务需求。
预期效果: 高并发场景下 TCP 连接数减少 60%,弱网环境下的请求延迟降低 40%。
优化 3:启用 DNS 缓存与自定义 DNS 解析器
说明: 默认的 DNS 解析可能会成为高频调用外部服务时的性能瓶颈。通过配置 Higress (Envoy) 的 DNS 缓存,可以减少对外部 DNS 服务器的频繁查询,防止因 DNS 解析延迟导致的请求阻塞。
实施方法:
- 在集群配置中设置
dns_resolvers,指定高性能的 DNS 服务器(如内部 CoreDNS 或 114.114.114.114)。 - 配置
dns_lookup_family为V4_PREFERRED或V6_PREFERRED以减少双栈解析开销。 - 调整
dns_refresh_rate和dns_hosts_file配置,利用本地/etc/hosts进行静态解析。
预期效果: 消除因 DNS 查询导致的偶发尖刺延迟,后端服务发现耗时降低至 1ms 以内。
优化 4:精细化配置连接池与熔断策略
说明: 不合理的连接池配置会导致后端服务负载过高或连接数耗尽。通过调整 Higress 的 Upstream 连接池参数,可以优化与后端服务的交互效率,并利用熔断机制快速剔除不健康的实例。
实施方法:
- 根据后端服务能力,合理设置 HTTP 连接池大小(
http2_protocol_options.max_concurrent_streams或max_connections)。 - 启用并调优主动健康检查(
active_health_check)和被动健康检查(outlier_detection)。 - 设置合理的
success_rate_minimum_hosts和failure_percentage_threshold,防止误判。
预期效果: 后端服务连接利用率提升 30%,故障转移时间缩短至秒级,整体系统可用性提升至 99.99%。
优化 5:优化日志采样与异步上报
说明: 在高流量场景下,同步记录详细的访问日志会严重消耗 I/O 和 CPU 资源。通过减少日志详细程度、开启采样或使用异步上报(如对接 Kafka/SLS),可以极大释放网关处理能力。
实施方法:
- 修改日志格式,移除不必要的 Header 或 Body 记录,仅保留
学习要点
- 基于对 Alibaba Higress 项目背景及特性的分析,总结关键要点如下:
- Higress 是阿里云开源的、基于 Istio 构建的下一代云原生 API 网关,旨在解决云原生时代流量治理与入口管理的复杂性问题。
- 它深度集成了 K8s Ingress 与 Gateway API 标准,能够无缝对接 Kubernetes 生态,实现从传统微服务到云原生架构的平滑过渡。
- 该网关将高流量场景下的最佳实践产品化,提供了开箱即用的流量管控、安全防护和插件扩展能力,显著降低了使用门槛。
- Higress 兼容 Nginx Ingress 注解及 Envoy 配置,支持用户以极低的迁移成本从 Nginx 或传统网关进行升级。
- 它支持 WASM (WebAssembly) 技术,允许开发者使用 C/C++、Go、Rust 等多种语言编写高性能、热加载的扩展插件。
- 架构上实现了控制面与数据面的分离,支持将 K8s 服务注册发现与 Nacos、Consul 等传统注册中心进行统一融合。
学习路径
学习路径
阶段 1:入门基础
学习内容:
- 理解云原生网关的基本概念与Higress的定位
- 掌握Higress的核心架构与组件(Ingress Controller、Gateway)
- 学习基本术语:路由、服务、插件、Upstream
- 完成本地环境搭建(Docker Desktop或Kubernetes集群)
- 通过控制台进行简单的流量路由配置(如K8s Ingress资源转换为Higress路由)
学习时间: 1-2周
学习资源:
- Higress GitHub 官方仓库 README
- Higress 官方文档 - 快速开始章节
- Higress 官方文档 - 核心概念
学习建议: 建议先从宏观上理解Higress作为云原生API网关与传统Nginx、Ingress Controller的区别。不要急于编写复杂配置,先通过官方提供的Docker Compose或Helm Chart成功部署一个Hello World示例服务,并成功通过网关访问。
阶段 2:核心功能与流量治理
学习内容:
- 深入学习流量路由规则:基于Header、Query参数、Cookie、URI的路由匹配
- 掌握服务管理:服务来源注册(K8s Service、Nacos、固定IP)、健康检查
- 学习负载均衡策略:加权轮询、一致性哈希等
- 理解并配置全局限流与熔断降级规则
- 学习金丝雀发布和蓝绿发布的流量配置
- 基础插件的使用与配置(如:请求鉴权、重定向、请求头修改)
学习时间: 2-3周
学习资源:
- Higress 官方文档 - 流量管理
- Higress 官方文档 - 插件市场
- Higress 官方示例 - Wasm插件开发入门
学习建议: 此阶段重点在于“流量搬运”。尝试搭建一个包含两个版本(v1/v2)的后端服务,利用Higress配置基于Header的灰度发布。同时,尝试配置限流策略,使用压测工具(如Apache Bench)验证限流效果。
阶段 3:安全、可观测性与高可用
学习内容:
- 网关安全配置:HTTPS证书管理、mTLS双向认证、JWT认证、OIDC
- 访问控制:IP黑白名单、基于角色的访问控制(RBAC)
- 可观测性集成:对接Prometheus监控、接入SkyWalking/Zipkin链路追踪、配置日志服务(SLS/Stdout)
- 高可用部署:多副本部署、HPA自动扩缩容配置
- 理解Higress的热更新机制与配置回滚
学习时间: 2-3周
学习资源:
- Higress 官方文档 - 安全配置
- Higress 官方文档 - 可观测性
- Higress GitHub Discussions - 运维实践
学习建议: 安全是网关的重中之重。建议在本机生成自签名证书,练习配置HTTPS路由。对于可观测性,推荐先从Prometheus集成开始,尝试在Grafana中导入Higres的仪表盘模板来监控QPS、延迟和成功率。
阶段 4:插件开发与深度定制
学习内容:
- 理解Wasm(WebAssembly)在网关中的应用场景与优势
- 学习Wasm插件开发基础:使用Go或Rust编写简单的Wasm插件
- 掌握插件生命周期管理:配置注入、请求/响应处理阶段
- 学习在控制台或通过K8s资源管理插件
- 探索Higress的配置源(如Nacos、K8s CRD)与数据面同步机制
- 参与开源社区:阅读源码、提交Issue、尝试修复Bug
学习时间: 3-4周
学习资源:
- Higress 官方文档 - Wasm插件开发指南
- Higress GitHub - /plugins 目录下的示例代码
- Envoy Proxy 官方文档 - Wasm相关部分(Higress基于Envoy)
学习建议:
这是从“使用者”向“开发者”转变的关键阶段。建议从修改官方现有的简单插件(如request-block)开始,熟悉Wasm的上下文API。如果熟悉Go语言,推荐使用tinygo进行编译和调试。
阶段 5:生产级实战与架构优化
学习内容:
- 生产环境性能调优:连接池配置、缓冲区大小、CPU/内存资源限制
- 大规模流量场景下的网关集群规划与压测
- 多集群/混合云架构下的网关部署策略
- 与服务网格(如Istio、Envoy Gateway)的协同与对比
- 定制化控制台开发与企业级认证集成(如OAuth2/OIDC对接企业IdP)
- 复杂业务场景下的综合解决方案设计(
常见问题
1: Higress 是什么?它与 Nginx 或 Kong 等网关相比有什么区别?
1: Higress 是什么?它与 Nginx 或 Kong 等网关相比有什么区别?
A: Higress 是一款基于阿里内部两年多的网关实践经验,由阿里云连同开源社区共同开源的云原生 API 网关。它建立在 Envoy 和 Istio 之上,旨在处理南北向(API 管理)和东西向(服务网格)流量。
与 Nginx 或 Kong 等传统网关相比,Higress 的主要区别在于:
- 架构基础:Nginx 基于 C/Nginx 开发,Kong 基于 Nginx 和 OpenResty,而 Higress 深度集成了 Envoy 作为高性能数据平面,并利用 Istio 进行控制平面管理。
- 云原生集成:Higress 原生支持 Kubernetes 和 Istio 服务网格,可以无缝接管 Ingress 流量,而传统网关通常需要额外的适配层。
- 扩展性:Higress 支持 Wasm (WebAssembly) 插件,允许开发者使用多种语言(如 Go, C++, Rust)编写插件,且插件热更新更灵活,无需重启网关。
- 标准化:它完全支持 Kubernetes Ingress API 和 Gateway API,符合云原生标准。
2: Higress 是否兼容 Nginx 的配置?迁移成本高吗?
2: Higress 是否兼容 Nginx 的配置?迁移成本高吗?
A: Higress 提供了一定程度的 Nginx 兼容性,旨在降低迁移门槛。
- 配置转换:Higress 内置了 Nginx Ingress 注解的支持,并且官方提供了工具(如
nginx2higress)来帮助将 Nginx 的配置规则转换为 Higress 的路由配置。 - 脚本支持:虽然核心数据平面是 Envoy,但 Higress 为了兼容性,支持在特定场景下运行 Lua 脚本(通过兼容 OpenResty 的部分机制),或者推荐将原有的 Lua 逻辑重写为 Wasm 插件。
- 迁移成本:对于标准的 HTTP/HTTPS 路由、反向代理和负载均衡配置,迁移成本较低。主要的工作量通常在于将定制的 Lua 模块或复杂的 Nginx 配置逻辑转换为 Higress 的原生插件或 Wasm 插件。
3: Higress 如何处理插件扩展?是否支持热加载?
3: Higress 如何处理插件扩展?是否支持热加载?
A: 插件系统是 Higress 的核心优势之一。
- Wasm 支持:Higress 原生支持 WebAssembly (Wasm)。这意味着开发者可以使用 Go、C++、Rust 或 AssemblyScript 编写插件逻辑,编译成
.wasm文件后上传。 - 热加载:基于 Wasm 的插件支持动态热加载。你可以在不重启 Higress 网关实例的情况下更新、启用或禁用插件。这对于保证生产环境的高可用性至关重要。
- 插件市场:Higress 社区提供了丰富的预置插件(如 Key Auth、JWT Auth、限流、熔断等),用户可以直接在控制台配置启用,无需编写代码。
4: 在高并发场景下,Higress 的性能表现如何?
4: 在高并发场景下,Higress 的性能表现如何?
A: Higress 具备极高的性能表现,能够满足企业级高并发需求。
- 底层优势:Higress 的数据平面基于 Envoy。Envoy 使用 C++ 编写,采用异步非阻塞 I/O 模型,经过高度优化,处理长连接和海量请求的能力非常强。
- 基准测试:在官方提供的基准测试中,Higress 在处理 HTTP 请求时的吞吐量和延迟表现优异,能够媲美甚至超越许多基于 Nginx 的商业网关。
- 资源消耗:得益于 Envoy 的高效内存管理,Higress 在处理大量并发连接时,内存和 CPU 的占用率相对平稳。
5: Higress 支持哪些服务发现机制?如何对接 Kubernetes 或 Nacos?
5: Higress 支持哪些服务发现机制?如何对接 Kubernetes 或 Nacos?
A: Higress 设计为云原生友好,支持多种服务发现方式:
- Kubernetes Service:这是最基础的用法。Higress 会自动监听 Kubernetes 的 Service 变化,将请求路由到对应的 Pod。
- Nacos:Higress 对接了 Nacos 注册中心。用户可以在控制台配置 Nacos 服务地址,Higress 会自动同步 Nacos 上的服务列表,实现微服务之间的流量调度,这对于使用 Spring Cloud 或 Dubbo 的用户非常友好。
- DNS / 固定地址:也支持通过 DNS 解析或直接配置 IP:Port 列表的方式来定义上游服务。
- Istio ServiceEntry:如果运行在 Istio 环境中,Higress 还能识别 ServiceEntry 定义的外部服务。
6: Higress 是否支持全链路灰度发布(金丝雀发布)?
6: Higress 是否支持全链路灰度发布(金丝雀发布)?
A: 是的
思考题
## 挑战与思考题
### 挑战 1: [简单]
问题**: 快速部署与路由验证
假设你有一个运行在 localhost:8080 的后端服务(例如一个简单的 Python Flask 或 Node.js 应用)。请编写一个 Higress 的 Ingress 配置文件,将访问网关 /hello 路径的流量转发到该后端服务,并验证请求头中是否包含特定的 Host 字段。
提示**: 参考 Higress 官方文档中的 “Ingress” 或 “Gateway API” 配置章节。你需要定义一个 Ingress 资源,并在 spec.rules 中配置 http.paths。注意 backend.service 的名称和端口需要与你的本地服务对应(如果是在本地 Docker 环境测试,可能需要使用 ExternalName Service 或特定的 hostAlias)。
实践建议
以下是针对 Higress(阿里云开源的 AI Native API 网关)的 6 条实践建议,涵盖了从流量接入、模型管理到生产环境运维的各个关键环节:
1. 利用 Wasm 插件实现“模型中立”的协议转换
- 场景:当你需要同时对接 OpenAI 格式的应用(如 LangChain)和非 OpenAI 格式的大模型(如通义千问、文心一言或本地部署的 Llama 3)时。
- 建议:不要在应用代码中处理不同厂商的 API 差异。直接使用 Higress 提供的
ai-proxy插件。 - 操作:在网关层面配置路由,将标准化的 OpenAI 协议请求转换为特定厂商的协议格式。这样你的业务代码只需调用一套标准的 OpenAI SDK,后续接入新模型或切换模型版本时,只需在网关后台修改配置,无需重新发布业务应用。
2. 配置“语义路由”以降低 Token 消耗和延迟
- 场景:你的应用有多个功能分支(例如:查询天气、查询库存、智能客服),传统做法是先发给大模型让其判断意图,再分发到后端服务。
- 建议:利用 Higress 的 AI 语义路由 功能。
- 操作:在网关层配置基于向量数据库或本地语义匹配的路由规则。当用户请求到达时,网关直接根据语义将其转发给对应的后端服务(如 Python 脚本或 API),而不是先经过昂贵的大模型处理。这能显著减少无效的 Token 消耗并降低端到端延迟。
3. 实施细粒度的 Token 预算与限流策略
- 场景:大模型 API 调用成本高昂,且容易受到恶意或异常的高频请求冲击。
- 建议:不要仅依赖传统的 QPS(每秒请求数)限流,必须实施基于 Token 或 Request Count 的后端限流。
- 操作:针对不同的 API Key 或租户配置不同的配额。例如,为测试用户设置每天 10 万 Token 的上限,为 VIP 用户设置更高的并发限制。在 Higress 的插件市场中配置
token-limiter或类似插件,防止因后端模型突发计费导致成本失控。
4. 建立模型级故障转移与降级机制
- 场景:单一模型提供商(如 OpenAI 或某云厂商)服务不可用,或响应超时,导致整个业务中断。
- 建议:配置多模型容灾策略。
- 操作:在
ai-proxy插件中配置 fallback(回退)模型。例如,主模型配置为 GPT-4,当网关检测到其返回 5xx 错误或超时时,自动将请求切换至 GPT-3.5 或其他备用模型(如本地 Qwen 模型)。确保在配置时调整好超时时间,避免让用户等待过久才触发切换。
5. 敏感数据脱敏与审计
- 场景:企业内部数据通过网关传输给公有大模型,存在数据泄露风险;或需要排查调用失败的具体原因。
- 建议:启用请求/响应体的过滤与日志脱敏插件。
- 操作:在网关配置 Wasm 插件,拦截出站请求,利用正则或关键词库过滤掉 PII(个人身份信息,如身份证、手机号)后再发送给 LLM 厂商。同时,开启 Access Log,记录 Prompt 和 Response 的摘要(非全文,避免日志过大),用于后续的 Prompt 优化和成本分析。
6. 生产环境的高可用部署陷阱
- 场景:将 Higress 部署在 Kubernetes 集群中作为核心流量入口。
- 常见陷阱:默认配置下,控制平面的配置下发可能存在延迟,或者网关实例的资源限制(CPU/Memory)设置过低导致在处理高并发长连接(LLM
引用
- GitHub 仓库: https://github.com/alibaba/higress
- DeepWiki: https://deepwiki.com/alibaba/higress
注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。
站内链接
- 分类: 系统与基础设施 / 开源生态
- 标签: Higress / API 网关 / AI Gateway / Istio / Envoy / LLM / MCP / WASM
- 场景: AI/ML项目 / 云原生/容器 / DevOps/运维
相关文章
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关 这篇文章由 AI Stack 自动生成,包含多次大模型调用,提供深度的结构化分析。