您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

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

时间:2022-09-29 20:06:58  来源:网易号  作者:开源中国

API 网关作为一个存在时间比较长的基础组件,一直致力于提供业务层面的限流限速、身份认证、可观测性等多方面的功能。

随着服务端系统的迭代,越来越多的服务开始从裸金属迁移到了 K8s 中,原来的单体架构也逐渐进化为微服务架构,同时企业也开始将一些私有化机房部署到多云和混合云场景中来。

随着这些大环境的技术变更,业务层面对于 API 网关的需求也开始逐渐复杂。

API 网关 Apache APISIX

Apache APISIX 在产品诞生之际,就希望能够在云原生和微服务的技术环境下,帮助企业解决一些新的问题。比如通过全动态特性将业务的流量进行自动扩缩容、通过一次性修改进行更方便地集群化管理等。

因此 APISIX 在架构设计上,就采取了数据面与控制面分离的模式,实现了全动态和集群化管理,这些都主要得益于 etcd 组件的作用。

APISIX 会将相关的路由配置和插件配置等都放置在 etcd 内进行存储和管理。如上图所示,右侧控制面(Control Plane)的数据都存放在 etcd 中,而左侧的数据面(Data Plane)则主要是监听 etcd 的变更,快速感知其变化,无需修改其他配置文件。

但是只解决了这些问题还是不够的。作为对上下游都有承接需求的中间件来说,API 网关大多数时候都是在企业架构中起到了流量入口和承上启下的关键位置。这个位置就决定了它不会像数据库一样,只接收来自用户业务层面的需求。

除了业务层面需求外,API 网关也会存在类似二次开发这种定制或集成需求。如何让开发者在使用 APISIX 时能更轻松地实现自定义开发,这就是 APISIX 解决的第三个痛点,即让开发者的使用门槛降得足够低。

在 APISIX 里,插件的开发主要是通过 Lua 语言来完成,通过 LuaJIT 去保证编译后的代码性能足够好。但 Lua 作为一个相对小众的语言,对绝大部分后端工程师而言学习成本略高。为此,APISIX 通过两种方式来解决这个问题。

第一种方式就是通过 Runner Plugin 来支持更多的主流开发语言,比如 JAVAPython/ target=_blank class=infotextkey>Python、Go 等。如果你是一个后端工程师,至少应该会其中一种语言,那么这个时候你就可以非常方便地通过本地 RPC 通信,使用你之前熟悉的计算语言去开发一个 APISIX 插件。

这样做的好处是减少了开发成本,提高了开发效率。当然弊端就是在性能层面有一些损失。那么,有没有一种既能达到 Lua 原生性能,同时又兼顾高级语言的开发效率方案呢?

这里就引出了第二种方式,也就是上图左侧部分。WebAssembly 最早是用在前端或浏览器上的一个技术,在服务端它也逐渐展示出来它的优势。

把 WebAssembly 嵌入到了 APISIX 里,用户就可以使用 WebAssembly 去编译成 WebAssembly 的字节码在 APISIX 中运行。最终达到的效果就是利用高效率,开发出了一个既有高性能又使用高级计算语言编写的 APISIX 插件。

所以在目前的 APISIX 版本中,用户可以使用 Lua、Go、Python 和 Wasm 等多种方式,基于 APISIX 编写自定义代码。通过这样的方式,降低了开发者的使用门槛,也为 APISIX 的功能提供了更多的可能性。

得益于 APISIX 的架构和性能优势,从诞生到现在三年多的时间内,APISIX 在全球范围内的用户发展速度远超预期。比如 wps、新浪微博、爱奇艺等国内大厂,这些都是每天承载几百亿次 API 调用的企业用户。在海外也有像 NASA、欧盟数字工厂、瑞士电信等类似科研机构领域的用户在使用。

APISIX 3.0 新增的 10 大亮点

APISIX 在 2022 年初就提出了全新的 3.0 Roadmap,在 3.0 版本中将重点在易用性和生态系统等方面进行迭代与更新。

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

1.全面支持 ARM64

目前 ARM64 对于云厂商来说,已成为一个非常主流的服务器架构选型。从 AWS Graviton、GCP Tau T2A 再到华为鲲鹏等系列产品,可以看到各家云厂商都开始推出了基于 Arm 架构的服务器。

