新版本简介
Aliware
Higress 最新的 1.4 版本基于为通义千问,以及多家云上 AGI 厂商客户提供 AI 网关的积累沉淀,开源了大量 AI 原生的网关能力。同时也在 Ingress、可观测、流控等云原生能力上做了全方位升级:
AI 能力全面开源:提供包含安全防护、多模型适配、可观测、缓存、提示词工程等领域在内的多个开箱即用插件,核心能力例如:
AI 代理插件:支持对接多厂商协议,共支持15家 LLM 提供商,基本涵盖国内外主流大模型厂商。
AI 内容审核插件:支持对接阿里云内容安全云服务,可以拦截有害语言、误导信息、歧视性言论、违法违规等内容。
AI 统计插件:支持统计 Token 吞吐,支持实时生成 promethus metrics,以及在访问日志中打印相关信息。
AI 限流插件:支持基于 Token 吞吐进行后端保护式限流,也支持面向调用租户配置精确的调用额度限制。
-
AI 开发插件集:提供包含 LLM 结果缓存、提示词装饰等相关能力,可以助力AI应用的开发构建。
-
云原生能力升级:
-
优化超大规模路由配置:10000 个路由规模下,新增一条路由的生效时间从 1.3 版本的 10 秒优化至 3 秒,对比 ingress-nginx controller 等其他网关具备显著优势。 -
简化 HTTPS 证书管理:支持全局一份配置统一管理域名证书,解决 ingress-nginx 需要做 secret 拷贝的证书管理痛点,同时支持对接 Let's Encrypt 做免费证书自动签发和续签,且无需依赖 cert-manager。 -
提供集群流控插件:支持对接 Redis 做集群流控,可以实现 Header/URL 参数/IP 粒度的全局统一限流。 -
提供日志观测:Higress UI 控制台提供了开箱即用的网关日志查询能力。 -
支持极简部署:不依赖 K8s,一个 Docker 容器即可启动,方便个人开发者在本地环境使用。
AI 能力全面开源
Aliware
从 2020 年开始,阿里云微服务团队通过服务阿里内部,以及云上客户的需求,沉淀了云原生网关 Higress 这个云产品,并在 2022 年云栖大会正式开源。在开源社区分享代码和知识的同时,通过大量开源用户的使用反馈,得以进一步完善自身能力。
上图中所有插件均已开源,在最新版本 Higress 控制台可以直接开箱使用:
长连接:由 AI 场景常见的 Websocket 和 SSE 协议决定,长连接的比例很高,要求网关更新配置操作对长连接无影响,不影响业务。
高延时:LLM 推理的响应延时比普通应用要高出很多,使得 AI 应用面向恶意攻击很脆弱,容易被构造慢请求进行并发攻击,攻击者的成本低,但服务端的开销很高。
大带宽:结合 LLM 上下文来回传输,以及高延时的特性,AI 场景对带宽的消耗远超普通应用,网关如果没有实现较好的流式处理能力和内存回收机制,容易导致内存快速上涨。
Higress 应对这样的流量特征,有着天然优势:
长连接无损的热更新:不同于 Nginx 变更配置需要 Reload,导致连接断开,Higress 基于 Envoy 实现了连接无损的真正热更新。
安全网关能力:基于 Higress 的安全网关能力可以提供 IP/Cookie 等多维度的 CC 防护能力,面向 AI 场景,除了QPS,还支持面向 Token 吞吐的限流防护。
高效的流式传输:Higress 支持完全流式转发,并且数据面是基于 C++ 编写的 Envoy,在大带宽场景下,所需的内存占用极低。内存虽然相比 GPU 很廉价,但内存控制不当导致 OOM,导致业务宕机,损失不可估量。
下图来自 Higress 的开源用户 Sealos 将网关从 Ingress-nginx 迁移到 Higress 之后的资源用量对比,内存使用下降到了十分之一:

如果你也想搭建类似的 RAG 应用可以参考这里:https://github.com/alibaba/higress/issues/1023#issuecomment-2163176897

插件配置示例:
serviceSource: dnsserviceName: safecheckservicePort: 443domain: green-cip.cn-shanghai.aliyuncs.com


|
|
|
|
|
|
|
|
|
|
|
|
在 AI 场景中,限流的需求不仅限于传统的每秒/每分/每小时/每天请求次数(QPS/QPM/QPH/QPD)的限流能力,还额外扩展到了每分/每小时/每天令牌数(TPM/TPH/TPD)的管理。“T”代表令牌(Token),它是一个用于衡量大型语言模型输入输出量的单位。对于 AI 应用,相比传统的请求数计量,Token 计量更能反应资源或成本占用。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
例如需要对每个 IP 限制每分钟令牌数不可以超过 1000,符合 1.1.1.0/24 网段的每个 IP 限制不可超过 100,并对 1.1.1.1 这个 IP 限制不可超过 10,则可以做如下配置:
rule_name: limit_iprule_items:limit_by_per_ip: from-remote-addrlimit_keys:key: 1.1.1.1token_per_minute: 10key: 1.1.1.0/24token_per_minute: 100key: 0.0.0.0/0token_per_minute: 1000redis:service_name: redis.staticservice_port: 6379
dashscope:apiKey: xxxxxxxxxxxxxxxxxxxxserviceName: dashscopeservicePort: 443domain: dashscope.aliyuncs.comdashvector:apiKey: xxxxxxxxxxxxxxxxxxxxserviceName: dashvectorservicePort: 443domain: vrs-cn-xxxxxxxxxxxxxxxxxxxx.dashvector.cn-hangzhou.aliyuncs.comcollection: news_embedings
请求响应示例:

