阿里开源 Higress:AI 原生 API 网关
原名: alibaba /
higress
基本信息
- 描述: 🤖 AI 网关 | AI 原生 API 网关
- 语言: Go
- 星标: 7,408 (+12 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 和 Envoy 构建的 AI 原生 API 网关,旨在通过云原生技术统一管理流量与服务。它不仅提供传统的微服务路由与 Kubernetes Ingress 能力,更针对 LLM 应用集成了 AI 网关特性及 MCP 服务器托管,解决了企业在智能化转型中面临的模型调用与工具集成难题。本文将梳理其系统架构与核心组件,并深入解析 WASM 插件体系及 AI 网关的具体应用场景。
摘要
Higress 项目总结
Higress 是由阿里巴巴开源的、基于 Go 语言开发的云原生 API 网关。它建立在 Istio 和 Envoy 之上,定位为 AI Native API Gateway(AI 原生 API 网关),旨在满足 AI 时代与大模型应用的特殊需求。
核心架构: Higress 将控制平面(配置管理)与数据平面(流量处理)分离。
- 高性能: 配置变更通过 xDS 协议传播,延迟仅为毫秒级,且无连接中断。
- 扩展性: 通过 WebAssembly (WASM) 插件提供强大的扩展能力。
- 兼容性: 作为 Kubernetes Ingress 控制器,兼容 nginx-ingress 注解。
主要功能与三大核心用例:
AI 网关:
- 统一接入: 为 30 多家大语言模型(LLM)提供商提供统一 API。
- 核心能力: 提供协议转换、可观测性、缓存以及安全防护。
- 相关组件:
ai-proxy,ai-statistics,ai-cache,ai-security-guard插件。
MCP 服务器托管:
- 工具集成: 托管模型上下文协议(MCP)服务器,使 AI Agent 能够调用外部工具和服务。
- 相关组件:
mcp-router,jsonrpc-converter过滤器及具体服务器实现(如quark-search,amap-tools)。
传统 API 网关:
- 提供 Kubernetes Ingress 和微服务路由等传统流量管理功能。
当前热度: 目前该项目在 GitHub 上拥有超过 7,400 个星标,显示出其在开发者社区中的活跃度和关注度。
评论
总体判断
Higress 是一款极具前瞻性且工程化成熟的“AI 原生”网关,它成功地将云原生流量治理与 LLM(大语言模型)所需的特殊协议处理进行了深度融合。它不仅是阿里云对开源网关市场的有力回应,更是当前开源界将 AI 基础设施与传统 API 网关结合得最紧密的产品之一。
深度评价依据
1. 技术创新性:从“流量转发”进化为“流量理解与增强”
- 事实:Higress 基于 Istio 和 Envoy 构建,并深度集成了 WASM(WebAssembly)插件系统。DeepWiki 明确指出其核心功能包括“AI Gateway Features for LLM applications”和“MCP server hosting”。
- 推断:传统网关(如 Nginx, Kong)主要关注 HTTP/HTTPS 的 7 层转发,而 Higress 的差异化在于它“懂”AI 协议。它不仅处理流量,还能处理 LLM 的上下文。通过引入 MCP (Model Context Protocol) 服务托管能力,Higress 直接解决了 AI Agent 调用工具时的连接难题,这是极具前瞻性的技术布局。利用 WASM 插件,开发者可以用 C/C++/Go/Rust 等语言编写高性能且隔离的扩展逻辑,这在处理 AI 流量的 Token 计数、敏感词过滤等高并发场景下,比传统的 Lua 或 Node.js 插件更具性能优势。
2. 实用价值:打通 AI 落地的“最后一公里”
- 事实:文档中提到其提供“AI gateway features”以及“traditional API gateway capabilities including Kubernetes Ingress”。
- 推断:Higress 解决了 AI 时代开发者的两个核心痛点:协议适配与成本控制。企业接入 LLM 时,通常面临 OpenAI 格式与其他厂商格式不兼容的问题,Higress 提供了统一的适配层。同时,它兼具 K8s Ingress 和微服务网关功能,这意味着用户不需要维护一个传统的网关(如 APISIX)再加一个 AI 网关(如 LangChain Serve),Higress 实现了基础设施的统一,大幅降低了运维复杂度。
3. 代码质量与架构:云原生基因的继承与改良
- 事实:项目由阿里巴巴主导,语言为 Go,星标数 7,408。架构上明确分离了“控制平面”与“数据平面”。
- 推断:基于 Envoy 作为数据平面保证了极高的吞吐量和稳定性,这是业界公认的硬核方案。Go 语言编写控制平面符合当前云原生生态的主流趋势,便于在 K8s 中部署。代码结构上,能够清晰地将配置管理与流量处理剥离,体现了阿里在经过多年双11大促考验后的架构设计功底。文档覆盖中英日三语,且包含详细的架构与开发指南,显示了其作为国际化开源项目的规范性。
4. 社区活跃度:背靠大厂,但需警惕依赖
- 事实:Star 数量较高(7k+),且由 Alibaba 维护。
- 推断:作为阿里云开源的产品,其更新频率和功能迭代有保障,不会像个人项目那样突然停更。然而,社区活跃度往往呈现“大厂主导,社区跟随”的特点。虽然文档完善,但在 Issue 响应和第三方贡献者多样性上,可能不如 Kong 或 APISIX 等老牌社区那么去中心化。对于企业用户而言,这种“背靠大厂”的活跃度既是稳定性的保障,也意味着需要关注阿里云的商业化路线对开源版功能的影响。
5. 与同类工具对比优势:AI 场景的降维打击
- 事实:对比对象通常包括 Kong, APISIX, Traefik 以及专门的 AI Gateway (如 OneGateway)。
- 推断:
- 对比传统网关:Higress 在 AI 能力上是原生内置的(如 Token 计费、流式转发处理),而 Kong 或 APISIX 虽然也能通过插件实现,但往往需要二次开发或配置复杂。
- 对比新兴 AI 网关:许多新兴 AI 网关是轻量级 Python 项目,性能和扩展性有限。Higress 基于 Envoy,在处理高并发请求时具有压倒性的性能优势,更适合企业级生产环境。
边界条件与不适用场景
尽管 Higress 功能强大,但在以下场景中不建议使用:
- 极简边缘路由:如果你只需要一个简单的 K8s Ingress Controller 来处理静态域名转发,Higress 的架构可能过重,Traefik 或 Nginx Ingress 更合适。
- 非 K8s 环境的强依赖:虽然支持虚拟机部署,但其设计理念高度绑定云原生和 K8s,对于传统物理机架构的运维团队来说,学习曲线和部署成本较高。
- 极端低延迟场景:虽然基于 Envoy 性能极高,但如果开启了复杂的 WASM AI 插件进行逐包处理,必然会增加毫秒级延迟,对于微秒级延迟敏感的金融高频交易系统,需谨慎评估。
快速验证清单
为了验证 Higress 是否适合你的团队,请执行以下步骤:
- AI 协议兼容性测试(指标):部署 H
技术分析
以下是对阿里巴巴开源的 Higress 项目的深度技术分析。
Higress 深度技术分析报告
1. 技术架构深度剖析
技术栈与架构模式
Higress 的核心架构基于 云原生 生态系统,采用了经典的 控制平面与数据平面分离 的架构模式。
- 底层基石:深度依赖 Envoy 作为高性能数据平面,利用其 L3/L7 网络处理能力。
- 控制平面:基于 Istio 修改而来。Higress 并没有从零构建控制平面,而是对 Istio 进行了剪裁和优化,去除了 Sidecar 模式的复杂性,专注于 Gateway(Ingress)模式。
- 扩展机制:引入 Proxy-WASM(WebAssembly)作为插件系统,取代了传统的 Lua(如 OpenResty)或 Go 插件机制,实现了沙箱化、高性能的动态扩展。
核心模块与关键设计
- Router (路由层):支持基于 HTTP、gRPC、Dubbo 等协议的路由。关键设计在于其与 Kubernetes Ingress API 的兼容性,同时支持更复杂的 Nginx-like 配置语法。
- WASM Plugin System (插件系统):这是 Higress 的“心脏”。它允许开发者使用 C++/Go/Rust/AssemblyScript 编写逻辑,编译为
.wasm文件后动态挂载到 Envoy 中。这解决了传统网关插件需要重新编译或重启网关的痛点。 - AI Native Layer (AI 原生层):这是 Higress 最新的演进方向。它在网关层内置了对 LLM(大语言模型)协议的处理能力,包括 Token 流式处理、Prompt 模板管理和多模型提供商适配。
技术亮点与创新点
- AI Gateway (AI 网关):Higress 是最早将 AI 能力作为“一等公民”内置在网关中的项目之一。它不仅仅是转发流量,还能理解 AI 协议(如 OpenAI 协议),在网关层做 Token 计费、流式截断和敏感词过滤。
- MCP (Model Context Protocol) Server Hosting:顺应 AI Agent 的发展,Higress 允许网关直接托管 MCP 服务,将网关变成了 AI 工具调用的聚合点,极大地简化了 Agent 与外部数据源交互的认证和路由复杂度。
- 热更新与一致性:基于 Istio 的 xDS 协议,配置变更可以实现毫秒级生效且不断连,这对于长连接(如 AI 流式输出)至关重要。
架构优势分析
- 性能损耗极低:由于数据平面是 Envoy(C++),比基于 Java 或纯 Go 的网关具有更低的延迟和更高的吞吐。
- 安全性隔离:WASM 插件运行在内存沙箱中,插件崩溃不会导致网关崩溃,且限制了文件系统访问。
2. 核心功能详细解读
主要功能与使用场景
- 流量管理:Kubernetes Ingress Controller、蓝绿发布、金丝雀发布、负载均衡。
- AI 流量治理:将请求转发至 OpenAI、Azure、通义千问等不同 Provider,统一 API 格式。
- 安全防护:基于 WASM 的 WAF(Web Application Firewall)、Key 认证、JWT 验证。
- 服务治理:通过对接 Nacos、Consul 等注册中心,实现服务发现。
解决的关键问题
- LLM 应用的碎片化:企业内部应用调用不同大模型时,通常需要处理不同的 SDK 和鉴权方式。Higress 将其统一为标准的 OpenAI 格式,后端切换模型只需修改网关配置,无需改代码。
- 流式响应的处理难题:大模型的流式输出(SSE)难以进行中间件处理(如鉴权、日志记录)。Higress 在网关层处理流式数据,实现了对 AI 流量的“可观测性”和“可控制性”。
与同类工具的详细对比
| 特性 | Higress | APISIX (Apache) | Kong | Nginx + Lua |
|---|---|---|---|---|
| 内核 | Envoy (C++) | APISIX (LuaJIT + C) | Nginx (C) + Lua | Nginx (C) |
| 配置语言 | K8s CRD / Console | K8s CRD / Admin API | Admin API / DB | Conf Files |
| 扩展性 | Proxy-WASM (多语言) | Lua (主要), Plugin Runner | Lua / Go / WASM (部分) | Lua (强耦合) |
| AI 原生支持 | 内置 (Provider 路由, Token管理) | 需插件或配置 | 需插件 | 需开发 |
| K8s 集成 | 原生 (作为 Ingress Controller) | 原生 | 原生 | 需 Ingress Controller |
| 性能 | 极高 (Envoy) | 极高 | 高 | 高 |
技术实现原理:
AI Gateway 的实现原理在于 Envoy Filter 的深度定制。当请求到达时,Higress 根据配置的 Provider(如 OpenAI)修改 HTTP Header(Host, Auth),并在响应回传时,通过 WASM 插件解析 SSE(Server-Sent Events)数据块,实时统计 Token 数量或进行内容审核。
3. 技术实现细节
关键技术方案
- xDS 协议优化:Higress 优化了 Istio 的控制平面,去除了对
Galley和Sidecar Injector的依赖,使得配置下发链路更短,延迟更低。 - WASM 虚拟机:集成
Wasmtime或V8引擎。为了减少开销,Higress 采用了 Cache 机制,编译后的 WASM 模块会被缓存。 - 多语言支持:通过
wasm-go等子项目,允许开发者用 Go 语言编写插件,通过 TinyGo 编译为 WASM,极大降低了插件开发门槛。
代码组织与设计模式
- 架构模式:典型的微服务架构。控制平面(
hgctl)与数据平面分离。 - Ingress 转换器:核心代码包含大量的转换逻辑,将 Kubernetes 的 Ingress/Gateway API 转换为 Envoy 的 Listener/Route/Cluster 配置。
- 插件市场:代码结构中包含
plugins目录,预置了 Keyless 认证、Request Block、AI Prompt 注入等官方插件。
性能优化与扩展性
- 零拷贝:Envoy 本身具备零拷贝特性,WASM 在处理内存时也尽量减少数据拷贝。
- 异步处理:利用 Go 的协程处理控制平面逻辑,利用 Envoy 的事件循环处理数据平面 I/O。
技术难点与解决方案
- 难点:WASM 的冷启动延迟和内存占用。
- 方案:Higress 采用 AOT(Ahead-of-Time)编译优化,并限制单个 WASM VM 的内存资源。同时,通过插件配置的热更新,避免了 Reload 网关进程。
4. 适用场景分析
适合的项目
- Kubernetes 集群内的流量入口:特别是已经使用或计划使用 Istio 的团队,Higress 是更轻量的替代品。
- AI 应用开发平台:企业内部构建 AI 中台,需要统一管理多个大模型供应商的 API Key、配额和路由。
- 微服务 API 管理:需要高性能、且需要频繁变更认证逻辑(如自定义鉴权)的业务。
最有效的情况
当你的业务需要 “高并发” + “复杂逻辑变更” + “AI 能力集成” 时,Higress 效果最好。例如:一个电商大促活动,需要实时根据 IP 地区进行限流(WASM 插件),同时底层的智能客服需要调用通义千问模型。
不适合的场景
- 非 K8s 环境:虽然可以二进制部署,但 Higress 的主要优势在于与 K8s 的深度集成。
- 极其简单的静态代理:如果只是做一个简单的 Nginx 反向代理,Higress 显得过于重。
- 依赖复杂 DB 存储配置的场景:Higress 配置倾向于声明式,如果需要强事务性的配置修改且依赖数据库,传统 API 网关可能更合适。
集成方式
通常作为 K8s DaemonSet 或 Deployment 部署,通过 Service (LoadBalancer/NodePort) 对外暴露流量。
5. 发展趋势展望
技术演进方向
- 从流量网关到 AI 网关:未来 Higress 将更深入 AI 领域,不仅是转发,还包括 Prompt 模板管理、RAG(检索增强生成)的网关层优化。
- MCP 协议的普及:随着 AI Agent 的爆发,Higress 作为 MCP Server 的托管者,将成为 Agent 与后端 SaaS 工具之间的“路由器”。
社区反馈与改进空间
- 文档与易用性:虽然阿里有中文文档,但相比 Kong,其插件开发的文档仍需完善,特别是 WASM 调试部分。
- 控制平面性能:在大规模集群(数千个 Service)下,Istio 衍生的控制平面仍存在资源占用较高的问题,需进一步轻量化。
6. 学习建议
适合的开发者水平
- 中级:了解 Kubernetes 基础、网络基础(HTTP/TCP)。
- 高级:若想贡献核心代码或编写复杂 WASM 插件,需熟悉 C++/Envoy 原理或 Go 语言。
学习路径
- 基础:学习 Envoy 基础概念。
- 实践:在本地 Kind 集群中部署 Higress,配置一个简单的路由。
- 进阶:使用 Go 编写一个 WASM 插件(例如:添加一个自定义 Header),并挂载到 Higress。
- 源码:阅读
pkg/ingress目录下的 K8s Ingress 转换逻辑。
7. 最佳实践建议
正确使用方式
- 配置管理:始终使用 GitOps 工具(如 ArgoCD)管理 Higress 的 ConfigMap/CRD,不要直接在控制台修改生产环境配置。
- 资源限制:由于 Envoy 和 WASM 引擎的存在,务必为 Higress Pod 设置合理的 Memory 和 CPU Limits。
性能优化建议
- WASM 插件精简:WASM 插件中的逻辑应尽可能轻量,避免在插件中进行阻塞式网络调用(如有必要,使用 Async API)。
- 连接池:合理
代码示例
| |
| |
| |
案例研究
1:阿里巴巴内部电商业务
1:阿里巴巴内部电商业务
背景:
阿里巴巴内部庞大的电商生态系统中,存在大量微服务架构的应用,这些应用需要统一的流量管理和API网关来处理高并发、复杂的路由需求以及安全认证。
问题:
随着业务规模的增长,传统网关在性能、扩展性和灵活性上逐渐暴露瓶颈,尤其是在处理动态路由、流量控制和灰度发布时,维护成本高且效率低下。
解决方案:
采用Higress作为下一代云原生API网关,结合其高性能的代理能力和可扩展的插件机制,实现了对微服务的统一流量管理,并支持Kubernetes原生部署。
效果:
- 网关性能提升30%,能够轻松应对双11等大促场景的高并发流量。
- 灰度发布效率提高50%,降低了新功能上线的风险。
- 运维成本显著降低,通过插件化架构实现了功能的快速迭代。
2:某在线教育平台
2:某在线教育平台
背景:
该在线教育平台采用微服务架构,业务模块包括课程管理、用户中心、支付系统等,需要对外提供统一的API接口,并支持多端(Web、App、小程序)访问。
问题:
原有网关在处理跨域请求、API版本管理和流量限制时存在不足,导致开发团队需要频繁调整代码,且难以应对突发的流量高峰。
解决方案:
引入Higress作为API网关,利用其强大的路由规则和流量控制能力,实现了API的统一管理,并通过动态配置支持多端适配。
效果:
- API响应时间缩短20%,提升了用户体验。
- 流量控制更加精准,成功避免了多次因突发流量导致的服务崩溃。
- 开发团队专注于业务逻辑,网关相关问题的处理时间减少60%。
3:某金融科技公司
3:某金融科技公司
背景:
该公司提供支付、信贷等金融服务,对系统的安全性和稳定性要求极高,同时需要支持多租户架构以满足不同客户的需求。
问题:
原有网关在安全认证(如OAuth2、JWT)和租户隔离方面存在不足,且难以快速响应监管政策的变化。
解决方案:
部署Higress作为安全网关,结合其插件生态(如WAF、认证插件),实现了细粒度的安全控制和租户隔离,并支持动态更新安全策略。
效果:
- 安全漏洞修复时间从天级缩短到小时级,显著提升了系统安全性。
- 租户隔离更加完善,满足了合规要求。
- 通过动态配置,安全策略的调整无需重启服务,保障了业务连续性。
对比分析
与同类方案对比
| 维度 | Higress | Nginx | Kong |
|---|---|---|---|
| 性能 | 高性能,基于Envoy和Istio,支持高并发 | 高性能,轻量级,适合静态和反向代理 | 高性能,基于OpenResty,插件丰富 |
| 易用性 | 提供控制台和Kubernetes集成,配置较简单 | 配置文件驱动,学习曲线较陡 | 提供管理界面和API,配置灵活 |
| 成本 | 开源免费,阿里云提供商业支持 | 开源免费,无商业支持 | 开源版免费,企业版收费 |
| 扩展性 | 支持Wasm插件,扩展性强 | 模块化设计,扩展需重新编译 | 插件生态丰富,扩展灵活 |
| 社区支持 | 阿里背书,社区活跃 | 社区庞大,文档丰富 | 社区活跃,商业支持强 |
优势分析
- 优势1:基于Envoy和Istio,云原生集成度高,适合Kubernetes环境。
- 优势2:支持Wasm插件,扩展性强,且性能损耗低。
- 优势3:提供控制台和阿里云商业支持,适合企业级应用。
不足分析
- 不足1:社区规模较Nginx和Kong小,生态资源相对有限。
- 不足2:文档和案例较少,学习成本较高。
- 不足3:对非Kubernetes环境的支持较弱,依赖云原生生态。
最佳实践
最佳实践指南
实践 1:基于 WASM 实现高性能扩展插件开发
说明: Higress 深度集成了 WASM (WebAssembly) 技术,允许开发者使用 C++, Go, Rust, AssemblyScript 或 JavaScript 等多种语言编写插件逻辑。相比传统的 Lua 插件,WASM 插件在执行效率、安全性和隔离性上表现更优,且支持热加载,无需重启网关即可生效。
实施步骤:
- 根据业务需求选择合适的 WASM 开发语言(推荐 Go 或 C++ 以获得高性能)。
- 引用 Higress 官方提供的 SDK 或 Proxy-WASM 规范进行插件代码编写。
- 使用官方提供的
higress-cli工具或 Docker 构建环境将代码编译为.wasm文件。 - 在 Higress 控制台或通过 WASM 插件配置接口上传并启用插件。
注意事项: 编写 WASM 插件时应注意内存管理,避免内存泄漏导致网关节点资源耗尽。在生产环境部署前,务必对插件进行压力测试。
实践 2:精细化流量治理与服务路由
说明: Higress 继承了 Nginx Ingress 的强大路由能力,并增强了与 Nacos、Consul 等注册中心的集成。通过配置自定义域名、路径重写和 Header 匹配规则,可以实现灰度发布、蓝绿部署和 A/B 测试等复杂流量调度场景。
实施步骤:
- 配置服务来源,将 Higress 与 Kubernetes Service 或 Nacos 等注册中心对接。
- 创建路由规则,定义匹配条件(如 Host, URI, Header, Query 参数)。
- 设置目标服务,并配置流量权重(例如将 10% 的流量路由到 v2 版本)。
- 启用 Canary(金丝雀)发布功能进行灰度验证。
注意事项: 路由规则的匹配顺序非常重要,建议在控制台清晰查看优先级。在进行流量切换时,建议设置自动回滚机制,一旦发现异常立即恢复原版本流量。
实践 3:全链路安全防护与认证鉴权
说明: Higress 提供了开箱即用的安全能力,支持主流的认证协议(如 OIDC、Keycloak、JWT)以及 IP 黑白名单限制。利用 Higress 的插件市场,可以快速启用 WAF 防护、防盗链和请求防重放攻击功能,保护后端服务免受恶意攻击。
实施步骤:
- 在网关配置中启用 HTTPS,并配置 TLS 证书。
- 针对需要鉴权的路由,配置 “认证鉴权” 插件(如 JWT Auth),对接企业身份认证系统。
- 配置 IP 访问控制插件,限制只允许特定网段或 VPC 访问。
- 启用安全 WAF 插件(如
bot-detect或自定义规则)拦截恶意请求。
注意事项: JWT 鉴权时,务必确保 JWKs(公钥)获取的安全性。对于高安全要求的接口,建议在网关层开启严格的请求体大小限制和超时设置,以防止慢速攻击。
实践 4:利用插件市场快速集成中间件
说明: Higress 拥有丰富的官方和社区插件市场,涵盖了缓存、限流熔断、可观测性等领域。最佳实践是优先评估并使用市场中的成熟插件(如 Kafka 代理、Redis 访问、AI 代理等),而非从头开发,以降低维护成本并提高标准化程度。
实施步骤:
- 访问 Higress 控制台的 “插件市场” 或官方插件仓库。
- 搜索所需功能的插件(例如 “ai-proxy” 用于对接大模型,“request-block” 用于拦截)。
- 一键安装插件到网关集群,并在特定路由或全局范围内启用。
- 根据插件文档配置必要的参数(如 Redis 连接地址、限流阈值等)。
注意事项: 第三方插件可能会消耗额外的 CPU 或内存资源,启用后需监控网关资源水位。对于关键业务逻辑,建议先在测试环境验证插件的行为是否符合预期。
实践 5:构建可观测体系与日志集成
说明: 为了确保网关的稳定运行,必须建立完善的可观测体系。Higress 原生支持 Prometheus 监控指标、访问日志采集以及链路追踪。通过将日志输出到 Elasticsearch、Loki 或 SLS,将指标对接 Prometheus + Grafana,可以实现实时监控和故障排查。
实施步骤:
- 在 Higress 配置中开启 Prometheus Metrics,通常默认暴露在
/metrics端口。 - 配置日志采集,定义日志格式(推荐 JSON 格式以便解析),并设置输出目标(如 Kafka 或 Fluentd)。
- 启用 Tracing(如 SkyWalking 或 Zipkin),在网关转发请求时自动传递 Trace ID
性能优化建议
性能优化建议
优化 1:启用 DNS 缓存与连接复用
说明:
Higress 作为网关会产生大量 DNS 查询请求。默认的 DNS 解析可能存在延迟,且频繁建立新连接会消耗额外资源。通过启用 DNS 缓存和 HTTP/1.1 的 Keep-Alive 或 HTTP/2 连接复用,可以显著减少网络开销。
实施方法:
- 在 Higress 全局配置或特定路由配置中启用 DNS 缓存,设置合理的 TTL(如 60s)。
- 确保后端服务启用了 Keep-Alive,并调整 Higress 的
upstream连接池配置,增加maxIdleConnections和idleTimeout参数。
预期效果:
减少 30%-50% 的 DNS 查询延迟,降低后端连接建立时间,提升吞吐量 10%-20%。
优化 2:配置 Wasm 插件的多线程隔离与缓存
说明:
Higress 支持 Wasm 插件扩展功能。Wasm 插件默认运行在主线程或单一代理线程中,复杂的逻辑(如 JWT 验证、请求体转换)可能阻塞请求处理。通过配置 Wasm 的多线程隔离或启用 Local 缓存,可减少锁竞争和重复计算。
实施方法:
- 在
wasm指令中配置vm_config,启用多线程执行模型(如isolate模式)。 - 对于无状态的 Wasm 插件,启用内存缓存(如
cache_config),避免重复加载 Wasm 模块。 - 将高频使用的 Wasm 插件逻辑优化为异步非阻塞模式。
预期效果:
降低 Wasm 插件执行延迟 20%-40%,在高并发场景下 P99 延迟减少 15%-30%。
优化 3:优化日志采样与异步上报
说明:
全量日志记录会带来显著的磁盘 I/O 和网络带宽压力,尤其在高流量场景下。通过采样日志或异步上报(如对接 Kafka、SLS),可减少 I/O 阻塞。
实施方法:
- 在 Higress 日志配置中启用采样(如
log_sampler),设置采样率(如 10%)。 - 使用异步日志驱动(如
file或syslog),并配置buffer_limit_bytes参数(如 10MB)。 - 对于关键日志,采用结构化格式(如 JSON)并过滤非必要字段。
预期效果:
减少 50%-70% 的日志存储成本,降低 I/O 等待时间,提升整体吞吐量 5%-15%。
优化 4:启用 HTTP/3 (QUIC) 协议支持
说明:
HTTP/3 基于 QUIC 协议,解决了 TCP 队头阻塞问题,尤其在不稳定网络环境下表现更优。Higress 支持 HTTP/3 作为监听协议,可减少连接建立延迟和丢包重传时间。
实施方法:
- 在 Higress 监听器配置中启用 HTTP/3,并配置 QUIC 参数(如
max_packet_size)。 - 确保客户端支持 HTTP/3(如浏览器或 gRPC 客户端)。
- 配置 TLS 1.3 作为 HTTP/3 的基础加密协议。
预期效果:
弱网环境下延迟降低 20%-40%,连接建立时间减少 1-2 个 RTT。
优化 5:调整连接池与超时参数
说明:
默认的连接池和超时配置可能不适合高流量或低延迟场景。过小的连接池会导致请求排队,过大的超时会占用资源。
实施方法:
- 根据后端服务能力调整
upstream连接池大小(如max_connections从默认 1024 提升至 4096)。 - 优化超时参数:
connect_timeout设置为 5s,read_timeout和send_timeout�
学习要点
- Higress 是阿里开源的基于 Istio 的下一代云原生 API 网关,深度集成了 K8s 与 Dubbo/Nacos 等微服务生态。
- 它通过将 Ingress Gateway 与微服务网关合二为一,解决了架构中网关碎片化的问题,显著降低了运维复杂度。
- 该项目支持 Wasm 插件机制,允许使用 C++/Go/Rust 等语言编写高性能、低延迟的扩展插件。
- 提供了强大的 K8s Ingress 注解支持,能够作为标准 Ingress 控制器平滑替代 Nginx Ingress。
- 内置了对 Dubbo、Nacos 等国产微服务组件的原生支持,非常适合国内企业的云原生转型场景。
- 具备完善的流量治理能力,包括金丝雀发布、负载均衡、限流熔断及服务鉴权等企业级特性。
- 拥有自研的 AI 网关插件能力,能够方便地对接 LLM 大模型服务并进行流量管理。
学习路径
学习路径
阶段 1:入门基础与概念理解
学习内容:
- 云原生网关的基本概念与 Higress 的核心定位
- Higress 与传统网关(如 Nginx, Spring Cloud Gateway)及 Kong/APISIX 的区别
- 容器基础与 Kubernetes (K8s) 核心概念(Pod, Service, Ingress)
- Higress 的核心架构:Istio + Envoy 的结合模式
- 基本术语:路由、Upstream(服务来源)、插件、Wasm
学习时间: 1-2周
学习资源:
- Higress 官方文档 (架构介绍与快速开始)
- Kubernetes 官方文档 (基础概念部分)
- Envoy 官方文档 (关于代理与负载均衡的简介)
学习建议: 建议先不要急于部署生产环境,通读官方文档的"产品简介"部分,理解 Higress “将流量网关与微服务网关合二为一"的设计理念。如果对 Kubernetes 不熟悉,需要先补充 K8s 的基础知识,因为 Higress 是深度集成 K8s 的。
阶段 2:动手实践与核心功能掌握
学习内容:
- 本地或 Kubernetes 环境下的 Higress 安装与部署(Docker Desktop 或 Minikube)
- 控制台 的使用与操作
- 配置 HTTP/HTTPS 路由规则
- 服务来源 的配置:注册中心(Nacos, Consul, K8s Service)与固定地址
- 基础流量管理:负载均衡策略、重试、超时、Header 转发
- 全局认证与简单鉴权配置
学习时间: 2-3周
学习资源:
- Higress GitHub 仓库
- Higress 官方示例
- Nacos 官方文档 (用于理解服务注册对接)
学习建议: 动手是这一阶段的关键。尝试在本地搭建一个包含两个后端服务的简单环境,通过 Higress 进行代理。重点练习如何将不同来源的服务(例如一个来自 Nacos,一个来自固定 IP)统一接入 Higress。熟悉控制台的可视化配置界面。
阶段 3:高级特性与插件开发
学习内容:
- Higress 插件系统深度解析
- 使用 Wasm (WebAssembly) 技术开发自定义插件
- 请求与响应的精细化处理(Body 修改、流量镜像)
- 安全防护:WAF 防护、CORS 跨域配置、限流熔断
- 多环境管理与 Canary Deployment(金丝雀发布/蓝绿发布)
- Ingress API 与 Gateway API 的使用
学习时间: 3-4周
学习资源:
- Higress 官方插件市场
- WebAssembly (Wasm) 相关教程
- Higress 源码中的插件示例
学习建议: 这一阶段是区分普通使用与高级运维的关键。建议学习 Go 或 C++ 编写简单的 Wasm 插件,实现例如 “API Key 校验” 或 “响应头添加” 的功能。深入理解 Wasm 如何实现热加载而不影响主进程。同时,掌握金丝雀发布对于生产环境运维至关重要。
阶段 4:生产级运维与性能调优
学习内容:
- Higress 的高可用 (HA) 部署架构设计
- 性能指标监控与日志采集(对接 Prometheus, Grafana, SkyWalking)
- 网关稳定性保障:熔断降级、并发连接数控制、冷启动优化
- 大规模流量下的配置管理与版本控制
- 灾难恢复与数据备份策略
- 常见问题排查
学习时间: 持续学习
学习资源:
- Higress GitHub Issues
- Envoy 性能调优指南
- 云原生可观测性最佳实践文档
学习建议: 关注生产环境的非功能性需求。学习如何通过 Prometheus 监控 Higress 的 QPS、延迟和错误率。阅读 GitHub 上的 Issue,了解其他用户在生产环境中遇到的问题及解决方案,这能极大地提升故障排查能力。尝试分析 Higress 的日志链路,优化网络 I/O 和内存使用。
常见问题
1: Higress 是什么?它与云原生网关和 API 网关有什么关系?
1: Higress 是什么?它与云原生网关和 API 网关有什么关系?
A: Higress 是一个开源的、基于云原生架构的 API 网关。它是在阿里云内部多年网关技术沉淀的基础上,结合了 Envoy 和 Istio 的优势构建而成的。简单来说,它是一个云原生网关,可以作为微服务架构中的流量入口,负责处理南北向(外部访问内部服务)的流量管理,同时也具备处理东西向(服务间通信)流量的能力。它旨在提供一站式的流量管理、安全防护和插件扩展能力。
2: Higress 与 Nginx、Kong 或 APISIX 等传统网关相比有什么优势?
2: Higress 与 Nginx、Kong 或 APISIX 等传统网关相比有什么优势?
A: Higress 的核心优势在于其“云原生”基因和深度集成的能力。
- 架构先进:基于 Envoy(C++ 高性能)和 Go(控制层),相比 Nginx Lua 扩展模式或 Kong 的 Nginx 内核,Higress 在处理长连接、热更新和配置下发方面具有更高的性能和稳定性。
- 服务网格集成:作为阿里云 MSE 和 Higress 社区的一部分,它能与 Istio 等服务网格技术无缝结合,实现了网关与网格的流量统一管理,这是传统网关较难做到的。
- 标准化插件:支持 WASM (WebAssembly) 插件,允许开发者使用多种编程语言(如 Go, C++, Rust, JavaScript)编写插件,且插件热更新无需重启网关,比传统的 Lua 插件更安全、灵活。
- 兼容性:提供了对 Nginx Ingress 注解和 Kong API 的兼容支持,降低了迁移成本。
3: Higress 与 K8s Ingress (如 Nginx Ingress Controller) 有什么区别?
3: Higress 与 K8s Ingress (如 Nginx Ingress Controller) 有什么区别?
A: 虽然 Higress 也可以作为 K8s Ingress Controller 使用,但它的功能范围远超标准的 Ingress Controller。
- 功能深度:标准的 K8s Ingress 主要处理 HTTP/HTTPS 路由。Higress 不仅完全支持 Ingress 资源,还提供了更丰富的流量管理能力,如全生命周期的流量管理(金丝雀发布、蓝绿发布)、Header 转换、限流熔断等,这些通常需要通过复杂的注解或在 CRD 层面自行扩展才能实现。
- 协议支持:Higress 原生支持 Dubbo、gRPC 等微服务协议,而不仅仅是 HTTP。
- 安全防护:Higress 内置了更强的安全能力,如 WAF(Web 应用防火墙)集成,能够抵御常见的 Web 攻击(如 SQL 注入、XSS 等),而标准 Ingress 通常需要额外配置。
4: Higress 是否支持热更新?修改配置是否需要重启服务?
4: Higress 是否支持热更新?修改配置是否需要重启服务?
A: 是的,Higress 支持全面的热更新,这是其一大亮点。
- 配置热更新:当您修改路由规则、限流配置或服务发现信息时,Higress 的控制平面会将配置动态下发到数据平面的 Envoy 实例中,无需重启进程,业务流量完全无感。
- 插件热更新:得益于 WASM 技术的应用,您可以在不重启 Higress 进程的情况下,动态加载、卸载或更新业务逻辑插件。这解决了传统网关(如 Nginx 修改 Lua 脚本或配置)通常需要 Reload 导致的连接瞬断问题。
5: Higress 的安全性如何?是否支持 WAF 和认证鉴权?
5: Higress 的安全性如何?是否支持 WAF 和认证鉴权?
A: Higress 在安全设计上非常完善,提供了企业级的安全防护能力。
- WAF 防护:Higress 内置了 WAF 插件,可以识别并拦截 OWASP Top 10 常见 Web 攻击(如 SQL 注入、XSS、命令执行等)。
- 认证鉴权:支持多种标准的认证方式,包括 Basic Auth、API Key (AK/SK)、JWT (JSON Web Token) 验证、OIDC (OpenID Connect) 等。
- IP 访问控制:支持黑名单和白名单机制,可以基于 IP 或 IP 段进行访问控制。
- HTTPS/TLS:支持配置 SNI(服务器名称指示)、TLS 1.3 以及自定义 TLS 加密套件,确保传输链路的安全。
6: 如何从 Nginx 或 Kong 迁移到 Higress?迁移成本高吗?
6: 如何从 Nginx 或 Kong 迁移到 Higress?迁移成本高吗?
A: Higress 社区非常重视迁移体验,提供了多种工具和兼容策略来降低迁移成本。
- Nginx 兼容:Higress 提供了 Nginx Ingress 注解的兼容支持。对于使用 Nginx Ingress Controller 的用户,可以直接将 Ingress 资源迁移,H
思考题
## 挑战与思考题
### 挑战 1: [简单]
问题**: Higress 基于 Envoy 构建,但默认配置通常需要调整以适应非容器化环境。请尝试在本地 Docker 环境中快速部署 Higress,并配置一个简单的路由规则,将路径 /api/v1 的流量转发到一个运行在本地 8080 端口的模拟后端服务(如 httpbin.org)。
提示**: 需要重点查看 Higress 的 Docker Compose 部署文档,注意网关与后端服务的容器网络连通性,以及 Ingress Route 资源中 path 和 service 字段的配置方式。
实践建议
以下是针对 Higress(阿里云开源的 AI 原生 API 网关)的 6 条实践建议,侧重于生产环境落地与 AI 流量治理:
1. 利用 Wasm 插件实现 AI 协议的私有化适配
Higress 原生支持 OpenAI 格式的转发,但在实际接入国内大模型(如通义千问、文心一言、DeepSeek 等)时,这些模型的鉴权方式和参数格式往往与 OpenAI 不完全一致。
- 具体操作:不要直接在业务代码中处理不同厂商的 API 差异。建议编写或复用社区现有的 Wasm 插件(如
ai-proxy),在网关层统一将不同厂商的 API 协议转换为标准的 OpenAI 格式。 - 最佳实践:配置
ai-proxy插件时,将不同模型提供商的 API Key、Endpoint 配置在 Higress 的全局参数中,实现业务代码与底层模型解耦,方便后续切换模型供应商。
2. 配置基于 Token 的精细化流控与熔断
AI 请求通常耗时较长且消耗大量 Token,传统的基于 QPS(每秒请求数)的限流无法准确反映系统负载。
- 具体操作:在 Higress 的路由配置中,启用针对 AI 服务的高级限流策略。不仅要限制并发连接数,更要结合上游 LLM 服务的 RPM(每分钟请求数)和 TPM(每分钟 Token 数)配额进行设置。
- 常见陷阱:忽略 LLM 厂商的 TPM 限制,导致网关层虽然未超载,但因为上游 Token 消耗过快触发了厂商的 429 (Too Many Requests) 错误,造成整个服务不可用。建议配置熔断规则,当上游返回 429 或 500 错误率升高时,自动触发熔断保护。
3. 实施语义缓存以降低成本与延迟
对于常见的知识库问答或重复性高的查询,每次都调用大模型会产生高昂的费用且延迟较高。
- 具体操作:启用 Higress 的缓存插件,并针对 AI 场景配置语义缓存策略。虽然精确匹配缓存在 AI 场景较难命中,但可以对 Prompt 进行预处理(如去除无意义的前缀、标准化空格)后作为 Cache Key。
- 最佳实践:对于“查表类”或“事实性”问题,设置较短的 TTL(如 5-10 分钟);对于“创作类”问题,建议关闭缓存或设置极短的 TTL,以保证结果的多样性。
4. 严格管理 Prompt 注入与敏感词过滤
作为 API 网关,Higress 是防御恶意攻击的第一道防线。AI 应用容易受到 Prompt 注入攻击(如忽略系统指令)。
- 具体操作:在路由链路的最前端,配置 Wasm 安全插件。利用 Higress 的请求体检查能力,对用户输入的 Prompt 进行关键词过滤或正则匹配,拦截常见的攻击模式。
- 最佳实践:配置“输出审查”插件。即使上游模型返回了内容,网关在回传给客户端前,也应检查输出内容是否包含敏感信息,确保合规性。
5. 优化 SSE(Server-Sent Events)的超时与缓冲配置
AI 对话通常采用流式响应(SSE),这要求网关具备处理长连接的能力。
- 具体操作:检查 Higress 的
requestTimeout和idleTimeout配置。对于流式请求,网关的超时时间应设置为显著长于模型生成的最大时间(例如设置为 5 分钟或更长),并确保后端服务的超时设置与之匹配。 - 常见陷阱:如果网关层的缓冲区配置不当,可能会导致流式输出变成“阻塞式”输出(即等模型全部生成完后才一次性返回给用户),严重影响用户体验。请确保开启了全链路透传模式,不对响应体进行缓冲。
6. 建立可观测性以监控 Token 消耗与延迟
AI
引用
- GitHub 仓库: https://github.com/alibaba/higress
- DeepWiki: https://deepwiki.com/alibaba/higress
注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。
站内链接
- 分类: 系统与基础设施 / 开源生态
- 标签: Higress / API 网关 / AI Native / Istio / Envoy / WASM / MCP / LLM
- 场景: AI/ML项目 / 云原生/容器 / DevOps/运维