Higress浅剖析
🥰Higress浅剖析
type
status
date
slug
summary
tags
category
icon
password
Status

Higress 的起源

要理解 Higress 的价值,我们必须首先回顾其之前所面临的根本性挑战——即配置更新的重载问题。

Nginx/Tengine 的辉煌与局限

以 Nginx 为代表的传统网关,其架构设计堪称经典。它采用多进程模型,一个 master 进程负责管理多个 worker 进程,而 worker 进程则真正处理客户端请求。当管理员需要更新配置时(例如,添加一个新的路由规则),标准操作是执行 nginx -s reload 命令。
这个命令会触发一个看似优雅的流程:master 进程验证新配置文件的语法,然后启动一组新的 worker 进程来加载新配置;同时,它会向旧的 worker 进程发送一个“优雅关闭”的信号,让它们处理完当前所有请求后自行退出。然而,这个在短连接为主的 Web 1.0 时代行之有效的模型,在现代应用场景下却暴露了致命的缺陷。
“优雅关闭”并不意味着连接的完美保持。对于长连接协议,如 WebSockets、gRPC 流或在 AI 应用中广泛使用的服务器发送事件(Server-Sent Events, SSE),即使是短暂的进程切换也可能导致连接被中断 。在一个大规模、高并发的实时系统中,频繁的配置变更(例如,因服务发布或弹性伸缩)将导致持续的网络抖动,严重影响业务的稳定性和用户体验 。这并非 Nginx 的一个 bug,而是其底层进程模型的一个固有架构约束。

Envoy/xDS 范式:云原生动态配置的革命

与 Nginx 的重载模型截然不同,Higress 的数据平面核心——Envoy,从设计之初就采用了完全动态化、API 驱动的配置模型。其背后的关键技术是 xDS (Discovery Service) API 协议族 。
xDS 是一组基于 gRPC 的 API,它允许一个外部的管理服务器(即控制平面)向 Envoy 代理(即数据平面)实时推送配置更新。这些更新是在内存中以原子方式热交换的,整个过程无需重启任何进程,也无需中断任何现有的网络连接。配置变更的生效时间可以达到毫秒级,并且对正在传输的业务流量完全透明 1。
下面的图表演示了 Nginx 和 Higress 在处理配置更新流程上的根本差异。
代码段
notion image
图 1: 配置更新流程对比
这个架构上的范式转换为 Higress 带来了与生俱来的优势。问题的关键不在于 Nginx “不好”,而在于其核心架构与现代动态、状态化的网络协议需求不匹配。正是为了解决在阿里巴巴内部大规模生产环境中遇到的这一具体且痛苦的运维难题,Higress 才应运而生。它从根本上消除了因配置变更带来的流量抖动,为云原生和 AI 时代的实时应用提供了坚实的基础。

核心架构:控制平面与数据平面

Higress 遵循了云原生网络领域最经典的设计模式:将系统明确划分为控制平面(Control Plane)和数据平面(Data Plane)。这种分离使得系统各部分的职责更加清晰,也极大地提升了整体的可扩展性和可靠性。

数据平面 (higress-gateway)

数据平面是网关的“肌肉”,是所有网络流量的必经之路。
  • 核心技术higress-gateway 组件基于一个扩展版的 Envoy Proxy 构建。Envoy 是一个用 C++ 编写的、经过大规模生产验证的高性能代理 。
  • 核心职责:它的唯一职责就是高效地处理网络流量。这包括接收客户端连接,应用一系列被称为“过滤器链(Filter Chain)”的规则,然后将请求代理到正确的上游服务 3。
  • 工作模式:数据平面本身是“无状态”且“被动”的。它不主动创造配置,而是完全通过控制平面下发的指令来工作,这保证了其轻量和高效。

控制平面 (higress-controller)

如果说数据平面是肌肉,那么控制平面 higress-controller 就是系统的“大脑”。
  • 核心职责:它负责整个网关的管理和配置分发 。
  • 信息来源:控制平面会监控多种配置源。在 Kubernetes 环境中,它会监听(Watch)像 IngressGateway API 对象以及 Higress 自定义的 WasmPlugin 等 CRD 资源的变化。同时,它还能对接 Kubernetes 之外的服务注册中心(如 Nacos、ZooKeeper)来获取服务信息 。
  • 核心产出:控制平面的主要任务是将这些来自不同来源、高层次的配置意图,翻译成 Envoy 能够理解的、低层次的具体配置指令,然后通过 xDS API 推送给数据平面。

