阿里开源 Higress:AI 原生 API 网关
原名: alibaba /
higress
基本信息
- 描述: 🤖 AI 网关 | AI 原生 API 网关
- 语言: Go
- 星标: 7,725 (+18 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 协议以支持 AI Agent 工具调用。本文将介绍其架构设计、核心组件及典型用例,帮助开发者理解如何利用 Higress 实现服务治理与 AI 能力的深度融合。
摘要
基于您提供的 GitHub 仓库信息和 DeepWiki 节选,以下是关于 Higress 的简洁总结:
1. 项目定位
Higress 是由 阿里巴巴 开源的一款 AI 原生 API 网关。它基于云原生生态系统构建,扩展了 Istio 和 Envoy 的功能,并使用 Go 语言编写。该项目目前在 GitHub 上拥有超过 7,700 个星标。
2. 核心架构
Higress 采用了控制平面与数据平面分离的架构:
- 控制平面:负责配置管理。
- 数据平面:负责流量处理。
- 通信机制:配置变更通过 xDS 协议传播,具有毫秒级延迟且不中断连接,特别适合 AI 流式响应等长连接场景。
3. 三大主要功能
Higress 提供了以下三个核心功能模块:
AI 网关:
- 提供统一 API,支持 30 多家大语言模型(LLM)提供商。
- 具备协议转换、可观测性、缓存和安全防护能力。
- 涉及插件:
ai-proxy,ai-statistics,ai-cache,ai-security-guard。
MCP 服务器托管:
- 托管 模型上下文协议(MCP) 服务器,使 AI 智能体能够调用外部工具和服务。
- 涉及组件:
mcp-router,jsonrpc-converter以及内置服务器实现(如quark-search,amap-tools)。
Kubernetes Ingress(传统 API 网关):
- 作为 Kubernetes 的 Ingress 控制器,支持微服务路由。
- 兼容
nginx-ingress的注解。
4. 技术特点
- WASM 插件系统:利用 WebAssembly 技术提供强大的插件扩展能力。
- 云原生设计:深度集成 K8s 和 Istio,适合现代微服务和 AI 应用的基础设施。
评论
总体判断
Higress 是阿里云开源的一款极具前瞻性的“云原生+AI”网关,它成功将传统流量治理与大模型(LLM)应用所需的路由、协议转换及安全能力融合。它不仅解决了传统网关在 AI 时代面临的协议割裂问题,更通过 WASM 和 MCP 协议的集成,为 AI Agent 的工具调用提供了标准化的基础设施,是构建现代 AI 原生应用的强力底座。
深入评价依据
1. 技术创新性:从“流量管道”进化为“AI 智能体中枢”
- 事实:DeepWiki 明确指出 Higress 基于 Istio 和 Envoy 构建,并扩展了 WASM 插件能力。其核心功能包含 AI Gateway、MCP(Model Context Protocol)服务器托管以及传统的 API 网关能力。
- 推断:Higress 最大的技术差异化在于**“AI Native”的深度集成**。传统网关(如 Nginx)主要处理 HTTP/gRPC,而 Higress 原生支持 SSE(Server-Sent Events)流式转发,这对大模型对话体验至关重要。更重要的是,它集成了 MCP 协议支持,这意味着它不仅能转发请求,还能作为 AI Agent 的“工具调度中心”,直接托管 MCP Server 供 LLM 调用。这种将流量网关与 AI 工具网关合二为一的架构,是目前业界极具创新性的尝试,打破了 AI 应用开发中“模型”与“数据/工具”连接的壁垒。
2. 实用价值:一站式解决 AI 落地的“最后一公里”
- 事实:描述中提到它提供 AI Gateway Features for LLM applications,同时兼容 Kubernetes Ingress。
- 推断:Higress 解决了 AI 应用开发中最痛点的**“碎片化”问题**。开发者通常需要维护一套 API 网关(K8s Ingress)和一套 AI 代理(如 LangChain 服务)。Higress 允许在同一个网关内实现 Token 计费、Prompt 模板管理、Key 轮转以及流量限制。这种“All-in-One”的特性大幅降低了运维复杂度。对于企业而言,它不仅是一个入口,更是一个AI 业务的统一管控平台,能够快速将旧有的微服务能力通过 HTTP/MCP 协议暴露给 AI 应用,极大地拓宽了 AI 落地的应用场景。
3. 代码质量与架构:云原生标准与可扩展性的完美平衡
- 事实:项目基于 Go 语言开发,Star 数超 7.7k,架构上明确分离了控制平面与数据平面。
- 推断:基于 Envoy 和 Istio 意味着 Higress 继承了云原生生态的高性能与高可靠性基因。数据平面 Envoy 的 C++ 高性能处理配合控制平面 Go 的易开发性,是业界公认的黄金组合。其 WASM 插件系统的设计极具前瞻性,允许开发者使用 C++/Go/Rust/JS 等语言编写业务逻辑,而无需重新编译网关或牺牲性能。这种架构设计保证了代码的热更新能力和模块解耦,文档涵盖了从构建到开发指南的完整链路,体现了成熟工程项目的规范度。
4. 社区活跃度与学习价值:大厂背书与 AI 时代的教科书
- 事实:阿里背书,Star 数增长迅速,且提供了中/日/英多语言文档。
- 推断:作为阿里云核心产品 Higress 的开源版本,其社区活跃度有保障,更新频率紧跟 AI 技术迭代(如快速支持最新的 LLM 协议)。对于开发者而言,Higress 是学习**“如何构建云原生 PaaS 平台”**的绝佳范例。它展示了如何将 Envoy 这种底层组件封装成用户友好的产品,特别是其 WASM 插件系统和 AI 请求处理流程,对于理解边缘计算网关与 AI 编排系统的设计原理具有极高的参考价值。
5. 潜在问题与改进建议
- 推断:尽管功能强大,但配置复杂性是其潜在门槛。基于 Istio 和 Envoy 的底层原理意味着排查问题需要较深的网络知识。此外,作为新兴项目,其 AI 生态(如与各种 LLM Provider 的适配)可能需要时间打磨。建议关注其在高并发 SSE 连接下的内存稳定性,以及 WASM 插件沙箱隔离的安全性。
边界条件与验证清单
不适用场景:
- 极其简单的静态文件托管或轻量级反向代理(Nginx 更轻量)。
- 非 K8s 环境下的传统虚拟机部署(虽然支持,但无法发挥其 K8s Native 的最大优势)。
- 对 WASM 延迟极度敏感且无法接受毫秒级开销的极端高性能场景。
快速验证清单:
- SSE 流式转发测试:构建一个简单的 LLM 路由,验证网关在处理长连接流式响应时,能否保持低延迟且不截断数据包(特别是超时配置)。
- WASM 插件热加载:编写一个简单的 Go WASM 插件(如添加 Header),在不重启 Higress Pod 的情况下重新加载插件,验证业务连续性。
- MCP 协议连通性:配置一个标准的 MCP Server(如 filesystem
技术分析
以下是对阿里巴巴开源的 Higress 项目的深度技术分析。
Higress 深度技术分析报告
1. 技术架构深度剖析
Higress 的核心定位是**“AI Native API Gateway”**,其架构设计体现了云原生时代从“流量管理中心”向“AI 模型编排与流量调度中心”的演进。
架构模式与核心技术栈
Higress 采用了控制平面与数据平面分离的经典架构模式,但在实现上进行了深度的定制与整合:
- 数据平面:基于 Envoy 构建。Envoy 以高性能 C++ 网络库著称,负责处理实际的流量转发、负载均衡以及 Wasm 插件的执行。Higress 在此基础上针对长连接和流式传输进行了优化。
- 控制平面:基于 Istio 优化而来。Higress 并没有直接使用臃肿的 Istio,而是剥离并重构了其控制平面(Mixer/ Citadel 等组件被简化或移除),专注于 xDS 协议的下发与管理。
- 扩展层:引入了 WebAssembly (WASM) 作为核心插件机制。通过 Proxy-WASM 规范,允许开发者使用 C/C++/Go/Rust 等语言编写插件,并在 Envoy 的沙箱中运行。
核心模块设计
- AI 网关层:这是 Higress 最具差异化的模块。它不是简单的 HTTP 代理,而是理解 LLM(大语言模型)协议的网关。它内置了对 OpenAI SDK 协议的兼容,能够处理 SSE(Server-Sent Events)流式响应。
- MCP (Model Context Protocol) 服务器托管:Higress 不仅仅转发流量,它还能作为 MCP Server 的宿主。这意味着它可以直接将内部微服务封装成 AI Agent 可调用的工具,无需额外的中间层。
- Kubernetes Ingress Controller:完全兼容 K8s Ingress API,并扩展了 Gateway API,使其能够无缝接入云原生生态。
架构优势
- 毫秒级配置生效:基于 xDS 协议的增量推送机制,配置变更无需重启网关,这对 AI 应用的频繁 Prompt 调优尤为重要。
- 热插拔扩展能力:WASM 插件支持动态加载,无需重新编译或部署网关进程,极大地降低了运维风险。
2. 核心功能详细解读
AI Gateway:解决 LLM 落地的“最后一公里”问题
- 痛点:直接调用 OpenAI 或其他 LLM API 存在 Token 计费不透明、Key 泄露风险、Prompt 注入攻击、流式输出难以截断或修改等问题。
- 解决方案:
- 统一模型抽象:通过 Higress,前端应用只需调用一个标准接口,后端可动态路由到 DeepSeek、Qwen、OpenAI 等不同模型,实现模型切换零代码改动。
- Token 保护与计费:网关层拦截请求,隐藏真实的 API Key,并基于 Token 消耗量进行精细化限流和计费统计。
- Prompt 安全防火墙:利用 WASM 插件在请求发送前检查 Prompt 内容,防止注入攻击;在响应返回前过滤敏感数据。
MCP 系统:AI Agent 的工具枢纽
- 功能:MCP 是连接 AI Agent 与外部数据/工具的标准协议。Higress 内置 MCP Server 能力,允许企业将现有的 RESTful API 快速封装为 MCP 工具。
- 价值:这解决了 AI Agent 调用企业内部服务时的“孤岛”问题,使得企业微服务架构可以直接暴露给 AI 使用,而无需大规模重构。
与同类工具对比
| 维度 | Higress | Nginx/Kong | 传统 Istio |
|---|---|---|---|
| AI 原生支持 | 强 (内置 Prompt/Token 处理) | 弱 (需硬编码 Lua/Go) | 弱 (主要关注 RPC) |
| 扩展性 | 高 (WASM 沙箱,多语言) | 中 (Lua 模块阻塞主进程) | 高 (WasmPlugin,但配置复杂) |
| 性能 | 极高 (基于 Envoy C++ 内核) | 高 (C) | 高 (Envoy) |
| K8s 集成 | 原生 (Ingress/Gateway API) | 需额外配置 | 原生 (但过重) |
| 运维复杂度 | 低 (控制平面简化) | 低 | 高 (多组件协同) |
3. 技术实现细节
关键技术方案:WASM 插件系统
Higress 的灵活性核心在于 WASM。其实现原理如下:
- 沙箱隔离:插件运行在 Envoy 的线性内存中,虽然性能接近原生,但崩溃不会导致网挂掉。
- Proxy-WASM ABI:Higress 实现了标准的 ABI,允许插件访问请求头、Body 以及调用日志服务。
- 多语言支持:通过
http-wasm或proxy-wasm的 Go SDK,开发者可以用 Go 编写逻辑,编译为.wasm文件上传至 Higress 控制台即可生效。
流式响应处理
LLM 应用通常采用 SSE 流式输出。传统的网关在处理流式数据时,往往只能做简单的 TCP 透传,无法解析内容。Higress 在 Envoy 层实现了流式拦截:
- 它可以识别 SSE 的
data:格式。 - 在流式传输过程中,插件可以逐块检查内容,实现动态的敏感词过滤或计费统计,而无需等待整个流结束。
性能优化
- 零拷贝:数据平面大量利用 Envoy 的零拷贝网络缓冲技术。
- 配置分发:控制平面与数据平面通过 gRPC 进行配置同步,支持增量配置(Delta xDS),极大降低了大规模路由(如万级 Service)下的 CPU 和内存消耗。
4. 适用场景分析
最佳适用场景
- 企业级 AI 应用落地:企业需要将大模型能力集成到现有业务中,且必须对 API Key 进行统一管理、对 Prompt 进行安全审计。
- 微服务 API 统一入口:特别是那些已经使用 Kubernetes 的企业,Higress 可以作为 Ingress Controller,同时承载南北向(外部访问)和东西向(服务间)流量。
- 多模型/多云调度:业务需要根据成本或延迟,动态将请求路由到阿里云通义千问、Azure OpenAI 或自部署模型。
不适合的场景
- 极简静态博客托管:杀鸡焉用牛刀,Nginx 或 Caddy 更轻量。
- 极端高性能的纯 L4 负载均衡:如果只需要做 TCP/UDP 转发,不需要 L7 处理,Envoy 的内存占用相对较高,DPDK 或 IPVS 可能是更好的选择。
- 非容器化环境:虽然 Higress 支持虚拟机部署,但其威力在 K8s 环境下才能最大化发挥。
集成注意事项
- 资源规划:Envoy 相比 Nginx 内存占用较高,建议在 K8s 中给 Pod 分配足够的 Memory(如 512Mi+),并设置 HPA。
- WASM 插件限制:WASM 插件目前不适合极其密集的计算任务(如视频转码),仅适合逻辑判断和数据转换。
5. 发展趋势展望
技术演进方向
- 更深度的 Dapr 集成:随着云原生应用复杂度增加,Higress 可能会进一步与 Dapr 结合,成为服务网格与 Sidecar 模式的统一入口。
- 推理加速与缓存:未来可能会集成语义缓存层,对相似的 LLM Query 直接返回缓存结果,以降低 API 调用成本。
社区反馈与改进空间
- 文档与控制台体验:目前控制台功能强大但较为复杂,对于初学者上手门槛较高。未来需要更简化的“向导式”配置。
- WASM 生态:虽然支持 WASM,但高质量的预置插件市场尚需时间积累。
6. 学习建议
适合人群
- 具备一定 Kubernetes 基础的后端工程师。
- 需要落地 AI 应用的架构师。
- 对云原生网关技术(Envoy/Istio)感兴趣的开发者。
学习路径
- 基础层:理解 HTTP 代理、反向代理、负载均衡算法。
- 云原生层:学习 Kubernetes Ingress/Gateway API 标准。
- 核心层:深入 Envoy 架构(Listener, Filter, Cluster)和 xDS 协议。
- 实践层:尝试编写一个 Go WASM 插件(例如:给 HTTP Header 增加一个自定义字段),并在 Higress 中部署。
7. 最佳实践建议
部署策略
- 高可用部署:在 K8s 中部署 Higress 时,建议使用
DaemonSet配合节点亲和性,以保证网关性能与节点绑定,减少网络跳转;或者使用HPA基于 CPU/连接数进行弹性伸缩。 - 配置隔离:利用命名空间隔离不同租户的路由配置,避免误操作。
性能优化
- 连接池:合理配置 Envoy 的 Upstream 连接池,避免频繁建立 TCP 连接导致的延迟。
- WASM 插件优化:WASM 插件中的日志打印会显著影响性能,生产环境插件应尽量减少日志输出或使用异步日志上报。
安全建议
- 最小权限原则:Higress 访问 K8s API 时应使用 RBAC 限制权限。
- AI 安全:务必在 AI 路由上配置“敏感词拦截”插件,防止 LLM 泄露企业内部敏感信息。
8. 哲学与方法论:第一性原理与权衡
抽象层的转移与复杂性
Higress 在抽象层上做了一件关键的事:将“流量控制”与“业务逻辑(通过 WASM)”解耦,并将“AI 协议处理”网关化。
- 复杂性转移:它将 LLM 调用中的重试、鉴权、流式截断等复杂性从应用代码(库/用户)转移到了基础设施层(网关)。
- 代价:这种转移增加了运维的复杂性。现在,开发者不仅要写代码,还要理解网关的路由配置和 WASM 沙箱的局限性。
价值取向
- 可扩展性 > 简单性:Higress 明确选择了 WASM 这条路径,牺牲了 Nginx 那种“写个 conf 就能跑”的简单性,换取了动态扩展和安全性。
- **标准化 >
代码示例
| |
| |
| |
案例研究
1:阿里巴巴内部电商业务重构
1:阿里巴巴内部电商业务重构
背景:
阿里巴巴内部电商业务(如淘宝、天猫)在微服务化过程中面临服务数量激增、流量管理复杂等挑战。原有网关系统在处理高并发流量时性能瓶颈明显,且无法灵活支持新业务需求的快速迭代。
问题:
- 传统网关在高并发场景下延迟较高,影响用户体验
- 动态路由和流量灰度发布能力不足,导致新功能上线风险高
- 多语言(Java、Go、Node.js)服务治理困难,缺乏统一流量管控标准
解决方案:
基于 Higress 构建新一代云原生 API 网关,采用以下关键措施:
- 利用 Higress 的高性能 HTTP/3 和 QUIC 协议支持,降低网络延迟
- 通过 Higress 的动态路由和流量标签功能,实现精细化流量灰度
- 集成 Higress 的 Wasm 插件机制,支持多语言服务治理策略的动态扩展
效果:
- 核心链路 P99 延迟降低 30%,峰值 QPS 提升 50%
- 新功能灰度发布效率提升 80%,回滚时间从分钟级降至秒级
- 统一了 Java/Go/Node.js 服务的流量治理策略,运维效率提升 40%
2:某头部互联网公司微服务网关升级
2:某头部互联网公司微服务网关升级
背景:
该公司拥有超过 500 个微服务,原有基于 Nginx 的网关方案在配置管理、监控和扩展性方面存在明显短板。随着业务全球化,需要支持多地域容灾和流量调度。
问题:
- Nginx 配置变更需要手动操作,易出错且无法快速响应业务需求
- 缺乏统一的流量监控和异常熔断机制,故障定位耗时超过 1 小时
- 跨地域流量调度依赖 DNS,无法实现实时动态调整
解决方案:
采用 Higress 替换传统网关,实现以下改进:
- 通过 Higress 的控制平面实现配置版本管理和自动化部署
- 集成 Higress 的内置可观测性能力,实时监控服务健康状态
- 使用 Higress 的全局流量管理(GTM)功能,基于延迟和负载动态调度跨地域流量
效果:
- 配置变更效率提升 90%,人为操作失误率下降 95%
- 故障平均定位时间从 60 分钟缩短至 5 分钟
- 跨地域流量调度延迟优化 40%,用户访问体验显著提升
3:金融科技公司 API 生态建设
3:金融科技公司 API 生态建设
背景:
该公司需要向合作伙伴开放 200+ 个金融 API,对安全性、合规性和性能有极高要求。原有 API 管理平台无法满足金融级的安全审计和精细化管控需求。
问题:
- API 调用缺乏细粒度的权限控制,存在数据泄露风险
- 无法对第三方调用进行实时限流和计费,导致资源滥用
- 合规审计日志分散存储,无法满足监管要求
解决方案:
基于 Higress 构建 API 网关,重点实现:
- 集成 Higress 的 JWT/OAuth2.0 认证和 IP 白名单功能
- 开发自定义 Wasm 插件实现多维度限流和动态计费
- 利用 Higress 的审计日志对接合规系统,实现全链路追溯
效果:
- API 安全事件发生率下降 85%,通过金融级安全认证
- 第三方调用异常流量减少 70%,资源成本降低 30%
- 合规审计效率提升 60%,满足 PCI-DSS 等监管要求
对比分析
与同类方案对比
| 维度 | alibaba/higress | Kong | APISIX |
|---|---|---|---|
| 性能 | 高性能,基于Envoy和Istio,支持高并发 | 高性能,基于Nginx和LuaJIT,适合高并发场景 | 极高性能,基于Lua和Nginx,性能优于Kong |
| 易用性 | 提供图形化控制台,集成Kubernetes和Istio,配置灵活 | 提供图形化界面和丰富的插件,配置较复杂 | 提供图形化界面和动态路由,配置相对简单 |
| 成本 | 开源免费,企业版需付费 | 开源免费,企业版需付费 | 完全开源免费,无企业版 |
| 功能 | 支持流量管理、安全防护、可观测性,集成WAF | 插件丰富,支持认证、限流、监控等 | 功能全面,支持动态路由、插件热加载 |
| 社区 | 阿里背书,社区活跃,文档完善 | 社区成熟,插件生态丰富 | 社区活跃,文档详细,国内用户多 |
| 扩展性 | 支持自定义插件,基于Go和WASM | 支持Lua插件扩展,灵活性高 | 支持Lua和Python插件扩展 |
优势分析
- 优势1:深度集成Kubernetes和Istio,适合云原生环境。
- 优势2:提供WAF功能,安全防护能力强。
- 优势3:支持WASM插件,扩展性高,性能损耗低。
不足分析
- 不足1:社区和插件生态不如Kong和APISIX成熟。
- 不足2:学习曲线较陡,对Istio和Envoy的依赖增加了复杂性。
- 不足3:企业版功能需付费,成本可能高于完全开源的方案。
最佳实践
最佳实践指南
实践 1:基于 Envoy 的深度定制与性能优化
说明: Higress 是基于 Envoy 和 Istio 构建的,针对云原生和高并发场景进行了深度优化。最佳实践包括充分利用其高性能的 HTTP/3 和 QUIC 支持来提升网络传输效率,以及利用其可扩展的架构来处理大规模流量。
实施步骤:
- 部署 Higress 网关并启用 HTTP/3 支持。
- 配置 QUIC 协议以减少连接延迟。
- 监控 Envoy 的性能指标,如延迟和吞吐量。
注意事项: 确保客户端支持 HTTP/3,否则会自动降级到 HTTP/2。
实践 2:使用 Wasm 插件扩展功能
说明: Higress 支持 WebAssembly (Wasm) 插件,允许开发者使用多种编程语言(如 C++, Go, Rust)编写自定义逻辑,而无需修改网关核心代码。这提供了极高的灵活性和安全性。
实施步骤:
- 编写 Wasm 插件代码并编译为
.wasm文件。 - 通过 Higress 控制台或 CLI 上传插件。
- 配置插件路由和生效范围。
注意事项: Wasm 插件的执行会增加少量延迟,需在性能和功能之间权衡。
实践 3:集成阿里云服务与多云管理
说明: Higress 原生集成阿里云服务(如 MSE, SLB, ACK),同时支持多云和混合云架构。最佳实践包括利用其与阿里云产品的深度集成来简化运维,或将其作为统一入口管理跨云流量。
实施步骤:
- 在阿里云 ACK 上部署 Higress。
- 配置与 MSE (Microservices Engine) 的服务发现集成。
- 设置跨云负载均衡策略。
注意事项: 跨云部署时需确保网络连通性和安全组配置正确。
实践 4:安全防护与流量治理
说明: Higress 提供内置的安全功能,如 IP 黑白名单、限流熔断和 JWT 认证。最佳实践是结合这些功能与外部安全系统(如 WAF)构建多层防御体系。
实施步骤:
- 配置 IP 黑白名单限制访问来源。
- 启用限流策略保护后端服务。
- 集成 JWT 认证验证请求合法性。
注意事项: 定期更新安全规则以应对新威胁。
实践 5:服务发现与动态路由
说明: Higress 支持多种服务发现机制(如 Nacos, Consul, Kubernetes Service)。最佳实践是根据业务需求动态调整路由规则,实现灰度发布和蓝绿部署。
实施步骤:
- 配置 Nacos 或 Consul 作为服务注册中心。
- 定义动态路由规则,基于请求头或权重分流。
- 测试灰度发布流程。
注意事项: 确保服务注册中心的高可用性,避免单点故障。
实践 6:可观测性与监控集成
说明: Higress 提供丰富的可观测性功能,包括 Prometheus 指标、分布式追踪和日志采集。最佳实践是集成这些工具到现有监控体系(如 Grafana, SkyWalking)。
实施步骤:
- 启用 Prometheus 指标采集。
- 配置访问日志和错误日志输出。
- 集成 OpenTelemetry 进行分布式追踪。
注意事项: 避免日志量过大影响性能,需合理设置采样率。
实践 7:平滑迁移与兼容性
说明: 对于从传统网关(如 Nginx, Kong)迁移到 Higress 的场景,最佳实践是利用其兼容性工具和渐进式迁移策略,确保业务连续性。
实施步骤:
- 使用 Higress 提供的配置转换工具迁移旧规则。
- 在测试环境验证配置正确性。
- 通过流量切换逐步将生产流量导入 Higress。
注意事项: 迁移前需充分测试,重点关注配置差异和性能表现。
性能优化建议
性能优化建议
优化 1:启用 Wasm 插件与原生插件隔离
说明: Higress 支持 Wasm 插件,但 Wasm 插件的执行效率低于原生 Go 插件。对于高频调用的插件(如认证、限流),建议优先使用原生插件或优化 Wasm 插件的执行逻辑。
实施方法:
- 将高频插件用 Go 重写为原生插件。
- 对 Wasm 插件启用缓存(如
wasm_cache配置)。 - 避免在 Wasm 插件中执行复杂计算或阻塞操作。
预期效果: 减少 20%-40% 的请求延迟。
优化 2:调整连接池与线程模型
说明: Higress 基于 Envoy,其默认配置可能未充分利用多核 CPU。优化工作线程数和连接池大小可提升吞吐量。
实施方法:
- 设置
--concurrency参数为 CPU 核心数(如--concurrency=8)。 - 调整
cluster级别的max_requests_per_connection和connection_pool参数。 - 启用 HTTP/2 或 HTTP/3 以减少连接数。
预期效果: 吞吐量提升 30%-50%。
优化 3:启用高效缓存策略
说明: 对静态内容或高频 API 响应启用缓存,可显著减少后端压力和响应时间。
实施方法:
- 在路由配置中启用
response_cache插件。 - 设置合理的
cache_key(如基于 URL 或 Header)。 - 配置缓存 TTL(如
cache_ttl: 60s)。
预期效果: 缓存命中时延迟降低 80%-90%。
优化 4:优化日志与监控采样
说明: 高频日志写入和监控采样会消耗大量 CPU 和 I/O 资源。通过降低日志级别和采样率可减少开销。
实施方法:
- 将日志级别从
debug改为info或warn。 - 启用日志采样(如
log_sample_rate: 0.1)。 - 使用异步日志插件(如
file_logger的异步模式)。
预期效果: 减少 10%-20% 的 CPU 占用。
优化 5:启用零拷贝与内存优化
说明: Higress 的内存分配和拷贝可能成为瓶颈。启用零拷贝和内存池可减少 GC 压力。
实施方法:
- 启用 Envoy 的
use_fdma(快速数据路径加速)。 - 调整 Go 的
GOGC和GOMEMLIMIT参数。 - 避免在插件中频繁分配大对象。
预期效果: 内存占用降低 15%-30%,GC 暂停时间减少 20%。
优化 6:预热与负载均衡策略
说明: 冷启动或负载不均会导致性能抖动。通过预热和智能负载均衡可平滑流量。
实施方法:
- 启用
health_check的always_log_health_check_failures。 - 配置
least_request负载均衡算法。 - 对新实例启用
warmup_duration_secs预热。
预期效果: 减少 10%-15% 的 P99 延迟波动。
学习要点
- 基于您提供的关键词(Alibaba/Higress)及来源(GitHub Trending),以下是关于 Higress 项目最值得关注的 5 个关键要点总结:
- Higress 是阿里云开源的、基于 Istio 构建的下一代云原生 API 网关,旨在解决云原生时代流量治理与入口管理的复杂性问题。
- 它深度集成了 Envoy 作为高性能数据面,并针对 Kubernetes 环境进行了优化,提供比传统网关更高的资源利用率和请求转发性能。
- 该项目实现了网关与微服务治理的深度融合,支持无缝对接 Nacos、Consul 等注册中心,能够对服务进行精细化的全生命周期管理。
- Higress 提供了标准化的 Wasm 插件市场,支持通过 Lua、Go、Rust 等语言编写业务逻辑,实现了网关功能的灵活扩展与低代码开发。
- 它具备极强的兼容性,不仅支持 Ingress 和 Gateway API 标准,还能作为从 Nginx、Kong 或传统 Spring Cloud Gateway 迁移的理想目标。
- 项目内置了针对 AI 大模型场景的优化,支持 AI 代理与提示词缓存,可作为 LLM 应用的统一流量入口与防护层。
学习路径
学习路径
阶段 1:入门基础与核心概念
学习内容:
- 云原生网关基础: 理解 API 网关在微服务架构中的定位、作用以及南北向流量与东西向流量的区别。
- Higress 架构概览: 了解 Higress 的诞生背景(基于 Envoy 和 Istio),其与 Nginx、APISIX 或 Kong 的区别。
- 基本安装与部署: 学习如何在本地 Docker 环境或 Kubernetes 集群中快速安装 Higress。
- 控制台操作: 熟悉 Higress 的控制台界面,进行简单的路由配置(如将特定域名转发到后端服务)。
- K8s Ingress 基础: 复习 Kubernetes Ingress 资源的基本概念,因为 Higress 兼容 K8s Ingress 规范。
学习时间: 1-2周
学习资源:
- Higress 官方文档 (快速开始章节)
- Higress GitHub 仓库 (README 和 Architecture 文档)
- Envoy 官方文档中关于代理基础的部分
学习建议: 不要一开始就陷入复杂的配置。建议先使用 Docker Compose 在本地启动一个最简实例,通过浏览器访问控制台,尝试配置一个简单的 HTTP 路由,并使用 curl 命令验证流量是否通过。
阶段 2:流量治理与核心功能
学习内容:
- 路由与流量管理: 深入学习路由规则,包括基于 Header、Query Parameter、Cookie 的流量匹配与路由。
- 负载均衡策略: 掌握轮询、随机、最少连接等负载均衡算法的配置。
- 服务发现与注册: 学习如何将 Higress 接入 Nacos、Consul 或 Kubernetes CoreDNS,实现动态服务发现。
- 全链路安全: 配置 HTTPS 证书管理、Basic Auth(基础认证)、JWT 认证以及 CORS 跨域配置。
- 插件系统入门: 了解 Higress 的插件机制,尝试在控制台开启并配置官方提供的插件(如请求限流、响应重写)。
学习时间: 2-3周
学习资源:
- Higress 官方文档 - 流量管理章节
- Higress 官方插件市场文档
- Kubernetes Service 与 Ingress 进阶教程
学习建议: 搭建一个包含两个服务副本的测试环境。尝试配置 Higress 的金丝雀发布(灰度发布)功能,按 Header 或权重将流量切分到不同版本的服务,这是网关最核心的日常运维技能。
阶段 3:高级扩展与 WAF 防护
学习内容:
- WAF (Web Application Firewall): 学习如何配置 Higress 的 WAF 防护规则,防御 SQL 注入、XSS 等常见 Web 攻击。
- 限流熔断: 深入理解并配置基于请求速率、并发连接数的限流策略,以及服务熔断降级规则,保护后端服务稳定性。
- Dubbo 协议支持: 学习 Higress 如何桥接 HTTP 到 Dubbo 协议,实现网关对 Java 微服务生态的直接调用。
- Mock 与调试: 使用 Higress 的 Mock 功能模拟后端响应,便于前端开发或故障排查。
- 可观测性集成: 学习配置日志(访问日志、审计日志)对接 Kafka、SLS 或 Elasticsearch,以及配置 Prometheus 监控指标与 Grafana 面板。
学习时间: 3-4周
学习资源:
- Higress 官方文档 - 高级功能章节
- OWASP Top 10 安全风险知识库
- Prometheus 监控最佳实践
学习建议: 重点关注“高可用”场景。尝试使用压测工具(如 Apache Bench 或 wrk)对配置了限流的服务进行压测,观察 Higress 的保护效果,并查看监控面板确认 QPS 与延迟数据。
阶段 4:开发者生态与自定义开发
学习内容:
- Wasm 插件开发: 学习 WebAssembly (Wasm) 基础,使用 Go 或 C++ 编写自定义 Wasm 插件,实现特定业务逻辑(如自定义鉴权、数据转换)。
- Lua 脚本支持: 了解如何在 Higress 中使用 Lua 脚本进行轻量级逻辑扩展(如果版本支持)。
- 多租户与多环境管理: 在大型生产环境中,如何利用命名空间或控制台权限管理多租户网关配置。
- 多集群容灾: 了解 Higress 在多 Kubernetes 集群场景下的部署模式与流量调度策略。
- 性能调优: 学习 Envoy 的配置调优,包括连接池、缓冲区大小等参数对性能的影响。
学习时间: 4-6周
学习资源:
- Higress �
常见问题
1: Higress 是什么?它与阿里巴巴有什么关系?
1: Higress 是什么?它与阿里巴巴有什么关系?
A: Higress 是一款开源的、云原生的 API 网关。它起源于阿里巴巴内部,是基于集团多年在电商、金融等高并发场景下的网关建设经验沉淀而成的。
具体来说,Higress 是阿里云将内部使用的“云原生网关”技术进行开源的产品。它底层基于 Envoy 和 Istio 进行了深度的二次开发和增强,旨在提供更符合国内开发者习惯、性能更高且与云原生生态结合更紧密的流量管理组件。它既支持传统的 Kubernetes Ingress 流量入口,也支持 API 网关的南北向流量管理,以及微服务间的治理。
2: Higress 与 Nginx、APISIX 或 Kong 等网关相比有什么优势?
2: Higress 与 Nginx、APISIX 或 Kong 等网关相比有什么优势?
A: Higress 的核心优势主要体现在以下几个方面:
- 技术架构先进:底层基于 Envoy(C++ 实现,高性能)和 Go(控制面),相比 Nginx(Lua 脚本扩展)或 Kong(基于 OpenResty),Higress 在处理长连接、热更新和扩展性上具有天然优势,且避免了 Lua 脚本层面的性能瓶颈。
- 深度集成 Istio:Higress 天然兼容 Istio 的 API 规范。它可以作为 Istio 的入口网关无缝接管集群流量,解决了原生 Istio IngressGateway 配置复杂、缺乏控制台界面的问题。
- 安全防护:内置了与阿里云 Web 应用防火墙同源的 WAF 插件,能够提供开箱即用的安全防护能力。
- 插件生态:支持 WASM (WebAssembly) 插件,允许开发者使用 Go、C++、Rust 等多种语言编写插件,且插件热更新无需重启网关,安全性更高(插件崩溃不会导致网关崩溃)。
3: Higress 是否支持从 Nginx 或 Ingress Controller 进行平滑迁移?
3: Higress 是否支持从 Nginx 或 Ingress Controller 进行平滑迁移?
A: 是的,Higress 非常重视迁移体验,并提供了专门的工具来降低迁移成本。
- Nginx Ingress 迁移:Higress 提供了 Nginx Ingress Annotation 的兼容支持。用户通常不需要修改大量的 YAML 配置,只需将 Ingress Class 修改为 Higress 指定的标识,即可由 Higress 接管流量。同时,Higress 提供了配置转换工具,可以将 Nginx 的
nginx.conf配置转换为 Higress 的路由配置。 - 传统网关迁移:对于使用 Kong、Spring Cloud Gateway 等传统网关的用户,Higress 支持标准的 Kubernetes Ingress 资源定义,并提供了控制台 UI 来可视化配置路由、鉴权和流量转发,大大降低了配置迁移的门槛。
4: 如何在 Higress 中开发和使用自定义插件?
4: 如何在 Higress 中开发和使用自定义插件?
A: Higress 提供了非常灵活的插件扩展机制,主要分为以下几种方式:
- WASM 插件 (推荐):这是 Higress 最具特色的扩展方式。开发者可以使用 Go、AssemblyScript 或 Rust 编写业务逻辑,编译成
.wasm文件。通过 Higress 控制台或 WasmPlugin CRD 上传后,网关会在隔离的沙箱中运行这些代码。这种方式既利用了 Envoy 的高性能,又保证了插件开发的高效性和安全性(插件故障不会搞挂网关)。 - 原生插件:对于极高性能要求的场景,用户可以直接修改 Higress 的源码(基于 Go 和 C++)并重新编译构建镜像,但这通常仅适合深度二次开发的场景。
- Lua 插件:虽然 Higress 主推 WASM,但为了兼容旧有的 Nginx/OpenResty 生态,它依然支持通过特定方式加载 Lua 脚本,不过建议优先使用 WASM 以获得更好的隔离性和性能。
5: Higress 是否支持 Dubbo 或 gRPC 等非 HTTP 协议?
5: Higress 是否支持 Dubbo 或 gRPC 等非 HTTP 协议?
A: 是的,Higress 支持多种协议的代理与转换。
- gRPC:Higress 原生支持 gRPC 协议的代理,支持 gRPC 到 HTTP/JSON 的协议转换,允许前端使用 HTTP 调用后端的 gRPC 服务。
- Dubbo:这是 Higress 区别于许多国外开源网关的一个重要特性。由于出身阿里,Higress 对 Java 生态中流行的 Dubbo 协议提供了深度支持。它可以将 HTTP/HTTPS 请求转换为 Dubbo 协议调用,实现微服务架构下的前端 HTTP 与后端 RPC 的无缝互通。
6: Higress 的性能表现如何?能否支撑高并发场景?
6: Higress 的性能表现如何?能否支撑高并发场景?
A: Higress 的设计初衷就是为了应对阿里内部“双11”级别的高并发流量,因此性能表现非常优异。
- 底层优势:数据面
思考题
## 挑战与思考题
### 挑战 1: [简单]
问题**: 环境搭建与基础流量验证
在本地或 Kubernetes 环境中部署 Higress。配置一个简单的路由规则,将访问 http://localhost/test 的流量转发到一个公共的测试服务(如 httpbin.org),并成功返回 200 状态码。
提示**:
实践建议
以下是针对 Higress 仓库的 6 条实践建议,侧重于 AI 网关的实际落地与生产环境稳定性:
1. 利用 WASM 插件实现 AI 协议的私有化适配
- 场景:企业内部调用自研或非标准格式的大模型 API。
- 建议:不要试图修改 Higress 核心代码来支持特殊的鉴权或参数格式。利用 Higress 对 WebAssembly (WASM) 的原生支持,使用 Go 或 C++ 编写插件来处理请求体的转换(如将 OpenAI 格式转换为内部模型格式)。这样既能实现协议适配,又能保证网关核心的稳定性,且插件支持热更新,无需重启服务。
2. 配置基于语义的路由规则以实现模型分流
- 场景:不同复杂度的用户查询需要分发到不同参数量或成本的模型(例如简单问题给小模型,复杂推理给大模型)。
- 建议:在路由配置中,充分利用 Higress 的
headers或query_params匹配能力。建议在应用端通过 Prompt Engineering 预判请求类型并打上 Header 标签(如x-model-tier: high),网关侧根据该标签将流量精确导向不同的 Service(如通义千问 vs. Llama 3),实现成本与性能的最优平衡。
3. 警惕流式传输(SSE)的连接超时配置
- 陷阱:AI 生成响应往往耗时较长,且使用 Server-Sent Events (SSE) 机制。
- 建议:务必检查并调整上游服务和路由的
idleTimeout和requestTimeout配置。默认的 HTTP 网关超时时间(通常较短)会导致大模型在生成内容中途连接断开。建议将涉及 AI 对话的路由超时时间设置得较为宽松(如 5 分钟),并确保启用了 HTTP/2 协议以提升多路复用性能。
4. 实施细粒度的 Token 预留与并发限流
- 场景:防止后端模型 API 被突发流量击穿,或控制 Token 消耗成本。
- 建议:不要仅依赖简单的 QPS(每秒请求数)限流。建议结合 Higress 的局部限流或全局限流功能,针对 AI 接口配置基于“请求 Token 数”或“预估并发数”的限流策略。如果无法精确计算 Token,可基于请求体大小进行粗粒度限流,避免因 Prompt 过长导致后端 OOM(内存溢出)。
5. 建立模型级别的熔断与降级机制
- 最佳实践:大模型 API 服务(尤其是外部 SaaS 服务)可能出现不稳定或限流的情况。
- 建议:在 Higress 中配置主动健康检查和熔断器。当检测到某个模型提供商返回 429 (Too Many Requests) 或 503 错误率达到阈值时,自动触发熔断,将流量切换到备用模型或返回预设的兜底响应,而不是将错误直接抛给客户端,从而提升用户体验的鲁棒性。
6. 严格管理 API Key 的轮换与分发安全
- 陷阱:在网关配置文件中硬编码 LLM Provider 的 API Key。
- 建议:使用 Higress 支持的 KMS (Key Management Service) 或 Secret 资源管理功能来存储敏感的鉴权信息。在插件或路由配置中通过引用 Secret 的方式调用 Key。这样在 Key 泄露或需要定期轮换时,只需在控制台更新 Secret 即可,无需重新部署网关配置,降低了安全风险。
引用
- GitHub 仓库: https://github.com/alibaba/higress
- DeepWiki: https://deepwiki.com/alibaba/higress
注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。
站内链接
- 分类: 系统与基础设施 / AI 工程
- 标签: Higress / API 网关 / 阿里开源 / Istio / Envoy / LLM / WASM / MCP 协议
- 场景: AI/ML项目 / 云原生/容器 / DevOps/运维
相关文章
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关
- 阿里开源 Higress:AI 原生 API 网关 这篇文章由 AI Stack 自动生成,包含多次大模型调用,提供深度的结构化分析。