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

API网关-APISIX简介的更多相关文章

  1. 微服务为什么要用到 API 网关?

    本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志. 作者程小兰,API7.ai 技术工程师,Apache APISIX Contrib ...

  2. API 网关的选型和持续集成

    2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 作者温铭在活动上做了< API 网关的选 ...

  3. API 网关日志的价值,你了解多少?

    本文介绍了 API 网关日志的价值,并以知名网关 Apache APISIX 为例,展示如何集成 API 网关日志. 作者钱勇,API7.ai 技术工程师,Apache APISIX Committe ...

  4. API网关之Kong网关简介

    1. Kong简介 那么,Kong是一个什么东东呢?它是一个开源的API网关,或者你可以认为它是一个针对API的一个管理工具.你可以在那些上游service之上,额外去实现一些功能.Kong是开源的, ...

  5. 云原生API网关全生命周期管理Apache APISIX探究实操

    @ 目录 概述 定义 NGINX 与 Kong 的痛点 APISIX 的技术优势 特性 架构 应用场景 主要概念 部署 快速入门 quickstart安装 Admin API创建路由 RPM安装 安装 ...

  6. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  7. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

  8. 微服务从设计到部署(二)使用 API 网关

    链接:https://github.com/oopsguy/microservices-from-design-to-deployment-chinese 译者:Oopsguy 本书的七个章节是关于设 ...

  9. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  10. 阿里云API网关(11)API的三种安全认证方式

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

随机推荐

  1. 嵌入式Linux系统构建

    参考资料 本篇内容主要参考 韦东山的<嵌入式Linux应用开发完全手册V5.2_IMX6ULL_Pro开发板.pdf> 具体课程见 百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发 ...

  2. JS 正则表示式 字符串匹配 忽略大小写

    在项目中遇到了需要使用字符串进行正则匹配,同时还要忽略大小写可以按照以下方法:1 先使用new RegExp(newVal, 'i')生成需要匹配的规则,其中 'i' 表示忽略大小写2 再对相应的字符 ...

  3. Winform Tab增加关闭标签页

    Winform的Tab控件,有新增有移除,但是呢,缺了一个标签页上的关闭按钮,这个东西说重要也重要,说不重要也不重要. 这里就说一下怎么添加这玩意. 这玩意需要重绘tab控件,所以我们需要处理Draw ...

  4. Educational Codeforces Round 77 (Rated for Div2)

    B - Obtain Two Zeroes 给定两个整数\(a,b\),你可以执行以下操作任意次:每次操作选择一个正整数\(x\),使得\(a:=a-x,b:=b-2x\)或者\(a:=a-2x,b: ...

  5. 【第2章】matlab程序设计基础

    matlab语言的常量与变量 matlab语言的变量命名规则 由一个字母引导,后面可以为其他字符. 区分大小写 如Abc ≠ ABc matlab的保留常量 以下为系统保留常量,自己定义的变量不能与他 ...

  6. PM-企业数字化转型,数据治理是关键

      企业数字化转型是大势所趋,通过数据治理.数据平台建设.数据分析与建模,把数据变成服务,使数据能在企业内顺畅流动起来,为企业带来巨大的价值.数据是企业数字化转型的重要基础.   数据能创造价值,但数 ...

  7. win10重装如何跳过微软账号直接设置本地帐户

    ​在添加你的帐户界面,选择脱机帐户 第二个页面,选择有限的体验 第三个页面,设置自己本地的用户名 第四个页面,设置自己本地的密码

  8. Avalonia 国际化之路:Resx 资源文件的深度应用与探索

    在当今全球化的软件开发浪潮中,应用的国际化(i18n)与本地化(L10n)显得尤为重要.Avalonia UI 作为一款强大的跨平台 UI 框架,为开发者提供了多种实现国际化的途径.其中,使用传统的 ...

  9. SAGA/TCC 就是 WORKFLOW!!!

    SAGA TCC 的本质就是一个 workflow, 用 activiti, conductor 或 zeebee 都可以实现. saga, tcc 依赖的状态机模型在 workflow 引擎一直在用 ...

  10. Linux系统 tcpdump 抓包命令使用教程

    tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的 ...