Higress服务网关
一、Higress 是什么
简介
Higress 是基于阿里内部多年 Envoy Gateway 实践的 云原生 + AI 原生 API 网关,采用 C++ 实现,相比传统的 Java 网关具有更高的性能和更低的内存占用,而且能够和 Nacos 和 Dubbo 轻松集成。
什么是 AI 原生呢?可以看看 官方对 AI 网关的介绍,简单来说,Higress 支持多种 AI 协议,提供 AI 可观测性、AI 代理缓存、AI 令牌限流、AI 大模型对接等能力。
| 传统 API 网关 | ![]() |
| AI 场景 | ![]() |
对比
下面是 Higress 与 Spring Cloud Gateway 的详细对比:
| 对比项 | Spring Cloud Gateway | Higress |
|---|---|---|
| 性能 | 中等 (基于 Spring WebFlux) | 高 (基于 Envoy C++) |
| 内存占用 | 较高 (JVM) | 较低 (C++) |
| 配置方式 | 代码 + 配置文件 | 控制台 + 配置文件 |
| 插件生态 | Spring 生态 | Envoy + 自定义插件 |
| 可观测性 | 依赖 Spring Actuator | 内置丰富的监控指标 |
| 云原生 | 支持 | 原生云原生设计 |
| 学习成本 | 低 (熟悉 Spring) | 中等 |
| AI 支持 | 需要自定义开发 | 原生 AI 功能支持 |
不过如何你需要在网关中写一些业务逻辑,Higress 可能就不适合了,而 Spring Cloud Gateway 是可以在代码中引入并且自定义 Java 业务逻辑的。
核心功能
作为系统的统一入口,Higress 网关为我们提供了以下核心能力:
- 统一入口:为所有微服务提供统一的访问入口,简化客户端的调用复杂度。
- 请求路由:根据请求的路径、参数等信息,将请求路由到正确的微服务实例。
- 负载均衡:在多个服务实例之间分发请求,提高系统的可用性和性能。
- 安全认证:统一处理身份验证、权限控制等安全相关功能。
- 限流熔断:实现请求限流、服务熔断等保护机制,防止系统过载。
- 监控日志:收集请求日志、监控指标等信息,便于系统运维和问题排查

二、Higress 安装
Higress 的安装需要 Docker 环境支持,如果没有安装 Docker 的话,必须先安装!
推荐直接 安装 Docker Desktop,会自动安装 Docker 以及可视化管理软件。
但是要注意,Windows 上想运行 Docker 的话,必须要安装 WSL(Linux 子系统),参考官方安装文档。

不过由于安装时可能会出现“与服务器的连接被重置”,建议直接到 GitHub 下载 WSL 安装包:

注意,如果实在无法安装 WSL,也可以用虚拟机软件。
安装好 Docker 后,可以使用以下命令在本地启动 Higress:
docker run -d --rm --name higress-ai -v ${PWD}:/data -e O11Y=on \
-p 8001:8001 -p 8080:8080 -p 8443:8443 \
higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest监听端口说明:
- 8001 端口:Higress UI 控制台入口
- 8080 端口:网关 HTTP 协议入口
- 8443 端口:网关 HTTPS 协议入口
可以用 docker ps 命令查看启动状态:

Docker Desktop 中能看到运行的容器:

启动成功后,可以通过 8001 端口访问 Higress 控制台:

三、服务来源配置
在 Higress 控制台中配置服务来源,可以从 Nacos 中获取服务来源:

需要注意的是,注册中心地址不支持 127.0.0.1 或 localhost,需要使用本机的内网地址。
Windows 系统通过 ipconfig 命令查看:

Mac 系统可以直接在网络设置中查看:

配置完成后,Higress 会自动发现在 Nacos 中注册的所有微服务:

但是 Dubbo + Nacos 默认只注册 Dubbo 服务(RPC接口),而不注册 HTTP 接口。我们对外提供的服务都没有被发现,需要手动注册:

所有服务注册完成:

四、路由配置
手动配置路由规则,为每个服务创建对应的路由:

选择对应的服务并配置路由规则:

这样一来,前端只需要访问网关的地址 localhost:8080/api/user/xxx,就会自动转发到对应的服务 localhost:8124/api/user/xxx。
路由配置完成:

完成路由配置后,需要修改前端 vite 请求代理地址为 8080 端口,然后就可以利用前端来测试完整业务流程了,能正常登录和生成网站就说明配置成功。
💡 如果你使用了 Spring Cloud 作为服务发现(而不是 Dubbo),可以 整合 Nacos 快速发现服务。
五、插件配置
Higress 提供了丰富的插件功能,可以满足不同场景的需求。分享一些典型的场景:
CORS 跨域配置
可以全局配置 CORS 跨域支持:

支持表单填写或者 YAML 配置文件:

也可以单独针对某个路由配置跨域插件:

如图:


权限认证插件
Higress 提供了多种权限认证插件:

比如 Key 认证是一个典型的 API 认证场景(想想调用 AI 时输入的 API Key):

安全性插件
可以配置 IP 限制、请求屏蔽等安全插件:

比如限制禁止某个 IP 访问:

还可以利用请求屏蔽插件提高安全性。测试一下,禁止访问 /api/user/get/login 接口:

配置后该接口会返回 404,因为被网关拦截了,都到不了用户服务:

限流插件
还可以配置限流插件,在网关层面控制请求频率:

比较常用的是基于 Key 进行限流,Key 可以从请求头或 URL 参数中获取,比如根据请求参数中的 appId 限流。