深入 xDS 协议族

xDS 并非单一的 API,而是一套协同工作的 gRPC 发现服务,它们共同构成了控制平面与数据平面之间的神经网络。
  • LDS (Listener Discovery Service):监听器发现服务。它告诉 Envoy 应该在哪些端口上监听流量,以及如何处理这些流量(例如,使用哪个 TLS 证书,应用哪个过滤器链)。
  • RDS (Route Discovery Service):路由发现服务。它为监听器提供详细的路由规则,比如“对于域名为 api.example.com 且路径为 /users 的请求,应该路由到 user-service 集群” 。
  • CDS (Cluster Discovery Service):集群发现服务。它定义了上游服务的集群,包括负载均衡策略(如轮询、哈希)、健康检查参数、TLS 配置等 。
  • EDS (Endpoint Discovery Service):端点发现服务。它提供组成一个集群的后端实例的具体网络地址(IP 和端口)。这是服务发现机制的最终落地,将服务名解析为具体的 Pod 或 VM 地址 。
  • ADS (Aggregated Discovery Service):聚合发现服务。为了保证配置的一致性和正确的应用顺序(例如,必须先有集群定义才能应用引用该集群的路由),ADS 提供了一种机制,将所有 xDS 更新聚合在单一的 gRPC 流中进行传输 。
下面的架构图清晰地展示了 Higress 各组件之间的协作关系。
notion image
图 2: Higress 核心架构图
为了更具体地理解这一流程,让我们追踪一次配置变更的完整生命周期。
notion image
图 3: 端到端配置传播流程
Higress 的强大之处在于它明智地站在了巨人的肩膀上。构建一个正确、可扩展且有韧性的 xDS 控制平面是一项极其复杂的工程挑战。Istio 项目为此投入了多年的顶尖工程资源,其控制平面(Istiod)已经在全球最大规模的生产环境中得到了验证。Higress 明确其核心“基于 Istio 和 Envoy” ,这意味着它复用或深度借鉴了 Istio 成熟的控制平面逻辑。这一战略决策使其能够避免重复制造底层轮子,从而将研发精力聚焦于更高层次的功能创新,如 AI 网关能力和用户友好的控制台,这无疑加速了项目的发展并保障了其发布初期的可靠性。

Higress 的应用场景:

Higress 的一个核心价值主张是其“三位一体”的架构,它将传统的流量网关微服务网关安全网关的功能集成,旨在为用户大幅降低部署、运维的复杂度和成本。

作为现代化的 Kubernetes Ingress

作为进入 Kubernetes 集群的流量入口,Higress 提供了远超原生 Ingress 规范的能力。
  • 平滑迁移路径:Higress 的一个关键特性是它兼容了大量 ingress-nginx 的注解(Annotations)。ingress-nginx 是 Kubernetes 社区事实上的标准 Ingress 控制器,这意味着对于绝大多数现有用户而言,从 ingress-nginx 迁移到 Higress 的成本极低,几乎不需要修改现有的 Ingress 资源配置,即可完成切换 。
  • 性能优势:相较于 ingress-nginx,Higress 在性能上表现出巨大优势。测试表明,它的资源开销显著降低,而路由配置的生效速度则提升了十倍以上 2。这对于需要频繁进行服务发布和弹性伸缩的动态环境至关重要。

作为高性能的微服务网关

除了处理南北向(进入集群)的流量,Higress 同样胜任作为东西向(集群内部)微服务通信的中心网关。
  • 广泛的服务发现集成:Higress 能够与 Kubernetes 之外的多种服务注册中心无缝对接,包括 Nacos、ZooKeeper、Consul 和 Eureka 等 。这使得它能够统一管理混合部署环境中的服务路由。
  • 性能与成本效益:与传统的基于 Java 的微服务网关(如 Spring Cloud Gateway)相比,Higress 基于 C++ Envoy 内核,在性能和资源利用率上具有压倒性优势。在相同的流量负载下,Higress 的 CPU 和内存消耗要低得多,这直接转化为更低的运营成本 。

作为一体化的安全网关

