一、APISIX功能
APISIX 是基于OpenResty + etcd 实现的云原生、高性能、可扩展的微服务 API 网关。
OpenResty:通过 Lua 扩展 Nginx 实现的可伸缩的 Web 平台
- Lua :使用C语言表现的一种轻量级可扩展脚本语言,开源
- OpenResty 是一个 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,并且性能非常高
- OpenResty 的目标是让你的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型
etcd:Key/Value 存储系统。
- etcd目标是构建一个高可用的分布式键值(key-value)数据库,内部采用raft协议作为一致性算法,基于Go语言实现。
APISIX的功能有很多,包括动态路由、url重写、动态上游、IP黑白名单、A/B测试、灰度发布、限速限流、监控报警、健康检查等等,本文只介绍几个比较常用的功能,其他功能具体可以查看APISIX的官方文档说明。
1.服务热启动功能
使用过Nginx的同学都会遇到过这种情况,在修改nginx.conf后需要重启nginx服务修改才会生效,重启时间虽然短暂,但难免会有一段服务不可用时间。当然,可以通过其他方式进行规避服务不可用。APISIX的服务热启动通过在路由、Service、Upstreams等插件中动态的修改配置即可,并不需要再重启APISIX服务来使修改生效。
2.热插件功能
不再需要在nginx.conf文件中编写复杂的规则代码来实现需求,通过使用自带的路由、Upstreams等插件,在前端页面中添加所需要的规则即可实现。下文应用会详细介绍。目前通过插件可以实现uri重写、根据请求信息中的内容实现路由跳转等等。也可以根据自己的需求开发符合自己需求的插件。
3.动态负载均衡
通过Upstreams插件,跨多个上游服务的动态负载均衡,目前已支持 round-robin 轮询和一致性哈希算法
4.数据集群
APISIX支持etcd集群,通过etcd集群增强了系统的可用性,大大减小了故障损失。
5.监控
APISIX外接第三方prometheus监控系统,提供符合prometheus数据格式的监控指标数据。Prometheus 是由 SoundCloud 开源监控告警解决方案,已经比较成熟完善。
6.身份验证
支持 key-auth、JWT、basic-auth、wolf-rbac 等多种认证方式。
7.限流限速
可以基于速率、请求数、并发等维度限制。