本文将介绍Apache APISIX,这是一个开源API网关,可以处理速率限制选项,并且可以轻松地完全控制外部流量对内部后端API服务的访问。我们将看看是什么使它从其他网关服务中脱颖而出。我们还将详细讨论如何开始使用Apache APISIX网关。
在深入讨论这个主题之前,让我们先讨论一下API网关。
API网关
API网关是所有客户机的单一入口点。它们位于客户端和后端服务之间。通过调用多个后端服务,将来自客户机的API请求代理/路由到适当的服务。然后将结果聚合并返回给客户机。
- 网关实现的难点
- 大多数API网关适合处理企业内网流量,无法承受数以万计的客户端请求。
- 一些网关依赖于关系数据库,这对弹性扩展具有挑战性。这些系统大多是老旧的,并且是在微服务出现之前开发的。
APISIX
Apache APISIX是Apache基础下的顶级项目。它是一个云原生API网关,可以处理云计算、金融科技、保险、市场、房地产、安全、语音识别和旅游等行业多个平台上的接口流量。
Apache APISIX只是一个动态的、实时的、高性能的API网关。与传统的API网关相比,APISIX提供了适合微服务系统下API管理的功能。这可以通过动态路由、身份验证、可观察性、插件热加载、gRPC协议转码等实现。
企业可以使用Apache APISIX快速管理API和微服务流量,使用流限制身份验证、日志安全性和对复杂自定义插件的支持等特性。
APISIX有一个管理仪表板,用户可以很容易地管理和配置插件、路由和其他组件。它可以与许多开源统计和监控组件(如Prometheus、Apache Skywalking和Zipkin)集成,以提高性能。
APISIX架构
Apache APISIX架构
Apache APISIX包括三个部分:
- 数据平面:动态控制请求流量,实现流量的处理和分配;
- 控制平面:存储和同步网关数据配置;
- AI平面(TODO):编排插件,以及实时分析和处理请求流量。
APISIX组件
**插件:**APISIX有70多个用Lua开发的内置插件,包括身份认证、限制速率、限制请求、安全性、日志、可观察性等。这些插件涵盖了用户在企业中可能遇到的所有功能。通过这些插件,用户可以将APISIX转换为其业务所需的各种网关。尽管受到Kong的启发,Apache APISIX插件的架构和设计是完全不同的。它支持热重新加载,所以你不必重新启动服务;它还减轻了编写代码的困难。
**路由:**APISIX使用自适应lua -rest -radixtree来组合路由的所有良好特征。lua -rest -radixtree单核可以达到每秒数百万次匹配。它支持Nginx的所有内置变量和自定义函数。
**模式:**Apache APISIX使用JSON模式,它为Lua/LuaJIT提供了JSON模式草案4、草案6和草案7验证器。这个JsonSchema负责API的描述,并促进个人与用户界面之间的合作