## 微服务网关在分布式系统中的关键功能
微服务网关在现代分布式架构中扮演了至关重要的角色,它能够将外部请求合理地分发到内部不同的微服务实例上,实现高效的流量管理。通过提供统一的入口点,微服务网关简化了客户端与后端服务之间的交互方式,降低了系统的复杂度。此外,它还支持多种协议转换和适配功能,使得基于不同技术栈的服务可以无缝协作。在安全性方面,网关作为所有入站请求的第一道防线,负责执行身份验证、授权等关键操作,有效提升了整个系统的防护水平。阿里等企业广泛采用API网关模式进行内外部资源整合与开放,进一步证明了这种架构模式的价值。开源社区也在持续贡献力量,推动着相关技术的发展和完善。
## Higress:阿里巴巴开源的多功能微服务网关
Higress 是一款源自阿里巴巴集团多年实战经验的开源 API 网关。它基于 Envoy 和 Istio 构建,集成了流量网关、微服务网关和安全网关的功能于一体,为用户提供了高度集成且强大的网关解决方案。通过深度集成 Dubbo、Nacos 和 Sentinel 等微服务技术栈,Higress 能够极大地降低网关部署及运维成本。此外,Higress 全面支持 Ingress 与 Gateway API 标准,并内置了 WAF 模块,以满足日益增长的安全防护需求。这款完全免费且开源的工具,体现了阿里巴巴在云原生领域的深厚积累和技术前瞻性。
## Higress网关关键功能解析
Higress网关的核心能力涵盖了流量控制、协议转换、安全隔离等关键功能,且这些能力均可通过配置而非开发实现。具体来说,Higress支持HTTP到Dubbo的协议转换,简化了微服务对外暴露的服务接口。同时,它内置了WAF(Web应用防火墙)和认证鉴权插件,提供了强大的安全防护机制。此外,Higress具备精细化的流量管理和限流降级策略,能够有效应对突发流量,确保系统的稳定运行。值得一提的是,所有这些特性都经过了阿里巴巴内部大规模高流量场景的实际验证,保证了其在生产环境下的可靠性和性能。
## Higress实战示例-通过Docker实现单机快速安装
## Higress具体使用样例-基于docker的单机版快速部署
### 前置条件
在开始之前,请确保您的本地环境已经安装了 Docker。如果尚未安装,您可以参考官方指南完成安装:[Docker 安装指南](https://docs.docker.com/get-started/get-docker/)
### 部署步骤
1. **创建一个工作目录**
创建一个新的目录用于存放 Higress 的配置文件和数据。
```bash
mkdir higress
```
2. **启动 Higress 容器**
使用以下命令启动 Higress,并将容器内 `/data` 目录映射到宿主机上我们刚创建的 `higress` 文件夹中,同时将必要的端口暴露出来。
```bash
docker run -d --rm --name higress-ai -v ./higress:/data \
-p 8001:8001 -p 8080:8080 -p 8443:8443 \
higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest
```
这里指定了三个端口:
- `8001`:Higress 控制台入口
- `8080`:网关 HTTP 协议入口
- `8443`:网关 HTTPS 协议入口
### 登陆 Higress 控制台进行配置
1. **访问控制台**
打开浏览器并访问 [http://127.0.0.1:8001](http://127.0.0.1:8001) 来打开 Higress 的管理界面。
2. **初始化管理员账号**
第一次访问时需要先初始化管理员账号。请按照页面提示完成设置后,使用新设置的用户名密码登录 Higress 控制台。
3. **创建服务来源**
- 在左侧菜单选择“服务来源”,点击右侧的“创建服务来源”按钮。
- 依次填写如下信息并保存提交:
- 服务类型:选择 `DNS域名`
- 服务名称:输入 `httpbin`
- 服务端口:填入 `80`
- 域名列表:填写 `httpbin.org`
4. **配置路由规则**
- 切换到“路由配置”选项卡,点击“创建路由”按钮。
- 按照要求配置新的路由:
- 路由名称:指定为 `my-route`
- 匹配规则:选择“精确匹配”,路径设置为 `/get`
- 目标服务:从下拉列表中选中 `httpbin.dns`
### 测试生效
为了验证上述配置是否正确且有效,您可以在浏览器地址栏输入 `http://127.0.0.1:8080/get` 或者直接执行下面这条 curl 命令:
```bash
curl http://127.0.0.1:8080/get
```
预期结果应该是看到来自 `httpbin.org` 对当前请求的信息以 JSON 格式返回。
### 查看本地配置文件
对于更深入的理解或手动修改需求,您可以通过查看位于 `higress` 文件夹下的 `ingresses` 子目录来了解 Higress 是如何存储其配置信息的。例如,上面创建的路由会生成一个名为 `my-route.yaml` 的文件,内容如下所示:
```yaml
annotations:
higress.io/destination: httpbin.dns
higress.io/ignore-path-case: "false"
labels:
higress.io/resource-definer: higress
rules:
- http:
paths:
- backend:
resource:
apiGroup: networking.higress.io
kind: McpBridge
name: default
path: /get
pathType: Exact
```
此配置定义了一个简单的路由策略,通过 `annotations` 和 `rules` 字段实现了对特定 URL 路径的请求转发至指定的服务实例。
至此,您已经成功地完成了基于 Docker 的 Higress 单机版本的快速部署与基本配置。此外,higress也支持使用k8s等方式来做部署和集成,具体可以去[higress官网](https://higress.cn/)查询更多详情。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号