APISIX简介与应用

APISIX 是一个云原生、高性能、可扩展的微服务 API 开源网关,基于OpenResty(Nginx+Lua)etcd来实现,对比传统的API网关,具有动态路由热插件加载的特点。系统本身自带前端,可以手动配置路由负载均衡限速限流身份验证等插件,操作方便。APISIX是用Lua语言开发,语言相对简单,容易上手,同时可以按自己的需求进行系统的二次开发以及开发自己的插件,目前APISIX已经发布到1.1版本。

本文将从APISIX功能,安装以及使用三个方面对APISIX进行介绍。

一、APISIX功能

APISIX的功能有很多,包括动态路由url重写动态上游IP黑白名单A/B测试灰度发布限速限流监控报警健康检查等等,本文只介绍几个比较常用的功能,其他功能具体可以查看APISIX的官方文档说明

1.服务热启动功能

使用过Nginx的同学都会遇到过这种情况,在修改nginx.conf后需要重启nginx服务修改才会生效,重启时间虽然短暂,但难免会有一段服务不可用时间。当然,可以通过其他方式进行规避服务不可用。APISIX的服务热启动通过在路由、Service、Upstreams等插件中动态的修改配置即可,并不需要再重启APISIX服务来使修改生效。

2.热插件功能

不再需要在nginx.conf文件中编写复杂的规则代码来实现需求,通过使用自带的路由、Upstreams等插件,在前端页面中添加所需要的规则即可实现。下文应用会详细介绍。目前通过插件可以实现uri重写、根据请求信息中的内容实现路由跳转等等。也可以根据自己的需求开发符合自己需求的插件。

3.动态负载均衡

通过Upstreams插件,可以实现基于权重的roundrobin和chash负载均衡。

4.数据集群

APISIX支持etcd集群,通过etcd集群增强了系统的可用性,大大减小了故障损失。

5.监控

APISIX外接第三方prometheus监控系统,提供符合prometheus数据格式的监控指标数据。Prometheus 是由 SoundCloud 开源监控告警解决方案,已经比较成熟完善。

二、APISIX安装

1.安装OpenResty和etcd依赖

CentOS7

# install epel, `luarocks` need it.
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -ivh epel-release-latest-7.noarch.rpm

# add OpenResty source
sudo yum install yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

# install OpenResty, etcd and some compilation tools
sudo yum install -y etcd openresty curl git gcc luarocks lua-devel

# start etcd server
sudo service etcd start

Ubuntu 16.04 & 18.04

# add OpenResty source
wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
sudo apt-get update

# install OpenResty, etcd and some compilation tools
sudo apt-get install -y git etcd openresty curl luarocks

# start etcd server
sudo service etcd start

2.安装APISIX

通过源码包安装

# 下载源码包
wget http://www.apache.org/dist/incubator/apisix/1.1/apache-apisix-1.1-incubating-src.tar.gz
tar zxvf apache-apisix-1.1-incubating-src.tar.gz

# 安装运行时依赖的Lua库
cd apache-apisix-1.1-incubating
make deps

3.安装控制台

确保你的运行环境中的 Node 版本 >= 8.12.0。
3.1 下载 Dashboard源码:
git clone https://github.com/apache/incubator-apisix-dashboard.git
3.2 安装依赖并构建
git checkout <v1.0>  #这里的tag版本和你使用的apisix版本一致
yarn && yarn build:prod
3.3与 APISIX 集成

把编译后的在 /dist 目录下的所有文件,拷贝到 apisix/dashboard 目录下。 使用浏览器打开 http://127.0.0.1:9080/apisix/dashboard/ 即可使用, 不用填写用户名和密码,直接登录。

4.管理(启动、关闭)APISIX服务

# init nginx config file and etcd
make init

# start APISIX server
make run

# stop APISIX server
make stop

三、APISIX应用

配置一个可用的链路。

1.配置Upstream

创建Upstream界面中有Desc、Type、Key、Node。Type中根据需要选择roundrobinchash两种方式,如果选择chash方式需要从下拉列表中选择合适的Key。Node节点根据实际需求可以添加多个,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PjAMcN42-1588154630239)(D:\ai\upstreams.png)]

2.配置Routes

创建Route界面中有Desc、URIs、Hosts、AddURI、Remote Address、Methods、Upstream、Service。在URIs中添加接收的请求uri,支持正则表达,例如:请求地址有http://ip:port/hello/world.jsp、http://ip:port/hello/apisix.do,这里的URIs可以添加/hello/*来匹配处理这类请求。在Upstream中选择刚才创建的upstream。其他选择可以默认不填,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9opevy2g-1588154630243)(D:\ai\routes.png)]