Higress 将关键的安全能力内置于网关层面,从而取代了在流量链路最前端部署独立 WAF(Web 应用防火墙)设备的传统模式。
  • 丰富的认证授权机制:它提供了全面的认证与授权策略支持,包括 key-auth(API 密钥认证)、hmac-auth(HMAC 签名认证)、jwt-auth(JWT 令牌认证)、basic-auth(基本认证)以及 oidc(OpenID Connect)等,能够满足绝大多数应用的安全准入需求 。
  • 开箱即用的防护能力:Higress 提供了即插即用的 WAF 防护插件和基于 IP/Cookie 的 CC 攻击防护插件,让用户无需复杂的配置就能获得基础的安全保障 。
这种“三位一体”的设计理念,直接挑战了传统网络基础设施的孤岛式模型。在过去,企业通常需要分别采购和维护边缘负载均衡器、API 网关和 WAF 防火墙,这不仅导致了复杂的流量路径和多点配置的难题,还增加了延迟和潜在的安全风险 3。Higress 通过将这些核心功能整合到由统一控制平面管理的单一数据平面中,极大地简化了技术栈。这种简化不仅仅是为了方便,更是一种战略优势,它通过提供单一的策略执行点,降低了总拥有成本(TCO),并提升了整体的安全性和可维护性。

AI 前沿:解构 Higress AI 网关

如果说上述功能是 Higress 作为一款优秀云原生网关的坚实基础,那么其在 AI 领域的深度布局则是它在当前市场中最核心的差异化竞争力。Higress 不仅仅是一个可以用于 AI 场景的网关,它正在被有目的地构建为一款真正的 AI 网关

统一的 LLM 接入与治理

  • 面临的挑战:现代 AI 应用常常需要与来自不同供应商(如 OpenAI, Anthropic, Google)的大语言模型(LLM)以及企业自建的模型进行交互。每个模型都有其独特的 API 端点、认证密钥和请求格式,这给应用层代码带来了巨大的集成和维护复杂性 。
  • Higress 的解决方案:Higress 提供了一个统一的代理层,对外暴露一个 OpenAI 兼容的 API 端点。应用只需与 Higress 通信,Higress 内部则根据请求参数(例如,JSON body 中的 model 字段)智能地将请求路由到相应的后端模型服务 。
  • AI 专属的治理策略:这才是 Higress AI 网关能力的精髓所在。它提供了一系列专为 AI 场景设计的插件:
    • ai-token-ratelimit:传统的基于请求数的速率限制对于 LLM 来说是远远不够的,因为其成本与消耗的 Token 数量直接相关。该插件能够智能地解析请求和响应,实时计算 Token 数量,并基于“每秒/分钟/小时的 Token 数”来执行精细化的速率限制。这对于成本控制和防止服务滥用至关重要 。
    • ai-cache (语义缓存):该插件能够缓存 LLM 的响应。对于重复的或语义上相似的查询,它可以直接返回缓存结果,从而极大地降低了调用延迟和 Token 消耗成本 2=。
    • AI 可观测性:Higress 提供了丰富的、针对 AI 场景的可观测性指标,例如追踪每个模型的 Token 使用量、P99 延迟、错误率等,为性能优化和成本分析提供了数据支持 。

模型上下文协议 (MCP) 生态系统

  • MCP 是什么?:模型上下文协议(Model Context Protocol)是一个新兴的开放标准,其灵感来源于语言服务器协议(LSP)。它旨在为 AI Agent 与外部工具(如数据库、API)和数据源提供一种标准化的交互方式 。MCP 致力于解决“N×M”的集成难题,即每个 Agent 都需要为每个工具编写一个定制化的连接器 。
  • 为何在网关上托管 MCP?:这是一个范式级的转变。通过将 MCP Server 作为 Higress 的一个插件来托管,所有来自 AI Agent 的工具调用都将通过网关进行。这带来了原生 MCP 协议所不具备的巨大治理优势 :
      1. 统一安全:将网关强大的认证授权机制(如 API 密钥、JWT)应用于工具调用,确保 Agent 的行为是经过授权的。
      1. 速率限制与滥用防护:防止 Agent 因逻辑错误或恶意攻击而压垮后端工具服务。
      1. 审计与可观测性:为 Agent 的每一次工具调用都留下完整的审计日志,使其行为可追溯、可分析。
      1. 简化部署:开发者无需再独立部署和维护 MCP Server 进程,极大地降低了运维复杂度 。
  • Higress 的 MCP 增强功能:Higress 通过提供“零代码”转换器,可以轻松地将企业现有的 OpenAPI 规范或数据库(如 MySQL、PostgreSQL)自动转换为功能完备的 MCP Server,极大地降低了 AI Agent 的集成门槛 。
