『Apisix入门篇』从零到一掌握Apache APISIX:架构解析与实战指南

📣读完这篇文章里你能收获到:
-
🌐 深入Apache APISIX架构: 从Nginx到OpenResty,再到etcd,一站式掌握云原生API网关的构建精髓,领略其层次化设计的魅力。
-
🔌 核心组件全解析: 路由、上游、服务、消费者、插件…这些不再是抽象的概念,而是你API管理中的强大工具。
-
🛠 路由配置实操: 通过Admin API,轻松创建上游、配置路由,实现请求的精准转发,让理论与实践完美结合。
-
🌟 APISIX的独特优势: 动态路由、热插拔插件、云原生兼容性…这些特性让APISIX在API网关领域独树一帜。
-
🔧 常用命令速查: 从启动到停止,从重启到版本检查,一系列APISIX和etcd命令,让你的运维工作更加得心应手。

文章目录
- 一、Apisix介绍
- 1.1 基础架构剖析
- 1.2 关键技术要素
- 1.3 产品优势
- 二、路由配置(入门初体验)
- 2.1 Admin API应用
- 2.2 Dashboard可视化操作
- 三、Apisix常用命令
- 3.1 Apisix命令
- 3.2 Apisix-Dashboard命令
- 3.3 ETCD命令

一、Apisix介绍
Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它具有动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、限速、防御恶意攻击、身份认证、可观测性等丰富的流量管理功能。可以使用 Apache APISIX 来处理传统的南北向流量,也可以处理服务间的东西向流量。
1.1 基础架构剖析
APISIX 的核心架构采用层次化设计
- Nginx:底层依赖 Nginx 提供高效的网络通信和数据传输;
- OpenResty:上层则通过 OpenResty 封装的 Lua 环境,实现灵活的逻辑控制和业务扩展。
- etcd:在配置管理方面,APISIX 利用 etcd 作为分布式键值存储系统,使得所有节点上的配置能够实时同步并动态更新,从而确保整个服务集群具备高度的弹性和一致性。
- 插件系统:APISIX 提供了一个强大的插件生态系统,这些插件可自由组合以满足不同场景下的功能需求,如身份验证(Key Auth、JWT、Basic Auth)、限流限速、熔断、灰度发布、A/B 测试等。

1.2 关键技术要素
接下来我们来了解下 APISIX 的一些功能。在了解之前我们需要对 APISIX 的几个主要概念和组件简单了解下:
- 路由(Routes): 定义了如何将不同的请求映射到指定的上游服务,可以根据请求的方法、路径、头部、查询参数等进行精确匹配。
- 上游(Upstream): 代表一组后端服务实例,用于负载均衡,可以通过多种负载均衡策略(如轮询、权重、一致性哈希等)分配请求。
- 服务(Service): 是一组提供相同功能的后端服务器实例的集合,通常对应着微服务架构中的一个具体服务。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系。
- 消费者(Consumer): 需要与用户认证配合才可以使用。消费者在访问服务时,API 网关可以根据预先设定的规则对消费者的请求进行验证和过滤。当不同的消费者请求同一个 API 时,APISIX 会根据当前请求的用户信息,对应不同的 Plugin 或 Upstream 配置。
- 如果 Route、Service、Consumer 和 Plugin Config 都绑定了相同的插件,只有消费者的插件配置会生效。
- 插件配置的优先级由高到低的顺序是:Consumer > Route > Plugin Config > Service。
- 插件: 插件是 APISIX 的核心功能单元,每个插件可以实现特定的功能,如认证、限流、缓存、日志记录等。
- Admin API: APISIX 提供了强大的 Admin API 和 Dashboard 供用户使用,Admin API 是一组用于配置 Apache APISIX 路由、上游、服务、SSL 证书等功能的 RESTful API。可以通过 Admin API 来获取、创建、更新以及删除资源。同时得益于 APISIX 的热加载能力,资源配置完成后 APISIX 将会自动更新配置,无需重启服务。

1.3 产品优势
APISIX 基于 Nginx 和 etcd,与传统 API 网关相比,APISIX 具有动态路由和热加载插件功能,避免了配置之后的 reload 操作,同时 APISIX 支持 HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP 等更多的协议。而且有 Dashboard提供强大而灵活的界面。同样也提供了丰富的插件支持功能,而且还可以让用户自定义插件。
主要具有以下几个优势:
- 高性能:得益于 Nginx 的高性能内核和 LuaJIT 的快速脚本执行,APISIX 即使在大规模并发环境下也能保持优异的性能指标,低延迟、高吞吐量,即便启用大量插件也无损其响应速度。
- 云原生兼容性: APISIX 无缝集成于 Kubernetes 等容器编排平台,支持服务发现、自动注入标签等云原生特性。
- 全动态能力:APISIX 支持实时从 etcd 获取最新配置,并立即生效。
- 热插拔插件:无需停服即可添加、移除或修改插件配置,增强服务运维灵活性。
- 易用性:APISIX 支持与以下工具和平台集成:HashiCorp Vault、Zipkin、Apache SkyWalking、Consul、Nacos、Eureka。通过 APISIX Dashboard,运维人员可以通过友好且直观的 UI 配置 APISIX。
- 多语言插件支持:APISIX 支持多种开发语言进行插件开发,开发人员可以选择擅长语言的 SDK 开发自定义插件。