目前从数据来看,Arm 架构的服务器在性价比层面的表现略优于 x86。为了顺应时代技术潮流,APISIX 也在 ARM64 上做了全面的 CI 回归。保证用户在 Arm 架构中运行 APISIX 时,依旧可以顺畅运行各种功能。

2.新增 gRPC 客户端

在 3.0 版本中,将新增一个 core.grpc 模块。如果你熟悉 Nginx 和 OpenResty 的话,就知道这两者对于 gRPC 的支持相当有限,仅停留在执行反向代理或负载均衡这样的基础功能上。

而 APISIX 在目前 2.x 版本中就已经实现了 gRPC 和 HTTP 协议的转换。在 3.0 版本中,将通过新增 gRPC 客户端的方式,允许开发者直接调⽤第三⽅的 gRPC 服务,⽆需引⼊额外的组件或要求服务提供⽅额外使⽤ HTTP 接⼝,将使用过程大大简捷化。

3.重新设计 Admin API

目前在使用 APISIX 时,你可能会发现 APISIX 的响应体中掺杂了很多没有意义的数据,比如一些 etcd 的返回值,没有进行任何剪裁就直接传送给了客户端。同时目前整个响应体的架构设计也并不完善,存在一些冗余字段。

在 APISIX 3.0 版本中,重新设计了响应体结构,新的格式可以让整个请求格式和返回体都更加的 Restful 化,从而让用户更加方便地使用新版本的 Admin API。当然该过程也允许通过参数来控制使用哪个版本的 Admin API,不用害怕升级后兼容不了之前的版本。

4.DP 和 CP 分离

APISIX 在最近一两年内出现了多个安全相关的漏洞,大多数漏洞的根本原因都是因为 APISIX 在默认部署模式下,将数据面与控制面部署在一起了。一旦数据面上存在安全漏洞,攻击者就可以通过数据面直接侵入控制面,从而影响到其他所有的数据面。

因此在 3.0 版本中,新增了部署模式配置deployment,默认属性为traditional,也就是数据面与控制面部署在一起。当然,新配置模式还是更建议大家将属性设置为data_planecontrol_plane,从而实现数据面与控制面的完全分离。

在完全分离后,不仅能解决上述安全隐患,还能更好地在数据面和控制面中分别进行功能的迭代而互不影响。

5.更完善的服务发现支持

APISIX 在现版本中,已支持集成了很多服务发现组件,比如 Zookeeper、Consul、Nacos 等。但目前这些集成都是在数据面上完成的,一旦你的数据面节点非常多,这对于后续的服务发现组件压力也是非常大的。尤其是像 etcd 和 ZooKeeper 这一类提供强一致性的组件,通常无法承受太大量的连接数;此外,用户还需要为 Apache APISIX 数据面配置服务发现组件的认证,如果你在使用虚拟机部署 Apache APISIX,那么你需要将认证配置同步到每一个实例。

同时在用户实际生产环境中,他们想要的不仅仅是一个简单的类似于像 Consul KV 的集成或者是 DNS 的集成,而是更希望能做到类似健康检查等更多完整功能的集成。

因此在 APISIX 3.0 中,我们通过新增一个子项目APISIX-SEED进行了一层抽象,实现了控制层面的服务发现支持,降低了对服务发现组件的压力。后端服务的节点将由APISIX-SEED组件进行更新然后同步到 etcd,最终被 Apache APISIX 所使用。

6.新增 xRPC 框架

APISIX 在现版本中支持代理 TCP 协议,但是有些时候,纯粹的 TCP 协议代理是不够的。用户需要的是特定应用协议的代理,比如 redis Proxy、Kafka Proxy 等。因为有些功能必须在对该协议进行编解码之后才能实现。

因此,APISIX 在 3.0 版本中实现了一个名为 xRPC 的四层协议拓展框架,允许开发者在上面自定义特定的应用协议。基于 xRPC,开发者可以通过 Lua 代码对请求和响应进行编解码,进而在了解协议内容的基础上完成故障注入、日志上报、动态路由等功能的实现。

