API 网关在微服务中的关键作用
网关作为现代微服务架构中的关键组件,承担着一系列的重要职责:
1)协议转换:例如,在阿里云的某些开源项目中,网关能够将外部HTTP请求转换为内部服务间通信所使用的gRPC协议,确保了前后端技术栈的一致性和高效性。
2)安全隔离:网关可以对外部访问进行身份验证和授权检查,比如使用API密钥或OAuth2.0等认证方式,有效防止未授权访问,保护后端服务的安全。
3)流量控制:这是网关不可或缺的功能之一,它允许开发者根据实际需求设定速率限制规则,如每秒请求数限制,以避免突发大流量对系统造成冲击,保障整个应用平台的稳定运行。
Higress网关主要功能详解
Higress是一款来自阿里巴巴的开源API网关,基于阿里内部多年的实战经验沉淀而成。它不仅继承了Envoy和Istio的核心优势,还深度集成了Dubbo、Nacos等微服务技术栈,为用户提供了一个功能丰富且易于部署维护的解决方案。
作为完全开源免费的产品,Higress致力于降低开发者在构建云原生应用时面临的复杂性与成本,支持从传统架构向现代微服务架构平滑迁移。
通过采用Higress,用户能够享受到由阿里团队持续贡献的技术红利。
Higress网关是一款基于Envoy和Istio构建的云原生API网关,具有多项核心能力。它通过简单的配置即可实现协议转换、安全隔离与流量控制等功能,无需额外开发。
1) Higress支持HTTP到Dubbo等协议之间的转换,帮助传统微服务用户以更低的成本暴露对外服务。
2) 内置了Waf模块进行安全防护,并提供认证鉴权插件,保障应用安全。
3) Higress具备限流降级等服务治理和流量管理能力,能够有效应对突发流量。这些特性已经在阿里巴巴集团内部得到了充分验证,经过了高流量环境的实际检验,证明了其稳定性和可靠性。
Higress具体使用样例-基于docker的单机版快速部署
前置条件
确保本机已安装 Docker。如果还未安装,请参考官方指引完成安装:Docker 官方安装指南
部署步骤
Higress 支持通过一个简单的 Docker 容器启动,适合个人开发者在本地环境搭建学习或用于简易站点的构建。
- 创建一个工作目录来存放配置文件和数据。
mkdir higress
- 使用下面的命令行启动 Higress。此命令会将容器内的特定目录映射到本地的工作目录,并暴露三个重要端口供外部访问:
启动命令如下:
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 UI 控制台入口
-
- 8080 端口:网关 HTTP 协议入口
-
- 8443 端口:网关 HTTPS 协议入口
登陆 Higress 控制台进行配置
- 在浏览器中输入
http://127.0.0.1:8001
打开控制台。
- 如果是首次访问,则需要初始化管理员账号。根据提示设置用户名与密码后,使用刚刚创建的凭据登录。
- 进入“服务来源”菜单项,点击右侧的“创建服务来源”按钮。填写如下信息:
-
- 服务类型:选择 DNS域名
-
- 服务名称:填入
httpbin
- 服务名称:填入
-
- 服务端口:指定为
80
- 服务端口:指定为
-
- 域名列表:输入
httpbin.org
作为示例服务地址
- 域名列表:输入
- 接下来转到“路由管理”,点击“创建路由”。按以下方式设定新路由:
-
- 路由名称:命名为
my-route
- 路由名称:命名为
-
- 匹配规则:选择“精确匹配”,并填写路径
/get
- 匹配规则:选择“精确匹配”,并填写路径
-
- 目标服务:从下拉列表中选中
httpbin.dns
- 目标服务:从下拉列表中选中
测试生效
为了验证配置是否正确且功能正常,可以在浏览器或者终端执行以下请求:
curl http://127.0.0.1:8080/get -H 'host: httpbin.org'
若一切顺利,您应该能看到来自 httpbin.org
的响应,以 JSON 格式返回了本次请求的信息。
查看本地配置,了解生效原理
上述过程中的控制台操作会自动生成相应的 Ingress API 配置文件。这些文件被保存在初始创建的 higress
目录下的 ingresses
文件夹内。例如,对于刚才创建的路由 my-route
,会生成一个名为 my-route.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
这里的关键部分在于 rules
字段,它定义了具体的路由规则;而 backend
则指定了实际处理请求的目标服务。
总结
以上就是基于 Docker 的 Higress 单机版快速部署教程。该方法非常适合初学者上手实践,同时也适用于小型项目或开发测试场景。值得注意的是,Higress 也支持使用 K8s 等方式进行更复杂的部署和集成,具体可以去 Higress 官网 查询更多详细资料。