二、路由配置(入门初体验)
2.1 Admin API应用
下文中的的 X-API-KEY 的值在 APISIX 的配置文件中 apisix_config.yaml 中有配置,位于 deployment.admin.admin_key 下面。

Apache APISIX 使用 routes 来提供灵活的网关管理功能,在一个请求中,routes 包含了访问路径和上游目标等信息。
目标:创建一个路由,将客户端的请求转发至 httpbin.org(这个网站能测试 HTTP 请求和响应的各种信息)。
- 创建一个_upstream_指向 httpbin.org
curl http://127.0.0.1:9180/apisix/admin/upstreams \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{"id":"upstream-demo1-id","name": "upstream-demo1", "type":"roundrobin", "nodes": [ {"host": "httpbin.org","port": 80,"weight": 1}]
}'

- 创建一个路由routes,绑定以上创建的upstream
curl "http://127.0.0.1:9180/apisix/admin/routes" \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{"id":"routes-demo1-id","name": "routes-demo1", "methods": ["GET","POST"], "uris": ["/ip","/get"] , "upstream_id": "upstream-demo1-id"
}'

- 发送一个请求进行验证,访问:http://127.0.0.1:9080/ip

2.2 Dashboard可视化操作
Apache APISIX 使用 routes 来提供灵活的网关管理功能,在一个请求中,routes 包含了访问路径和上游目标等信息。
目标:创建一个路由,将客户端的请求转发至 httpbin.org(这个网站能测试 HTTP 请求和响应的各种信息)。
- 创建一个_upstream_指向 httpbin.org
- 点击上游->创建->填写目标节点信息->下一步->提交


- 创建一个路由routes,绑定以上创建的upstream
- 点击路由->创建->填写匹配路径->填写HTTP匹配方法->下一步->选择上游服务->下一步->提交



- 发送一个请求进行验证,访问:http://127.0.0.1:9080/ip


三、Apisix常用命令
3.1 Apisix命令
- 启动apisix服务
apisix start
- 停止apisix服务
apisix stop
- 优雅地停止apisix服务
apisix quit
- 重启apisix服务
apisix restart
- 重新加载apisix服务
apisix reload
- 初始化本地nginx.conf
apisix init
- 初始化etcd的数据
apisix init_etcd
- 测试生成的nginx.conf
apisix test
- 显示apisix的版本信息
apisix version
- 显示apisix帮助信息
apisix help
3.2 Apisix-Dashboard命令
- 启动apisix-dashboard服务
systemctl start apisix-dashboard
- 停止apisix-dashboard服务
systemctl stop apisix-dashboard
- 重启apisix-dashboard服务
systemctl restart apisix-dashboard
3.3 ETCD命令
- 启动etcd
nohup sudo /usr/bin/etcd --data-dir=/data/etcd > /tmp/etcd.log 2>&1 &
- 停止etcd
# 查找etcd进程的PID
ps aux | grep etcd# 假设找到的PID是12345,使用kill命令停止etcd
sudo kill 12345
- 重启etcd : 先停止再启动
# 1. 查找etcd进程的PID
ps aux | grep etcd# 2. 假设找到的PID是12345,使用kill命令停止etcd
sudo kill 12345# 3. 启动
nohup sudo /usr/bin/etcd --data-dir=/data/etcd > /tmp/etcd.log 2>&1 &# 4. 重新加载apisix
sudo apisix reload