下面的流程图展示了一次典型的 LLM API 调用是如何在 Higress 中被处理的。
代码段
图 4: AI 网关请求处理流程
而下图则描绘了由 Higress 赋能的、更为强大的 AI Agent 架构。
notion image
图 5: MCP 托管架构
通过这些功能,Higress 正在从一个单纯的网络代理,演变为一个“AI 应用交付控制器”。它管理的不再仅仅是网络流量,更是 AI 应用的成本、安全性和集成复杂性。它不仅仅理解 HTTP 协议,更理解什么是“Token”,并能基于此执行策略,这是一个智能性的巨大飞跃。
更进一步,通过集成 MCP,Higress 成为了 AI Agent 与外部世界交互的中央枢纽,为 Agent 提供了一个安全、可治理的“神经系统”。这使得 Higress 成为构建生产级、企业级 AI Agent 的关键基础设施,而不仅仅是简单的聊天机器人。项目的最终愿景,体现在其对 HiMarket——一个“AI 能力市场”——的投入上 。Higress 正是驱动这个市场的引擎,它为暴露 AI 工具(MCP Servers)和模型作为可消费、可计量的产品化 API 提供了安全、可靠的运行时。这表明 Higress 的目标是构建一个完整的生态系统,而非仅仅一个孤立的产品。

释放定制化逻辑:Wasm 扩展的威力

网关的可扩展性是其生命力的核心。Higress 在此做出了一个极具前瞻性的战略选择:将 WebAssembly (Wasm) 作为其首选的插件扩展机制。Wasm 提供了一个安全的沙箱执行环境,支持使用多种高级语言(如 Go, Rust, JS)编写插件,并且允许插件动态热加载,无需重启网关即可更新业务逻辑 。

网关扩展模型的比较分析

为了理解 Wasm 的优势,我们有必要将其与其他的网关扩展技术进行对比。
机制
安全性与隔离性
性能
开发体验
可移植性
原生 C++ 模块
低(直接在主进程)
最高(零拷贝)
复杂(C++ 语言,需深入了解 Envoy 内部)
差(与特定 Envoy 版本绑定)
Lua 脚本
低(脚本崩溃可导致 Envoy 崩溃)
中等(对于复杂逻辑有性能瓶颈)
简单(脚本语言,上手快)
中等(主要限于支持 Lua 的网关)
外部处理 (ext_proc)
最高(进程外隔离)
中等(引入网络延迟)
灵活(语言无关,通过 gRPC/HTTP 通信)
高(基于标准协议)
Wasm 插件
高(沙箱隔离)
高(接近原生性能)
良好(支持 Go/Rust 等现代语言)
最高(遵循 Proxy-Wasm 标准的网关均可)
表 1: 网关扩展机制对比
从上表可以看出,Wasm 在安全性、性能和开发体验之间取得了最佳的平衡点。它避免了原生 C++ 模块的开发复杂性和安全风险,同时提供了比 Lua 脚本更好的性能和隔离性,也比外部处理机制有更低的延迟和更强的请求处理能力(例如,修改请求体)。

Go Wasm 插件的开发工作流

Higress 社区为 Go 开发者提供了完善的 SDK 和工具链,使得 Wasm 插件的开发流程非常顺畅。
  1. 环境准备:安装 Go 语言环境,版本要求 >= 1.24,因为从该版本开始 Go 官方提供了对 Wasm(wasip1 目标)的原生编译支持 39。
  1. 编写代码:开发者使用官方提供的 higress-group/wasm-go SDK。核心概念包括:注册插件上下文、定义和解析插件配置,以及在请求/响应生命周期的不同阶段(如 ProcessRequestHeadersBy, ProcessRequestBodyBy)实现处理逻辑的钩子函数 39。
  1. 编译产物:使用标准的 Go 工具链,通过设置目标操作系统和架构(GOOS=wasip1 GOARCH=wasm)将代码编译成一个 .wasm 二进制文件 。
  1. 打包分发:将生成的 .wasm 文件打包到一个 OCI 兼容的容器镜像中,并推送到镜像仓库。这是 Wasm 插件的标准分发方式,便于版本管理和自动化部署 。
  1. 部署生效:在 Kubernetes 中创建一个 WasmPlugin 类型的自定义资源(CRD)。higress-controller 会监听到该资源的创建,然后指令 higress-gateway 从指定的镜像仓库拉取插件镜像,并动态地将 Wasm 模块加载到 Envoy 的过滤器链中,整个过程对流量无任何影响 40。

