Apache APISIX 入门教程:如何通过API网关暴露服务
apisix The Cloud-Native API Gateway 项目地址: https://gitcode.com/gh_mirrors/ap/apisix
前言
在现代微服务架构中,API网关扮演着至关重要的角色。作为一款高性能、动态、实时的API网关,Apache APISIX提供了丰富的功能来帮助开发者高效地管理和暴露服务。本文将详细介绍如何使用Apache APISIX来暴露你的API服务。
核心概念解析
在开始实践之前,我们需要先了解Apache APISIX中的几个核心概念:
上游(Upstream)
上游是对后端服务的抽象,它定义了:
- 一组实际提供服务的节点
- 负载均衡策略(如轮询roundrobin、一致性哈希等)
- 健康检查机制
- 其他与后端服务交互的配置
上游可以被多个路由或服务引用,便于集中管理和维护。
路由(Route)
路由是APISIX中最核心的概念之一,它负责:
- 根据定义的规则匹配客户端请求
- 加载和执行相应的插件
- 将请求转发到指定的上游服务
路由可以基于多种条件进行匹配,包括URI、HTTP方法、请求头等。
服务(Service)
服务是对一组相关API的抽象,它通常:
- 对应一个上游服务
- 可以包含多个路由
- 便于对相关API进行统一管理
环境准备
在开始之前,请确保你已经:
- 成功安装并运行了Apache APISIX
- 获取了Admin API的访问密钥
- 确保APISIX的Admin API和网关端口可访问
实战:暴露你的第一个API服务
第一步:创建上游服务
我们将使用httpbin.org作为示例上游服务。httpbin.org是一个用于HTTP请求测试的公共服务。
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}'
这段代码做了以下几件事:
- 向APISIX的Admin API发送PUT请求
- 创建ID为1的上游配置
- 使用轮询(roundrobin)负载均衡策略
- 添加httpbin.org:80作为后端节点,权重为1
第二步:创建路由
接下来,我们需要创建一个路由来将特定请求转发到我们刚刚创建的上游服务。
curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"methods": ["GET"],
"host": "example.com",
"uri": "/anything/*",
"upstream_id": "1"
}'
这个路由配置表示:
- 只匹配GET方法
- 请求Host头必须为example.com
- URI路径必须匹配/anything/*
- 使用ID为1的上游服务
替代方案:直接在路由中定义上游
除了先创建上游再引用外,你也可以直接在路由中定义上游配置:
curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"methods": ["GET"],
"host": "example.com",
"uri": "/anything/*",
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'
这种方式适合上游配置简单且不共享的场景。
第三步:测试路由
创建完成后,我们可以通过以下命令测试路由是否正常工作:
curl -i -X GET "http://127.0.0.1:9080/anything/get?foo1=bar1&foo2=bar2" -H "Host: example.com"
APISIX会将这个请求转发到http://httpbin.org:80/anything/get?foo1=bar1&foo2=bar2
,并返回httpbin.org的响应。
进阶使用建议
-
多节点负载均衡:在上游配置中,你可以添加多个节点并设置不同权重,实现负载均衡。
-
健康检查:为上游服务配置健康检查,自动剔除不健康的节点。
-
流量控制:结合限流插件,保护后端服务不被突发流量冲垮。
-
认证授权:使用JWT、Key Auth等插件为API添加安全保护。
-
日志监控:配置日志插件,将访问日志发送到日志系统进行分析。
总结
通过本文,你已经学会了如何使用Apache APISIX来暴露API服务的基本流程。从创建上游服务到配置路由,APISIX提供了灵活而强大的功能来满足各种API管理需求。作为API网关,APISIX不仅能简单地转发请求,还能通过丰富的插件实现认证、限流、监控等高级功能,是构建现代微服务架构的理想选择。
下一步,你可以探索APISIX的插件系统,为你的API添加更多功能,或者学习如何通过APISIX实现金丝雀发布、蓝绿部署等高级部署策略。
apisix The Cloud-Native API Gateway 项目地址: https://gitcode.com/gh_mirrors/ap/apisix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考