首页 > 其他分享 >API网关-APISIX简介

API网关-APISIX简介

时间:2023-06-19 15:34:08浏览次数:50  
标签:网关 匹配 IP 插件 API APISIX

本文分享自天翼云开发者社区《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中运行,提高利用率。

 

标签:网关,匹配,IP,插件,API,APISIX
From: https://www.cnblogs.com/developer-tianyiyun/p/17491279.html

相关文章

  • 各大电商平台关于API接口的一些知识分享和示例
    随着互联网的发展,电子商务也成为了内部的一个热门话题,各大电商平台在这种情况下开发了各种API接口,为各种企业提供了基础数据的支持,加速了市场竞争。本文将重点讨论电商API接口相关的一些知识分享。一、电商API接口的重要性对于电商平台来说,API接口就像是一座桥梁,它可以将......
  • 通过API接口获取到数据后的使用方法以及储存方法
    API接口是许多应用程序和服务所必需的,可以将多个应用程序连接起来,允许不同应用程序之间的数据共享。在本文中,我们将探讨如何使用API接口获取数据,以及如何储存这些数据。1.使用API接口获取数据在获取API数据之前,我们需要确定API接口的URL和参数。该URL通常由API提供程序提供,并列......
  • 2023-06-19 API `getMenuButtonBoundingClientRect` is not yet implemented
    前言:想使用该Api来获取设备导航栏高度,结果报错了:API`getMenuButtonBoundingClientRect`isnotyetimplemented尚未实现API`getMenuButtonBoundingClientRect`原因:该Api不支持在app端或者h5端使用。平台兼容如下: AppH5微信小程序支付宝小程序百度小程序抖音小程序飞书小......
  • API接口开发系列(获得京东JD商品详情原数据java源代码调用示例)
    ​请求获取京东商品详情原数据(免费获取调用)的作用:1.提供商品信息:京东商品详情中的原数据可以提供商品的基本信息,包括商品名称、价格、品牌、规格参数、图片等,让消费者更好地了解商品。2.帮助搜索引擎识别:京东商品详情的原数据可以被搜索引擎识别,在搜索结果页中显示更为详细丰富......
  • API接口开发系列(获得京东JD商品详情原数据java源代码调用示例)
    请求获取京东商品详情原数据(免费获取调用请私信)的作用:1.提供商品信息:京东商品详情中的原数据可以提供商品的基本信息,包括商品名称、价格、品牌、规格参数、图片等,让消费者更好地了解商品。2.帮助搜索引擎识别:京东商品详情的原数据可以被搜索引擎识别,在搜索结果页中显示更为详细丰富......
  • .NET Core Web API 实现图形验证码
    https://blog.csdn.net/liwan09/article/details/126319320?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-126319320-blog-101289369.235%5Ev38%5Epc_relevant_sort_base2&depth_1-utm_......
  • ABP点滴:API无权访问资源时,返回 PolicyName 信息
    ABP无权访问API时,返回的是403Forbidden和重定向Localtion,但不知道具体是哪个Policy受阻。整改思路:重写MethodInvocationAuthorizationService,抛出AbpAuthorizationException异常时附带PolicyName重写DefaultAbpAuthorizationExceptionHandler,在http响应头中增加上......
  • 机器翻译技术的发展趋势:从API到深度学习
    目录机器翻译技术的发展趋势:从API到深度学习随着全球化的发展,机器翻译技术在各个领域得到了广泛的应用。机器翻译技术的核心是将源语言文本翻译成目标语言文本,其中涉及到语言模型、文本生成模型和翻译模型等多个方面。在过去的几年中,随着深度学习技术的不断发展,机器翻译技术也经......
  • [pybind11]为c++项目写python API接口
    C++项目的pybind方法有哪些?有什么区别?以下是主要的python绑定cpp的方法:方法年份代表用户适用于CPython的C/C++扩展模块1991标准库PyBind11(推荐用于C++)2015Cython(推荐用于C)2007gevent、kivyHPy2019mypyc2017ctype2003oscryptocffi......
  • 在线免费ChatGPT,官方api
    作为一款强大的语言模型,ChatGPT在自然语言处理领域享有较高声誉。现在,您可以在我们的在线平台上免费体验ChatGPT的功能了!经过不断地优化和改进,我们的在线聊天机器人已经能够针对各种话题展示出色的回答能力。无论是娱乐、教育、生活还是工作相关的话题,ChatGPT都能带来令人惊喜的......