基于 xRPC 框架,APISIX 可以提供对若干主流应用协议的代理实现。同时用户也可以基于该框架来支持自己私有的基于 TCP 的应用协议,使其具备类似 HTTP 协议代理的精准颗粒度的和更高阶的七层控制。而在不同的协议之上,又可以去抽象一些共性因素,实现相关插件能力,让不同的协议可以共享这些能力。

7.支持更多四层可观测性

APISIX 在可观测性的功能支持上一直都投入很多,几乎支持了所有的可观测性组件,比如 Zipkin、Apache SkyWalking、Datadog 等等。同时还支持了各种各样的日志组件,但这些大多都是在七层(应用层)进行的。

在 APISIX 3.0 版本中将会增加更多基于四层(传输层)的可观测性支持。比如增加了四层上对于 Prometheus 和各种日志的支持,不仅可以让用户非常轻松地观测到七层流量中哪里出了问题,也可以去发现四层的流量运作状况。

8.集成 OpenAPI 规范

API 其实是一个涉及从开发、测试、上线到整个全生命周期的元素。在 APISIX 3.0 版本中,将支持标准的 OpenAPI 3.0 规范。

因此,如果你是在一些 API 设计和测试的软件上进行管理 API 的话,就可以非常方便地通过数据导出和导入,将其放置在 APISIX 中进行管理和维护。同时 APISIX 中的各种 API 也可以通过 OpenAPI 3.0 规范进行导出,然后再导入到其他系统中使用。

除此之外,在 3.0 版本中 APISIX 也支持了针对 Postman 相关自定义格式的支持(Postman Collection Format v2),实现两者之间的数据传输,从而更方便地进行集成。

9.Gateway API 的全面支持和服务网格

在 APISIX Ingress 的版本迭代中,已开始对 Gateway API 进行支持,最新的 1.5 版本中已基本支持了所有的 Gateway API 配置。

由于 Kube.NETes Ingress 资源本身的限制,南北向场景中很多的流量管理能力无法被很好的表达出来,因此市场上大量的 Ingress Controller 解决方案都提供了自定义的 CRD,虽然这样能很好地帮助用户管理流量,但是却间接提高了迁移的成本,几乎导致用户被某个 Ingress Controller 选型锁定。因此 Kubernetes 社区在前两年开始着手制定 Gateway API 这一标准。

Gateway API 是一个面向角色分层的协议,通常像 AWS、GCP 这样的云厂商会充当基础设施提供者,他们会提供若干种不同可选的网关选型(GatewayClass);而网关管理员,通常会创建不同的网关实例(Gateway);更上层的开发者则只聚焦于如何创建路由来暴露自己的 API,而不关心底层的网关细节。

这种情况下就可以通过 APISIX Ingress 去使用 Gateway API 的方式进行各种配置,也就意味着你能够在各个不同的数据面进行切换。在今年年底,APISIX Ingress 将更加完整地支持 Gateway API 以及支持在四层和七层的更多能力。

与大多数服务网格方案不同,APISIX 的服务网格方案更有优势的地方是数据面(得益于 APISIX 本身的高性能),因此在控制面的选择上,更希望去兼容一些社区上已有的主流方案。最终采取了通过使用 xDS 协议与 Istio 进行交互,并将获取到的配置写入到 APISIX 的 xDS 配置中心的方式,来配合 APISIX 生成具体的路由规则,完成对应请求的路由。

这种方案不仅可以让整个服务网格更加轻量,同时借助于 APISIX 的高拓展性,也可以进行更方便地二次开发与迁移。

10.集成更多生态

除了上文提到的 OpenAPI 标准之外,3.0 版本中也会新增非常多的生态插件,比如 OpenFunction、ClickHouse、Elasticsearch、SAML 和 CAS 等,去集成更对关于认证鉴权、安全或者可观测性等。

其中一个有趣的插件workflow是关于流量调度的, 通过该插件就可以在流量控制层面进行一些更细粒度的处理。

比如当条件 A 成立时执行某个行为,条件 B 成立时执行另一个行为等。通过这种更加清晰的方式,让用户更加方便地调度各种业务流量。

总结

不管是 APISIX 从零开始发展到现在,还是已经推出预览版的 3.0 版本,你会发现 APISIX 其实并没有在架构层面进行太多的调整与改动,更多的是进行生态、兼容性和产品应用层面的改变。