流式处理:AI 场景的关键能力

Higress 的 Wasm 插件模型有一个至关重要的特性:支持对请求和响应体的真正流式处理 。这对于依赖 SSE 协议的 AI 应用(例如,流式返回 LLM 的生成结果)是必不可少的。它允许插件以数据块(chunk)的方式逐段检查、修改或分析流式数据,而无需将整个响应体缓冲在内存中。如果采用缓冲方式,对于大模型生成的大量内容,将迅速耗尽网关内存,造成严重的性能瓶颈和稳定性问题 44。
选择 Wasm 是 Higress 对未来平台无关、安全、高性能扩展方式的一次长期战略投资。它将开发者从必须使用网关原生语言(C++)的束缚中解放出来,提供了一个比 Lua 脚本等方式远为安全可靠的运维模型。随着 Proxy-Wasm ABI 这一接口标准的逐渐成熟,Wasm 插件的可移植性将进一步增强,开发者编写的一个插件将有望在所有支持该标准的、基于 Envoy 的代理(如 Istio, Envoy Gateway 等)上运行。这有助于构建一个更加繁荣和开放的云原生扩展生态。

未来迭代与社区方向

一个开源项目的生命力不仅取决于其当前的能力,更在于其对未来的规划和对社区标准的主动拥抱。Higress 的发展路线图清晰地展示了其双轨并行的战略。

拥抱未来:向 Gateway API 的演进

  • Gateway API 是什么?:Kubernetes Gateway API 是由社区驱动、旨在取代传统 Ingress API 的下一代标准。它带来了诸多优势:面向角色的设计(将基础设施提供者、集群运维和应用开发者的职责清晰分离)、更强的表达能力(原生支持流量切分、基于 Header 的匹配等高级路由功能)以及更好的可扩展性
  • Higress 的承诺:Higress 社区正在积极地实现对 Gateway API 的全面支持 。这是一个强烈的信号,表明项目致力于与 Kubernetes 生态的未来标准保持一致,这确保了其长期的相关性和互操作性。

深化 AI 护城河

Higress 的路线图显示其未来的重心将持续向 AI 领域倾斜。由社区主办的“Higress AI 网关开发者挑战赛” 更是直接揭示了其近期的核心发力点:
  1. 加速 AI Agent 开发:构建低代码/零代码的工具链,用于快速创建、编排和管理 AI Agent。
  1. 优化 RAG 体验:在网关层面增强内置的检索增强生成(RAG)能力,提供更高效、更智能的知识检索。也就是我们在做的赛道
  1. 实现智能路由:开发更复杂的、基于内容感知的 LLM 流量路由策略,例如根据上下文缓存命中率进行负载均衡。
此外,其生态项目 HiMarket 的路线图也规划了在 2025 年 Q3/Q4 增加可观测性、计量计费、开发者门户等企业级功能 ,这进一步印证了其构建企业级 AI 生态中心的战略意图。

社区与贡献

Higress 项目在 alibabahigress-group GitHub 组织下进行开源协作 。社区欢迎各种形式的贡献,并提供了详细的开发者指南。贡献流程遵循标准的开源实践:通过 Fork 仓库、创建特性分支、提交有明确信息的 Commit,并发起 Pull Request 来参与项目开发 。
Higress 的发展战略非常清晰:一方面,通过全面拥抱 Gateway API 等社区标准,巩固其作为一流云原生网关的基础地位,这是在激烈竞争中立足的根本;另一方面,通过在 AI 领域的持续、深度创新,打造其独一无二的核心竞争力。其他网关可能将 AI 功能作为事后添加的零散特性,而 Higress 则正在围绕 AI 构建其全新的身份和未来。HiMarket 和开发者大赛等活动,不仅仅是功能发布,更是构建生态、打造技术护城河的战略举措,旨在将 Higress 定位为新一轮 AI 开发浪潮中的核心基础设施平台。
实时竞价(RTB)投放引擎技术说明文档Promopting:LLM工程入门指南
Loading...