10大亮点!带你多角度了解云原生API网关Apache APISIX 3.0预览版

API 网关作为一个存在时间比较长的基础组件,一直致力于提供业务层面的限流限速、身份认证、可观测性等多方面的功能 。
随着服务端系统的迭代,越来越多的服务开始从裸金属迁移到了 K8s 中,原来的单体架构也逐渐进化为微服务架构,同时企业也开始将一些私有化机房部署到多云和混合云场景中来 。
随着这些大环境的技术变更,业务层面对于 API 网关的需求也开始逐渐复杂 。
API 网关 Apache APISIX
Apache APISIX 在产品诞生之际,就希望能够在云原生和微服务的技术环境下,帮助企业解决一些新的问题 。比如通过全动态特性将业务的流量进行自动扩缩容、通过一次性修改进行更方便地集群化管理等 。
因此 APISIX 在架构设计上,就采取了数据面与控制面分离的模式,实现了全动态和集群化管理,这些都主要得益于 etcd 组件的作用 。

10大亮点!带你多角度了解云原生API网关Apache APISIX 3.0预览版

文章插图
APISIX 会将相关的路由配置和插件配置等都放置在 etcd 内进行存储和管理 。如上图所示,右侧控制面(Control Plane)的数据都存放在 etcd 中,而左侧的数据面(Data Plane)则主要是监听 etcd 的变更,快速感知其变化,无需修改其他配置文件 。
但是只解决了这些问题还是不够的 。作为对上下游都有承接需求的中间件来说,API 网关大多数时候都是在企业架构中起到了流量入口和承上启下的关键位置 。这个位置就决定了它不会像数据库一样,只接收来自用户业务层面的需求 。
除了业务层面需求外,API 网关也会存在类似二次开发这种定制或集成需求 。如何让开发者在使用 APISIX 时能更轻松地实现自定义开发,这就是 APISIX 解决的第三个痛点,即让开发者的使用门槛降得足够低 。
在 APISIX 里,插件的开发主要是通过 Lua 语言来完成,通过 LuaJIT 去保证编译后的代码性能足够好 。但 Lua 作为一个相对小众的语言,对绝大部分后端工程师而言学习成本略高 。为此,APISIX 通过两种方式来解决这个问题 。
第一种方式就是通过 Runner Plugin 来支持更多的主流开发语言,比如 JAVA、Python/ target=_blank class=infotextkey>Python、Go 等 。如果你是一个后端工程师,至少应该会其中一种语言,那么这个时候你就可以非常方便地通过本地 RPC 通信,使用你之前熟悉的计算语言去开发一个 APISIX 插件 。
这样做的好处是减少了开发成本,提高了开发效率 。当然弊端就是在性能层面有一些损失 。那么,有没有一种既能达到 Lua 原生性能,同时又兼顾高级语言的开发效率方案呢?
10大亮点!带你多角度了解云原生API网关Apache APISIX 3.0预览版

文章插图
这里就引出了第二种方式,也就是上图左侧部分 。WebAssembly 最早是用在前端或浏览器上的一个技术,在服务端它也逐渐展示出来它的优势 。
把 WebAssembly 嵌入到了 APISIX 里,用户就可以使用 WebAssembly 去编译成 WebAssembly 的字节码在 APISIX 中运行 。最终达到的效果就是利用高效率,开发出了一个既有高性能又使用高级计算语言编写的 APISIX 插件 。
所以在目前的 APISIX 版本中,用户可以使用 Lua、Go、Python 和 Wasm 等多种方式,基于 APISIX 编写自定义代码 。通过这样的方式,降低了开发者的使用门槛,也为 APISIX 的功能提供了更多的可能性 。
得益于 APISIX 的架构和性能优势,从诞生到现在三年多的时间内,APISIX 在全球范围内的用户发展速度远超预期 。比如 wps、新浪微博、爱奇艺等国内大厂,这些都是每天承载几百亿次 API 调用的企业用户 。在海外也有像 NASA、欧盟数字工厂、瑞士电信等类似科研机构领域的用户在使用 。
10大亮点!带你多角度了解云原生API网关Apache APISIX 3.0预览版

文章插图
APISIX 3.0 新增的 10 大亮点
APISIX 在 2022 年初就提出了全新的 3.0 Roadmap,在 3.0 版本中将重点在易用性和生态系统等方面进行迭代与更新 。
10大亮点!带你多角度了解云原生API网关Apache APISIX 3.0预览版

文章插图
目前 APISIX 已正式推出 3.0 预览版,在此也选取了如下十个亮眼功能,进行一个简单的功能介绍 。


推荐阅读