一个开源项目的评判标准,或许并不只有性能和功能,而是需要更多站在用户、开发者和企业的角度,去考虑他们使用这个产品是否可以快速有效地解决当下的痛点。

而本文中提到的亮点或者新特性,其实都是通过开源社区的大环境,接收了来自不同开发者或者企业用户的反馈而打造出来的,是他们让开源产品更加实用和充满活力。

最后,也欢迎大家对 APISIX 3.0 预览版进行体验和反馈,期待技术与社区所迸发的技术魅力。



Tags:API网关   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
什么是API网关?
API 网关是什么?它有什么作用?为什么我们需要它?今天我们就来一起聊一聊。一、定义 在维基百科中,网关的定义是这样的:在计算机网络中,网关(英语:Gateway)是转发其他服务器通信数据的...【详细内容】
2023-07-30  Search: API网关  点击:(113)  评论:(0)  加入收藏
微服务为什么要用到API网关?
什么是微服务微服务架构(通常简称为微服务)是指开发应用所用的一种架构形式。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请...【详细内容】
2023-04-13  Search: API网关  点击:(155)  评论:(0)  加入收藏
10大亮点!带你多角度了解云原生API网关Apache APISIX 3.0预览版
API 网关作为一个存在时间比较长的基础组件,一直致力于提供业务层面的限流限速、身份认证、可观测性等多方面的功能。随着服务端系统的迭代,越来越多的服务开始从裸金属迁移到...【详细内容】
2022-09-29  Search: API网关  点击:(718)  评论:(0)  加入收藏
Java原生API网关ShenYu
微服务网关 数据交互示意图 数据同步 admin与网关进行数据同步。数据同步是指在 shenyu-admin 后台操作数据以后,使用何种策略将数据同步到 Apache ShenYu 网关。Apache Shen...【详细内容】
2022-09-09  Search: API网关  点击:(862)  评论:(0)  加入收藏
API网关的权限验证实践
概述公司、个人开发的系统上线后,系统中 API 暴露到网络上会存在一定的安全风险,比如:爬虫、恶意访问、错误访问等。API没有安全性,用户可以任意注册即可无限次访问和调用API,且...【详细内容】
2022-04-26  Search: API网关  点击:(292)  评论:(0)  加入收藏
这样讲API网关,你应该能明白了吧
随着互联网技术的飞速发展,各类线上业务蓬勃发展,软件系统如雨后春笋般呈现在我们面前。 图片来自 Pexels为了提高系统的性能和可靠性,将应用服务进行拆分微服务化。作为系统入...【详细内容】
2021-04-07  Search: API网关  点击:(359)  评论:(0)  加入收藏
对API网关注册和接入的接口安全管理总结
今天谈下对API网关接入的接口服务进行安全管理方面的内容。在原来谈Kong网关的时候,曾经谈到Kong网关和安全相关的插件能力,其中包括了身份认证插件:Kong提供了Basic Authenti...【详细内容】
2020-12-30  Search: API网关  点击:(272)  评论:(0)  加入收藏
通过API网关实现微服务管控-限流,熔断和降级
今天准备谈下基于API网关来实现微服务治理管控中的服务限流,熔断和降级方面的内容。在前面谈微服务架构的时候也谈到过类似通过Hystrix,Sentinel来是服务限流熔断。包括也不...【详细内容】
2020-11-19  Search: API网关  点击:(444)  评论:(0)  加入收藏
给大家分享一款高性能api网关
在当前的互联网环境下,尤其是移动互联网的时代,用户通过手机APP可访问很多应用,作为应用的服务部分面对日益增多的客户,为了保证用户功能和体验,必然需要采用分布式等架构,以确保...【详细内容】
2020-11-06  Search: API网关  点击:(323)  评论:(0)  加入收藏
基于Apache APISIX的全流量API网关统筹集群流量
本文将从云原生时代的机遇和挑战说起,介绍一个全新的开源高性能云原生 API 网关——Apache APISIX,探讨如何解决云原生时代 API 网关所面临的一些痛点,最后介绍该开...【详细内容】
2020-10-13  Search: API网关  点击:(589)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(11)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(31)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(37)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(39)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(69)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(59)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(40)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(149)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(51)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(78)  评论:(0)  加入收藏
站内最新
站内热门
站内头条