相关文章:
『Apisix入门篇』从零到一掌握Apache APISIX:架构解析与实战指南
📣读完这篇文章里你能收获到: 🌐 深入Apache APISIX架构: 从Nginx到OpenResty,再到etcd,一站式掌握云原生API网关的构建精髓,领略其层次化设计的魅力。 🔌 核心组件全解析ÿ…...
easyExcel大数据量导出oom
easyExcel大数据量导出 异常信息 com.alibaba.excel.exception.ExcelGenerateException: java.lang.OutOfMemoryError: GC overhead limit exceededat com.alibaba.excel.write.ExcelBuilderImpl.fill(ExcelBuilderImpl.java:84)at com.alibaba.excel.ExcelWriter.fill(Excel…...
react native上传二进制图片、视频的方法
react native获取本地图片我用的react-native-image-picker,但是它只能获取图片路径,以及base64的图片,不能获取到binary二进制形式的。 一开始我是让后端改造接口,把原本传binary的改成了base64,可是,躲得…...
JVM之堆
堆的核心概述 一个JVM实例只存在一个堆内存,堆也是内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《JVM虚拟机规范》规定,堆可以处于物理上不连…...
R语言实现——网状 Meta 分析
近来年,网状 Meta 分析相关研究不断涌现,此类研究不但能发表在国内各大核心期刊上,还能在SCI期刊甚至医学4大刊上看到其身影。随手在pubmed上面一搜索,就能得到一万多篇相关文献。俨然成为医学文献研究的“大杀器”! P…...
Java项目:77 springboot母婴商城
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本课题后端使用SpringBoot Spring Cloud框架,前端采用html,JQuery,JS,DIVCSS技术进行编程&…...
【排序算法】深入解析快速排序(霍尔法三指针法挖坑法优化随机选key中位数法小区间法非递归版本)
文章目录 📝快速排序🌠霍尔法🌉三指针法🌠挖坑法✏️优化快速排序 🌠随机选key🌉三位数取中 🌠小区间选择走插入,可以减少90%左右的递归🌉 快速排序改非递归版本…...
生成微信小程序二维码
首页 -> 统计 可以通过上面二个地方配置,生成小程序的二维码,并且在推广分析里,有详细的分析数据,...
网络编程(1)写一个简单的UDP网络通信程序【回显服务器】,并且实现一个简单的翻译功能
使用 JAVA 自带的api 目录 一、回显服务器 UdpEchoServer 服务器代码 客户端代码 二、翻译功能 UdpDictServer 在UdpDictServer里重写process方法 一、回显服务器 UdpEchoServer /*** 回显服务器* 写一个简单的UDP的客户端/服务器 通信的程序* 这个程序没有啥业务逻辑&am…...
Ansys Speos | Light Expert Group探测器组使用技巧
附件下载 联系工作人员获取附件 概述 相机挡板的设计需要在光路的不同位置同步多个照度图,以尽量减少杂散光。2023R2 Speos提供了一种新的探测器,用于高阶杂散光分析,可以同时对多个探测器进行光线追迹。Light Expert工具可以即时过滤3D视…...
C#学习笔记3:Windows窗口计时器
今日继续我的C#学习之路,今日学习自己制作一个Windows窗口计时器程序: 文章提供源码解释、步骤操作、整体项目工程下载 完成后的效果大致如下:(可选择秒数,有进度条,开始计时按钮等) …...
C语言与sqlite3入门
c语言与sqlite3入门 1 sqlite3数据类型2 sqlite3指令3 sqlite3的sql语法3.1 创建表create3.2 删除表drop3.3 插入数据insert into3.4 查询select from3.5 where子句3.6 修改数据update3.7 删除数据delete3.8 排序Order By3.9 分组GROUP BY3.10 约束 4 c语言执行sqlite34.1 下载…...
Rancher(v2.6.3)——安装Rancher
[详细安装说明请查看Rancher安装说明文档]:https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Rancher/Rancher%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.md#1%E5%AE%89%E8%A3%85rancher Rancher部署Mysql(单机版):http…...
Aapche Nutch建立自己的搜索引擎
sudo apt install default-jdk‘ java -version openjdk version "11.0.22" 2024-01-16 vi .bashrc export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 爬梯子下载源代码 Apache Nutch™ – Downloads mkdir -p urls cd urls touch seed.txt 里面放入我的网站…...
阅读笔记(ICIP2023)Rectangular-Output Image Stitching
“矩形输出”图像拼接 Zhou, H., Zhu, Y., Lv, X., Liu, Q., & Zhang, S. (2023, October). Rectangular-Output Image Stitching. In 2023 IEEE International Conference on Image Processing (ICIP) (pp. 2800-2804). IEEE. 0. 摘要 图像拼接的目的是将两幅视场重叠的…...
就业班 第二阶段 2401--3.26 day6 Shell初识 连接vscode
远程连接vs_code可能出现的问题 C:\Users\41703\.ssh 验证远程主机的身份,如果连不上vscode,可以尝试删除这里面的公钥代码。 重新安装那个扩展,排除扩展本身的问题 谁连过我,并操作了什么 curl https://gitea.beyourself.org.c…...
碳课堂|什么是碳资产?企业如何进行碳资产管理?
碳资产是绿色资产的重要类别,在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下,碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产? 碳资产是以碳减排为基础的资产,是企业为了积极应对气候变化&…...
如何使用 ChatGPT 进行编码和编程
文章目录 一、初学者1.1 生成代码片段1.2 解释功能 二、自信的初学者2.1 修复错误2.2 完成部分代码 三、中级水平3.1 研究库3.2 改进旧代码 四、进阶水平4.1 比较示例代码4.2 编程语言之间的翻译 五、专业人士5.1 模拟 Linux 终端 总结 大多数程序员都知道,ChatGPT …...
学习java第二十四天
spring框架中有哪些不同类型的事件 Spring 提供了以下5种标准的事件: 上下文更新事件(ContextRefreshedEvent):在调用 ConfigurableApplicationContext 接口中的refresh方法时被触发。 上下文开始事件(ContextStart…...
中小型集群部署,Docker Swarm(集群)使用及部署应用介绍
1、Docker Swarm简介 说到集群,第一个想到的就是k8s,但docker官方也提供了集群和编排解决方案,它允许你将多个 Docker 主机连接在一起,形成一个“群集”(Swarm),并可以在这个 Swarm 上运行和管…...
Akamai通用版边缘认证参数固化与SHA256签名还原
1. 这不是“破解”,而是对Akamai边缘认证机制的一次系统性拆解你有没有遇到过这样的情况:写好一个爬虫,目标网站明明没上WAF、也没用Cloudflare,但一发请求就返回403,Header里还带着x-akamai-session-info这种神秘书码…...
Frida Hook OkHttp捕获URL与请求头实战指南
1. 为什么Hook OkHttp的URL和请求头是安卓逆向的“第一道门”在真实项目里,我见过太多人一上来就猛攻so层、硬啃ART虚拟机机制,结果两周过去连个登录接口的明文参数都捞不到。其实绝大多数安卓App的网络通信早已不是靠WebView或原生HttpURLConnection打天…...
突破距离限制,抗扰稳连|三格电子 Profibus-DP 转光纤模块,工业通信优选
在冶金、矿山、化工、大型制造等工业场景中,Profibus-DP 总线常面临传输距离不足、电磁干扰强、信号易中断三大难题,严重影响生产设备联动与数据传输稳定性。三格电子MS-F155-P (Y) Profibus-DP 转光纤点对点模块,专为解决工业长距离、强干扰…...
百度网盘Mac版破解指南:免费解锁SVIP高速下载功能
百度网盘Mac版破解指南:免费解锁SVIP高速下载功能 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘Mac版下载速度慢而烦恼吗&…...
量子计算入门:从量子比特到量子退火,解析核心原理与实战路径
1. 项目概述:为什么我们需要理解量子计算?最近几年,量子计算这个词在科技圈的热度居高不下,从大公司的实验室到初创企业的融资新闻,似乎不谈点量子就落伍了。但说实话,很多讨论都停留在“量子霸权”、“算力…...
终极指南:如何用Word Checker轻松实现中英文拼写自动纠正
终极指南:如何用Word Checker轻松实现中英文拼写自动纠正 【免费下载链接】word-checker 🇨🇳🇬🇧Chinese and English word spelling corrector.(中文易错别字检测,中文拼写检测纠正。英文单词拼写校验工具…...
别再乱用电容了!从稳压芯片电路入手,搞懂电解电容和贴片电容到底该怎么搭配
电解电容与贴片电容的黄金组合:稳压电路设计实战解析 在电子电路设计中,稳压芯片的输入输出端常见一大一小两个电容并联的经典配置,这种设计看似简单却蕴含着深刻的电路原理。对于刚入行的硬件工程师或电子爱好者来说,理解这种组…...
KindEditor开源富文本编辑器:企业级内容创作解决方案深度解析
KindEditor开源富文本编辑器:企业级内容创作解决方案深度解析 【免费下载链接】kindeditor Try Lake, the new editor I developed 项目地址: https://gitcode.com/gh_mirrors/ki/kindeditor 在当今数字化内容创作环境中,富文本编辑器已成为Web应…...
用Vector2.Lerp、MoveTowards和SmoothDamp搞定Unity 2D物体平滑移动(附性能对比)
Unity 2D平滑移动实战:Vector2.Lerp vs MoveTowards vs SmoothDamp 在2D游戏开发中,角色的移动效果直接影响玩家的操作体验。一个生硬的位移会破坏游戏沉浸感,而恰到好处的缓动则能让操作手感提升一个档次。Unity提供了三种核心方法来实现2D平…...
Unity GAS技能框架实战:客户端预测与策划配置系统
1. 这不是又一个“Hello World”式GAS教程——它解决的是你项目里真正卡住进度的骨架问题 如果你正在用Unity开发中大型动作游戏、RPG或ARPG,大概率已经听说过Gameplay Ability System(GAS),也大概率在某个深夜对着官方文档发呆&a…...
