写点什么

API 网关 -APISIX 简介

  • 2023-06-19
    北京
  • 本文字数:1556 字

    阅读完需:约 5 分钟

本文分享自天翼云开发者社区《API网关-APISIX简介》,作者:w****n


Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。APISIX 构建于 nginx+ngx_lua 的技术基础之上,充分利用了 LuaJIT 所提供的强大性能,基于 openresty+etcd 实现了云原生,高性能,可扩展的微服务 API 网关。



APISIX 主要包括两部分:

1. apisix core:apisix 核心提供了诸如 API 管理,路由匹配,负载均衡,服务发现等 api 网关的主要功能; 另外也支持多语言插件运行时,提供了原生 lua 插件的运行框架和其他常规语言(例如 go,java,python 等)运行时支持,也包括 wasm;

2. apisix plugin:apisix 插件提供了功能丰富的各种内置插件,包括:

1)鉴权,各种类型认证, jwt,basic-auth, cas-auth,ldap-auth 等

2)安全,ip 黑白名单,用户黑白名单,referer 黑白名单,cors,用户拦截等

3)流量控制,限流(包括流速限制,连接数限制,请求限制等),熔断,镜像请求等;

4)可观测性,各种监控插件支持,日志投递,链路追踪等;

5)多协议支持

 

APISIX 的技术优势

无数据库依赖:目前大多数 API 网关产品在关系数据库中存储 API 数据、路由、证书和配置信息,但如果数据库出现故障,这种方法可能会导致可用性问题。相比之下,APISIX 使用 etcd 存储配置信息可以实现实时更新,并更好地反映 API 网关的高可用性要求。此外,使用 etcd 作为存储系统使 APISIX 与云原生架构更加兼容,并允许更快地更新配置信息。


高性能的路由匹配算法:API 网关需要使用匹配算法来决定如何处理每个请求,而一个优秀的匹配算法是必不可少的。Hash 算法性能不错,但无法实现模糊匹配;正则可以模糊匹配,但性能不好。APISIX 选择使用 RadixTree 这种高效且支持模糊匹配的搜索数据结构,它提供了 kv 存储查找的数据结构并对只有一个子节点的中间节点进行了压缩,支持一个前缀下有多个不同路由的场景(具体实现可见 lua-resty-radixtree)。即当对某个请求进行匹配时,RadixTree 将采用层层递进的方式进行匹配,其复杂度为 O(K)(K 是路由中 URI 的长度,与 API 数量多少无关),该算法非常适合公有云、CDN 以及路由数量比较多的场景,可以很好地满足路由数量快速增长的需求。


高性能 IP 匹配算法:APISIX 的 IP 匹配算法与路由匹配算法所使用的原理以及原始数据是不一样的。以 192.168.1.1 这个 IP 为例,由于每个 IP 段的范围是 0 到 255,因此在对 IP 进行匹配时我们可以认为 IP 地址是由 4 个 16 位整数型的数构成的,IP 长度是固定的。那么我们可以采用更高效的算法完成匹配。假设现在有一个包含 500 条 IPv4 记录的 IP 库,APISIX 会将 500 条 IPv4 的记录缓存在 Hash 表中,当进行 IP 匹配时使用 Hash 的方式进行查找,时间复杂度为 O(1)。而其他 API 网关则是通过遍历的方式完成 IP 匹配,发送到网关每个请求将逐个遍历最多 500 次是否相等后才能知道计算结果。所以 APISIX 的 高精度 IP 匹配算法大大提高了需要进行海量 IP 黑白名单匹配场景(如 WAF)的效率。


精细化路由:API 网关通过请求中的流量特征完成预设规则的匹配,常见特征包含了请求中的 Host、URI 路径、URI 查询参数、URI 路径参数、HTTP 请求方法、请求头等;除此之外,APISIX 还支持更多特性以解决复杂多变的应用场景。既包括 NGINX 内置变量, 也包括条件表达式。


支持多语言插件:APISIX 目前支持了 80 多种的插件,但是为了涵盖用户多样复杂的使用场景,用户可以针对具体业务进行定制化插件开发。APISIX 对自定义插件的支持主要有两种,一种是通过 Plugin Runner 来支持更多主流变成语言(java,python,go 等),让用户可以通过本地 rpc 通信,实现插件开发;第二种是支持 wasm 开发插件,用户可以使用嵌入到 apisix 中的 wasm 编译 wasm 的字节码,以支持插件在 apisix 中运行,提高利用率。

 

用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
API网关-APISIX简介_云原生_天翼云开发者社区_InfoQ写作社区