3.配置完成

完成上述两步配置后,就可以通过client端请求APISIX实现路由跳转。

四、小结

综上,APISIX搭建比较简单,上手比较容易,能够满足日常的网关需求,同时也可以自己进行二次开发。当然,APISIX中也有其他功能,相关功能可以自己进行扩展研究。可以根据自己的实际需求,对APISIX功能进行适当的删减,符合自己的才是最重要的。

后期需要在监控方面进行二次开发,目前是外接三方Prometheus,Prometheus是一款比较成熟完善的监控系统,但是外接三方让系统看起来比较庞大,并不是那么的精简,后期可以参考Prometheus中监控指标进行二次开发。

### Apisix 工作原理及实际应用场景详解 以下是关于 Apache APISIX 的工作原理、实际应用场景以及使用指南的详细解答。 --- #### 1. **Apache APISIX 的工作原理** ##### (1)架构概述 Apache APISIX 是一个基于 OpenResty 和 etcd 的动态 API 网关,主要由以下几个部分组成: - **OpenResty**: 提供底层高性能 Web Server 支持。 - **etcd**: 用于存储配置数据和服务发现。 - **Lua Scripting**: 使用 Lua 脚本实现复杂的路由匹配和插件逻辑[^1]。 整个系统的运作流程大致如下:API 请求到达 Nginx 后,通过 Lua 插件执行一系列中间件逻辑(如身份验证、限流等),最后将请求转发至上游服务。此过程中的所有配置均可以通过 RESTful 接口实时更新,无需重启服务即可生效[^3]。 ##### (2)核心组件解析 - **Route & Service Management** Route 定义了如何匹配入站流量并将它们映射到具体的服务实例上;Service 则封装了一组共享属性的目标服务器群集描述信息。两者共同决定了请求分发规则[^1]。 - **Dynamic Configuration Update** 当管理员修改某条 route 或 service 设置时,这些改动会被立即同步给所有的 worker processes 并即时反映出来,极大地提高了运维效率[^4]。 - **Plugin System** APISIX 内置丰富的 plugin collection,涵盖了从基础的安全防护(JWT auth, key-auth etc.) 到高级的功能增强 (Prometheus metrics exporter, zipkin tracing agent),用户还可以自行开发定制化的 plugins 来满足特殊需求[^2]。 --- #### 2. **实际应用场景分析** 由于其灵活性高且易于集成第三方工具链的优势,APISIX 在多个领域都有广泛的应用案例: ##### (1)微服务治理 随着企业 IT 架构逐步向分布式转型,传统的单体应用逐渐被拆解成众多独立部署的小型模块单元。此时就需要一种高效的解决方案来协调各个子系统之间的交互关系。APISIX 凭借强大的负载均衡能力和细粒度的访问控制策略成为理想的选择之一。 ##### (2)安全加固 现代互联网环境中充斥着各种潜在威胁源,因此构建坚固的第一道防线显得尤为重要。借助 Keyless SSL/TLS termination 技术以及多种内置认证机制的支持,APISIX 可以为下游资源提供额外一层保护屏障。 ##### (3)性能优化 对于追求极致响应速度的关键业务来说,减少不必要的网络跳转次数至关重要。得益于零拷贝内存分配算法(table pool)[^4]以及其他多项技术创新成果加持下,即使面对超高并发量也能保持平稳运行态势。 --- #### 3. **使用指南** 为了帮助初学者更快地上手该产品,这里给出几个关键步骤指导: ##### (1)安装启动 在 CentOS 上推荐采用 yum 方式获取最新稳定版本包: ```bash sudo yum install apache-apisix -y ``` 完成后检查默认目录结构是否存在预期内容(/usr/local/apisix/) ,确认无误后再尝试首次运行测试环境[^1]. ##### (2)基本概念熟悉 重点掌握以下术语含义及其相互间联系: - Routes: 明确指定了哪些条件下的HTTP请求应该送往哪里. - Services: 表征一组拥有相同特征的目的地集合. - Upstreams: 细化到了具体的backend instance level. ##### (3)动手实践演练 选取简单的 demo scenario 开始探索 journey , 比如创建一条最简易版path-based routing rule : ```json { "uri": "/hello", "upstream": { "type": "roundrobin", "nodes": [ {"host":"http://example.com","weight":1} ] } } ``` 将其提交至 admin api endpoint 下完成新增操作后便可观察效果表现情况[^2]. --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值