首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Apache APISIX入门指南:快速理解与实战示例

  • 25-04-17 19:01
  • 3293
  • 10422
juejin.cn

Apache APISIX 是一个开源的云原生 API 网关,属于 Apache 软件基金会项目。它基于 NGINX 和 LuaJIT 技术,具备高性能、动态配置、实时响应和良好扩展性,主要用于管理和转发大量 API 请求,广泛应用于微服务架构中。

一、APISIX的基础知识点

1. 什么是 API 网关?

API 网关是位于客户端和后端服务之间的中间层,负责接收所有外部请求,统一管理、路由、转发请求到具体的服务,并提供安全、流量控制、监控等功能。

2. APISIX 的核心组成

组件作用说明
路由(Route)定义请求匹配规则(如路径、方法),决定请求如何处理和转发。
上游(Upstream)抽象后端服务节点,支持负载均衡,将请求分发到多个服务实例。
插件(Plugin)对请求进行增强处理,如限流、认证、日志、缓存、安全防护等。
配置存储(etcd)保存 APISIX 配置,实现配置的动态同步和热更新。

3. APISIX 的主要特点

  • 高性能:单核 QPS(每秒请求数)可达 23000 以上,延迟极低。
  • 动态配置:支持热加载配置,无需重启服务即可生效。
  • 丰富插件:内置限流、认证、缓存、日志、监控等多种插件,支持自定义插件开发。
  • 多语言支持:插件支持 Lua、Golang、Java、Python 等语言。
  • 云原生友好:支持 Kubernetes Ingress Controller,适合云环境部署。
  • 安全防护:支持身份认证、IP 黑白名单、防火墙等安全功能。
  • 灰度发布:支持蓝绿部署、金丝雀发布、A/B 测试,方便业务平滑升级。

二、APISIX 常见使用场景

  • 大规模微服务流量管理:处理海量 API 请求,支持高可用和动态路由。
  • 流量控制与调度:限流、熔断、重试,保障系统稳定。
  • 安全防护:防止恶意攻击,保护后端服务。
  • 灰度发布与测试:支持业务平滑升级,减少风险。
  • 云原生集成:作为 Kubernetes Ingress Controller 或服务网格组件。

三、快速上手:本地安装与简单路由配置示例

1. 安装前准备

  • 安装 Docker(用于运行 APISIX 和 etcd 容器)

2. 一键快速启动 APISIX

打开终端,执行以下命令:

bash
代码解读
复制代码
curl -sL https://run.api7.ai/apisix/quickstart | sh

成功后会显示:

text
代码解读
复制代码
✔ APISIX is ready!

3. 验证 APISIX 是否正常运行

执行:

bash
代码解读
复制代码
curl "http://127.0.0.1:9080" --head | grep Server

如果返回类似:

text
代码解读
复制代码
Server: APISIX/3.x.x

说明 APISIX 已启动成功。

4. 创建一个简单的路由,将请求转发到 httpbin.org

使用下面的命令创建路由:

bash
代码解读
复制代码
curl -i "http://127.0.0.1:9180/apisix/admin/routes/test-route" -X PUT -d ' { "uri": "/ip", "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }'
  • 这里 "uri": "/ip" 表示匹配访问路径为 /ip 的请求。
  • "upstream" 指定请求转发到 httpbin.org。

成功时返回 HTTP 201 Created。

5. 测试路由是否生效

执行:

bash
代码解读
复制代码
curl "http://127.0.0.1:9080/ip"

你会看到类似如下的 JSON 响应,显示你的公网 IP:

json
代码解读
复制代码
{ "origin": "你的公网IP" }

四、进阶示例:配置限流和认证插件

1. 限流插件示例

给上面创建的路由添加限流插件,限制每分钟最多 10 次请求:

bash
代码解读
复制代码
curl -i "http://127.0.0.1:9180/apisix/admin/routes/test-route" -X PATCH -d ' { "plugins": { "limit-count": { "count": 10, "time_window": 60, "rejected_code": 503, "key": "remote_addr", "policy": "local" } } }'
  • count: 最大请求数
  • time_window: 时间窗口(秒)
  • key: 按客户端 IP 限流
  • rejected_code: 超限返回的 HTTP 状态码

2. JWT 认证插件示例

为路由开启 JWT 认证:

bash
代码解读
复制代码
curl -i "http://127.0.0.1:9180/apisix/admin/routes/test-route" -X PATCH -d ' { "plugins": { "jwt-auth": {} } }'

然后你需要在 APISIX 中创建 JWT 消费者和密钥,详细操作可以参考官方文档。

五、APISIX 插件开发示例(Lua)

下面是一个简单的自定义插件示例,给响应添加自定义 HTTP 头:

lua
代码解读
复制代码
local plugin = { name = "add-header", version = "0.1", priority = 1000, schema = { type = "object", properties = { header_name = { type = "string" }, header_value = { type = "string" } }, required = { "header_name", "header_value" } } } function plugin:header_filter(conf) ngx.header[conf.header_name] = conf.header_value end return plugin

将此插件注册到 APISIX 后,可以在路由中配置:

json
代码解读
复制代码
"plugins": { "add-header": { "header_name": "X-Custom-Header", "header_value": "HelloAPISIX" } }

访问该路由时,响应头中会带有 X-Custom-Header: HelloAPISIX。

六、总结

Apache APISIX 是一款功能强大、性能优异的云原生 API 网关,适合各种规模的业务场景。它支持动态路由、负载均衡、丰富插件、安全防护和灰度发布等功能。通过简单的安装和配置,开发者可以快速搭建起高效的 API 管理平台。

以上内容结合了基础概念、安装步骤、配置示例和插件开发,帮助你快速理解和使用 Apache APISIX,适合中国开发者入门和实战。

注:本文转载自juejin.cn的程序员小jobleap的文章"https://juejin.cn/post/7493730335193038860"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

133
开发工具
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top