Apisix 网关介绍

310 阅读3分钟

Apisix 网关

介绍

Apache APISIX 是 Apache 软件基金会下的云原生 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等丰富的流量管理功能。

官方自吹,为什么说 Apache APISIX 是最好的 API 网关? | Apache APISIX® -- Cloud-Native API Gateway

架构

image.png

  • 设计图 Snipaste_2024-07-23_18-51-46.png

Apache APISIX 是一个动态、实时、高性能的云原生 API 网关。它构建于 NGINX + ngx_lua 的技术基础之上,充分利用了 LuaJIT 所提供的强大性能。 APISIX 主要分为两个部分:

  • APISIX 核心:包括 Lua 插件、多语言插件运行时(Plugin Runner)、Wasm 插件运行时等;
  • 功能丰富的各种内置插件:包括可观测性、安全、流量控制等。

术语

1. Route

Route(也称为路由)是 APISIX 中最基础和最核心的资源对象,APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后将请求转发给到指定的上游服务。 路由中主要包含三部分内容:

  • 匹配规则:比如 uri、host、remote_addr 等等,你也可以自定义匹配规则,详细信息请参考 Route body 请求参数
  • 插件配置:你可以根据业务需求,在路由中配置相应的插件来实现功能。详细信息请参考 Pluginplugin-config
  • 上游信息:路由会根据配置的负载均衡信息,将请求按照规则转发至相应的上游。详细信息请参考 Upstream
2. Upstream

Upstream(也称之为上游)是对虚拟主机抽象,即应用层服务或节点的抽象

3. Service

Service(也称之为服务)是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,但与路由之间,通常是 1:N 即一对多的关系

4. Consumer

Consumer 是某类服务的消费者,需要与用户认证配合才可以使用。当不同的消费者请求同一个 API 时,APISIX 会根据当前请求的用户信息,对应不同的 Plugin 或 Upstream 配置。 对于 API 网关而言,一般情况可以通过请求域名、客户端 IP 地址等字段识别到某类请求方,然后进行插件过滤并转发请求到指定上游。但有时候该方式达不到用户需求,因此 APISIX 支持了 Consumer 对象。

5. Plugin

Plugin 表示将在 HTTP 请求/响应生命周期期间执行的插件配置。Plugin 的配置信息可以直接绑定在 Route 上,也可以被绑定在 ServiceConsumerPlugin Config 上。 对于同一个插件的配置,只能有一个是有效的,其插件配置优先级为 Consumer > Route > Plugin Config > Service

6. Global rules

Global Rules作用于所有请求, 定义的插件总是优先执行。

内置插件 (部分)

  • 通用插件:ext-plugin-post-req,ext-plugin-pre-req (需要和外部插件配合)
  • 转化插件:response-rewrite
  • 认证插件:key-auth, jwt-auth, basic-auth,openid-connect
  • 安全插件:cors,uri-blocker,ip-restriction, ua-restriction
  • 流量控制:limit-req, limit-conn, limit-count, proxy-cache, traffic-split
  • 观测性插件:链路,指标,日志

Java Plugin Runner

Apisix dashboard

  • 仪表盘页面 image.png
  • 控制面板,可以在页面上创建各种规则(路由,上游,服务,消费者,插件)