API 网关是位于客户端与后端服务集之间的 API 管理工具。API 网关相当于反向代理,用于接受所有 API 的调用、整合处理这些调用所需的各种服务,并返回相应的结果。API 网关通常会处理跨 API 服务系统使用的常见任务,并统一接入进行管理。通过 API 网关的统一拦截,可以实现对 API 接口的安全、日志等共性需求,如用户身份验证、速率限制和统计信息。
至于APISIX有什么好处,在这里就不一一说啦,以及网关之间的对比网上很多,而且总结的也比较全面,今天总结一下APISIX Terminology以及之间的关系。
Consumer 是某类服务的消费者,需要与用户认证配合才可以使用。当不同的消费者请求同一个 API 时,APISIX 会根据当前请求的用户信息,对应不同的 Plugin 或 Upstream 配置。如果 Route、Service、Consumer 和 Plugin Config 都绑定了相同的插件,只有消费者的插件配置会生效。插件配置的优先级由高到低的顺序是:Consumer > Route > Plugin Config > Service。创建消费者时,需绑定至少一个认证类插件。
Consumer Groups,你可以在同一个消费者组中启用任意数量的插件,并在一个或者多个消费者中引用该消费者组。
Plugin 表示将在 HTTP 请求/响应生命周期期间执行的插件配置。Plugin 的配置信息可以直接绑定在 Route 上,也可以被绑定在 Service、Consumer 或 Plugin Config 上。
Plugin Config 属于一组通用插件配置的抽象。
Route(也称为路由)是 APISIX 中最基础和最核心的资源对象,APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后将请求转发给到指定的上游服务。
Service(也称之为服务)是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,但与路由之间,通常是 1:N 即一对多的关系。
Upstream(也称之为上游)是对虚拟主机抽象,即应用层服务或节点的抽象。你可以通过 Upstream 对象对多个服务节点按照配置规则进行负载均衡。
Secret是指 APISIX 运行过程中所需的任何敏感信息,它可能是核心配置的一部分(如 etcd 的密码),也可能是插件中的一些敏感信息。APISIX 中常见的密钥类型包括:一些组件(etcd、Redis、Kafka 等)的用户名、密码,证书的私钥,API 密钥,敏感的插件配置字段,通常用于身份验证、hash、签名或加密。
主要关注一下Route、Service、Upstream、Target(目标服务器)之间的关系,上图已经把APISIX涉及的术语都画出来啦。
再来看一下具体的关系图,只有把这些关系理清楚,路由控制才能游刃有余。
最近两天把官网的手册撸了一把,接下来就再了解一下APISIX的Plugin就开始实战,当然这些图都是楼主纯手工打造,感觉又不对的地方欢迎留言拍砖。