AI 缓存插件后续还将进一步演进,支持基于问题向量相似度的 LLM 响应缓存召回,可以在 RAG 等封闭知识域场景,大幅降低 LLM API 的调用成本。在成本和效果之间做 trade-off 很有挑战,对此,我们专门举办了 Higress AI 网关挑战赛,欢迎大家参与。
templates:- name: developer-chattemplate:model: gpt-3.5-turbomessages:- role: systemcontent: '你是一个{{program}}专家,编程语言为{{language}}'- role: usercontent: '帮我写一个{{program}}程序'
请求示例:
{"template": "developer-chat""properties": {"program": "快速排序算法""language": "python"}}
以上请求基于模板转化后向LLM发起的真实请求为:
{"model": "gpt-3.5-turbo","messages": [{"role": "system","content": "你是一个快速排序算法专家,编程语言为python"},{"role": "user","content": "帮我写一个快速排序算法程序"}]}
decorators:- name: data-assistantdecorator:prepend:- role: systemcontent: 如果有人问你关于插件的问题,你应该回答出所有插件的名称、功能、执行阶段以及执行优先级。append:- role: usercontent: 你应该以表格的形式回答,除了表格之外不要有其他内容。
请求响应示例:

response:enable: trueprompt: "帮我修改以下HTTP应答信息,要求:1. content-type修改为application/json;2. body由xml转化为json;3.移除content-length。"provider:serviceName: qwendomain: dashscope.aliyuncs.comapiKey: sk-xxxxxxxxxxxxxxxxxxx
{"slideshow": {"title": "Sample Slide Show","date": "Date of publication","author": "Yours Truly","slides": [{"type": "all","title": "Wake up to WonderWidgets!"},{"type": "all","title": "Overview","items": ["Why <em>WonderWidgets</em> are great","","Who <em>buys</em> WonderWidgets"]}]}}
云原生能力升级
Aliware

apiVersion: v1kind: ConfigMapmetadata:name: higress-httpsnamespace: higress-systemdata:cert: |# 开启全局证书自动管理automaticHttps: true# 使用自动签发时,证书提前多久续签renewBeforeDays: 30# 证书自动签发配置,暂只支持 Let's EncryptacmeIssuer:- name: letsencryptemail: test@example.comcredentialConfig:# 对 foo.com 使用 Let's Encrypt 签发证书- domains:- foo.comtlsIssuer: letsencrypttlsSecret: foo-com-secret# 对匹配的域名使用特定的 secret- domains:- statica.example.org- staticb.example.orgtlsSecret: static-example-org-certificate# 兜底证书,对于不匹配上面规则的域名开启- domains:- "*"tlsSecret: default-certificate
这样所有 secret 都只需要放在 higress-system 命名空间下统一管理,但又可以生效到所有命名空间的 ingress 下(对应 ingress 无需再配置 secret 字段)。既减轻了运维负担,又提高了证书管理的安全性。
从上面这份配置也可以看到 Higress 还支持对接 Let‘s Encrypt 进行 HTTPS 免费证书的自动签发和续签,无需依赖 cert-manager。因此,Higress 不论是 K8s 场景下部署,还是 Standalone 模式部署(通过本地文件配置 ConfigMap),都可以用上这个能力。
Higress 在 1.4 版本支持了在 Wasm 插件中去访问 Redis 服务,基于此能力,来自社区的贡献者韩贤涛(GitHub ID:hanxiantao)基于原本的 key-rate-limit 插件实现了 cluster-key-rate-limit 插件。从而能够实现基于 Redis 的全局精确限流。并且在原本插件只支持对可枚举值进行限流的能力上进行了扩展,支持不可枚举值的限流,例如对于每个 IP,每个 Cookie 分别独立计算限流。AI 限流插件也是在此基础上扩展实现的。
helm repo add higress https://higress.cn/helm-charts# 安装helm install higress higress/higress --set global.o11y.enabled=true -n higress-system --create-namespace# 升级helm upgrade higress higress/higress --set global.o11y.enabled=true --reuse-values -n higress-system --create-namespace

# 创建一个工作目录mkdir higress; cd higress# 启动 higress,配置文件会写到工作目录下docker run -d --rm --name higress-ai -v ${PWD}:/data \-p 8001:8001 -p 8080:8080 -p 8443:8443 \higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:1.4.1
监听端口说明如下:
-
8001 端口:Higress UI 控制台入口 -
8080 端口:网关 HTTP 协议入口 -
8443 端口:网关 HTTPS 协议入口
Higress 所有 Docker 镜像都一直使用自己独享的仓库,不受 Docker Hub 国内不可访问的影响,欢迎大家使用~
参与 Higress 社区
-
22.5万奖金池|Higress AI 网关编程挑战赛启动 -
GLCC 开源夏令营的 Higress 三大课题,均有6000元奖励:https://www.gitlink.org.cn/glcc/2024/projects
了解更多社区动态,可以加入 Higress 微信/钉钉群(群号:30735012403 ):
https://github.com/shijiebei2009/CEC-Corpus


