APISIX介绍

Apache APISIX是一个高性能、动态、可扩展的 API 网关,由 Apache 基金会孵化并管理。它基于 Nginx 和 etcd 开发,提供了丰富的流量管理功能,如负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等。APISIX 旨在为微服务和 API 管理提供统一的入口,同时支持各种插件来满足不同的业务需求。

APISIX特点

  • ⾼可⽤: APISIX 默认选⽤ ETCD 作为配置中⼼,ETCD 天然⽀持分布式、⾼可⽤,并且在 K8s 等领域有⼤量实践经验,使得 APISIX 可以轻松⽀持毫秒级配置更新、⽀撑数千⽹关节点;⽹关节点⽆状态,可任意扩容或缩容;
  • 协议转换: ⽀持丰富的协议类型,如 TCP/UDP、Dubbo、MQTT、gRPC、SOAP、WebSocket 等;
  • 安全防护: 内置多种⾝份验证与安全防护能⼒,如 Basic Auth、JSON Web Token、IP ⿊⽩名单、OAuth 等;
  • 性能极⾼: APISIX使⽤Radixtree算法实现⾼性能、灵活路由,在 AWS 8 核⼼服务器中,QPS 约为 140K,延迟约 为 0.2 ms;
  • 全动态能⼒: 修改⽹关配置、增加或修改插件等,⽆需重启⽹关服务即可实时⽣效;⽀持动态加载 SSL 证书;
  • 扩展能⼒强: 借助灵活的插件机制,可针对内部业务完成功能定制;⽀持⾃定义负载均衡算法与路由算法,不受限于API⽹关实现;通过运⾏时动态执⾏⽤⼾⾃定义函数⽅式来实现Serverless,使⽹关边缘节点更加 灵活;
  • 治理能⼒丰富: 如故障隔离、熔断降级、限流限速等;在启⽤主动健康检查后,⽹关将⽀持智能跟踪不健康上游节点 的能⼒,并⾃动过滤不健康节点,以提⾼整体服务稳定性。

APISIX架构

动态云原生网关 APISIX-1

上图为 APISIX 产品中控制⾯(简称 CP)与数据⾯(简称 DP)的架构⽰意图:

  • 数据面:数据平⾯⽤于接收并处理调⽤⽅请求,使⽤Lua与Nginx动态控制请求流量。当请求进⼊时,将根据预设路由规则进⾏匹配,匹配到的请求将被⽹关转发⾄对应上游服务。在此过程中,⽹关有能⼒根据预设规则中不同插件的配置,使⽤⼀系列插件对请求从进⼊到离开的各个阶段进⾏操作。例如:请求可能会经过⾝份认证(避免重放攻击、参数篡改等)、请求审计(请求来源信息、上游处理时⻓ 等)、路由处理(根据预设规则获 取最终上游服务地址)、请求转发(⽹关将请求转发⾄上游⽬标节 点)、请求响应(上游处理完成后,⽹关将结果返回给调⽤⽅)等⼏个步骤。
  • 控制面: 控制平⾯包含了Admin API与默认配置中⼼ETCD。管理员在访问并操作控制台时,控制台将调⽤Admin API下发配置到ETCD,借助ETCD Watch机制,配置将在⽹关中实时⽣效。例如:管理员可 增加⼀条路由,并配置限速插件,当触发到限速阈值后,⽹关将会暂时阻⽌后续匹配到该路由的请求 进⼊。借助ETCD的Watch机制,当管理员在控制⾯板更新配置后,APISIX将在毫秒级别内通知到各个⽹关节点。。

APISIX采⽤了数据平⾯与控制平⾯分离的架构⽅式,通过配置中⼼接收、下发配置,使 得数据平⾯不会受到控制平⾯影响。配置中⼼默认为 ETCD,但也⽀持 Consul、Nacos、Eureka 等, 可根据您的实际情况进⾏选择。此外,企业⽤⼾只需关注业务本⾝,与业务⽆关的⼤部分功能交给 APISIX 内置插件即可实现,如⾝份验证、性能分析等。

APISIX部署

官方文档 : https://apisix.apache.org/zh/docs/apisix/installation-guide/