API网关-APISIX简介

天翼云开发者社区
• 阅读 293

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

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

点赞
收藏
评论区
推荐文章
Prodan Labs Prodan Labs
3年前
Kubernetes Ingress — Kong
Kong是由Mashape公司开源的一个高性能、高可用、易扩展的APIGateway项目,基于OpenResty(NginxLua模块),并提供了插件实现API的AOP功能。可以通过负载均衡、插件扩展等方式,来处理网络请求。Kong主要的概念Servi
Wesley13 Wesley13
3年前
SIA
SIAGATEWAY是基于SpringCloud微服务生态体系下开发的一个分布式微服务网关系统。具备简单易用、可视化、高可扩展、高可用性等特征,提供云原生、完整及成熟的接入服务解决方案。本文介绍API网关的安装部署。一、环境1.1编译环境Maven3nodejsJdk1.81.2
Easter79 Easter79
3年前
springboot2.0下的zuul路由网关初探
Zuul作为微服务系统的网关组件,用于构建边界服务,致力于动态路由、过滤、监控、弹性伸缩和安全。为什么需要ZuulZuul、Ribbon以及Eureka结合可以实现智能路由和负载均衡的功能;网关将所有服务的API接口统一聚合,统一对外暴露。外界调用API接口时,不需要知道微服务系统中各服务相互调用的复杂性,保护了内部微服务单元的API接口;网关可以做
日均数十亿访问量!解读个推API网关高能演进
近日,个推服务端技术专家李白受邀参与SegmentFaultDDay线上技术直播活动,与来自头部互联网企业的后端技术专家们共探“后端架构演进之路”。李白以“API网关演进之路”为主题,分享了个推基于golang进行API网关建设的实践经验和深度思考。★以下为李白演讲干货整理:API网关之源起API网关是随“微服务”概念而兴起的一种架构模式。在微服务
Stella981 Stella981
3年前
API网关 kong 的初步认识
Kong是Mashape开源的高性能高可用API网关和API服务管理层。自2015年在github开源后,广泛受到关注。它基于OpenResty,进行API管理,并提供了插件实现API的AOP。Kong的插件机制是其高可扩展性的根源,Kong可以很方便地为路由和服务提供各种插件,网关所需要的基本特性。Kong支持特性:云原生:与平台无关,K
Wesley13 Wesley13
3年前
HTTP API网关选择之一Kong介绍
转自张开涛的博客(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin.qq.com%2Fs%2FLIq2CiXJQmmjBC0yvYLY5A)Kong是Mashape开源的高性能高可用API网关和API服务管理层。它基于OpenResty,进行API管理,并提供了插件
Stella981 Stella981
3年前
Kong for Kubernetes 0.8发布 提供一致的API管理生命周期
导语KongInc.发布了KongforKubernetes0.8版。对于KongGateway用户而言,新版本为Kubernetes和非Kubernetes工作负载提供了“一致的API管理生命周期”。正文KongAPI网关是建立在NGINX之上的开源API网关。根据公告博客文章,KongforKuber
Wesley13 Wesley13
3年前
API网关原理
1、API网关介绍 API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。 API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有
高性能API网关Kong介绍
本文关键词:高性能、API网关、Kong、微服务1.Introduction是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(Allinone)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规模成倍增长,API的管理难度也在日益增加,使用API网关发布和管
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
696
粉丝
15
获赞
40