category
开源API网关Apache APISIX版本3.0即将发布!我们选择了11个基本功能进行简要概述。
长期以来,API网关一直是一个必不可少的组件。它一直致力于提供各种功能,如速率限制、身份验证(例如,使用密钥斗篷来保护API)和业务级别的可观察性。
API网关Apache APISIX
Apache APISIX的诞生旨在帮助企业解决云原生环境和微服务中的新问题。例如,它通过全动态特性和一次性修改提供业务流量的自动缩放,以更方便地实现集群管理。
因此,在APISIX的架构设计中,数据平面和控制平面被分离,以实现完全动态和集群管理,这主要由etcd组件来实现。
APISIX存储和管理etcd中与路由相关和插件相关的配置。如上图所示,Admin API(Control Plane)中的配置存储在etcd中,而左侧的数据平面主要监控etcd的变化。数据平面可以快速观察变化,而无需修改配置文件。
但仅仅解决这些问题是不够的。API网关作为一个具有上下游请求的中间件,作为业务入口和服务层之间的连接,在企业架构中起着至关重要的作用。API网关的角色不同于只接收来自用户业务级别的请求的数据库。
除了业务层面的需求外,API网关还需要定制和集成。因此,如何在使用APISIX时让开发人员更容易进行自定义开发,是APISIX解决的另一个重要痛点,降低了开发人员编写代码的门槛。
在APISIX中,插件主要通过Lua开发,LuaJIT(Lua的实时编译器)用于确保编译后的代码性能足够好。
如果你不熟悉Lua,你可以使用PluginRunner,使用你熟悉的编程语言开发APISIX插件。我们还将Wasm嵌入到APISIX中,您可以利用Wasm编译Wasm字节码以在APISIX上运行。因此,用户可以使用Lua、Go、Python、Wasm等在APISIX上创建自定义插件。
得益于APISIX的架构和性能优势,APISIX自成立以来的三年里,其全球用户增长远超预期。例如,WPS、新浪微博和爱奇艺等大型科技公司是每天承载数百亿API请求的企业级用户。此外,美国国家航空航天局和欧洲工厂平台等科研机构正在使用APISIX。
11 APISIX 3.0的新亮点
APISIX在2022年初提出了一个新的3.0路线图。在3.0版本中,其迭代和更新将侧重于可用性和生态系统。
APISIX 3.0已于2022年10月下旬正式发布。让我们来了解一下激动人心的新亮点吧!
1.全面支持ARM64
ARM64已经成为云制造商非常主流的服务器架构选择。从AWS Graviton、GCP Tau T2A到华为鲲鹏等产品,我们可以看到,各家云厂商已经开始推出基于Arm架构的服务器。下图显示了APISIX在流行的基于Arm的服务器上的压力测试性能:
根据目前的数据,基于Arm的服务器的性能略好于x86的性能。为了顺应时代的技术趋势,APISIX还对ARM64进行了全面的CI回归测试,以确保用户在Arm架构中运行APISIX时仍能顺利运行各种功能。
2.AI平面
Apache APISIX在3.0版本中添加了一个AI平面,将性能提高了30%(通过压力测试下的QPS测量)。人工智能平面将动态优化数据平面配置,利用全面的数据,如用户对路线和插件的设置,以及日志指标。例如,AI平面可以自动优化以下三种场景:
当匹配要求很简单时(例如,仅包含uri或主机),会启用缓存以加速路由匹配过程
如果没有插件,则只运行与上游相关的代码
如果只有一个上游节点,并且没有启用其他配置选项,则将以轻量级方式配置上游
人工智能飞机为流量处理带来了新的可能性。未来,上游服务的自动预热和安全威胁检测都可以通过AI平面进行处理。
3.添加gRPC客户端
在3.0版本中,ApacheAPISIX将支持一个新的core.grpc模块。然而,如果您熟悉NGINX和OpenResty,您应该知道它们对gRPC的支持非常有限,仅提供反向代理或负载平衡等基本功能。
APISIX已经在当前2.x版本中实现了gRPC和HTTP协议之间的代码转换。在3.0版本中,Apache APISIX将添加一个新的gRPC客户端,允许开发人员直接调用第三方gRPC服务,而无需引入额外的组件或要求服务提供商使用不同的HTTP接口,使过程更加简单。
4.重新设计管理员API
在今天使用APISIX时,您可能会发现APISIX的响应体中混合了许多无意义的数据,例如一些etcd返回值,这些值在没有任何剪裁的情况下直接传递给客户端。此外,整个响应体的架构设计也不理想,有许多冗余字段。
在APISIX 3.0版本中,响应体的结构得到了改进。此外,新的设计使整个请求格式和返回体更加RESTful,使用户更容易使用最新版本的Admin API。当然,此过程还允许您通过参数设置要使用哪个版本的Admin API,从而使用户摆脱升级到不兼容版本的恐惧。
5.数据平面(DP)和控制平面(CP)分离
APISIX在过去两年中遭受了多个与安全相关的漏洞。大多数漏洞的根本原因是DP和CP是在默认部署模式下一起部署的。因此,一旦数据平面上存在安全漏洞,攻击者就可以通过DP直接入侵CP,影响所有其他DP。
因此,在3.0版本中,支持部署模式配置,默认部署模式为传统部署模式,即DP和CP一起部署。当然,新的部署模式建议您将属性设置为data_plane或control_plane以将它们分开。
当它们分离时,不仅可以解决上述安全风险,而且DP和CP上的功能迭代也更易于管理,而不会相互影响。
6.改进的服务发现支持
在当前版本中,APISIX支持集成许多服务发现组件,如Apache ZooKeeper、Consul、Nacos等。但目前,这些集成都是在数据平面上完成的。一旦DP上有很多节点,就会给以下服务发现组件带来很大压力。同时,在用户的实际生产环境中,他们想要像Consul KV或DNS集成这样的简单集成,以及健康检查等功能的完整集成。
因此,在APISIX 3.0中,我们通过添加子项目APISIX-SED添加了一层抽象,以实现控制平面级别的服务发现支持,并减轻服务发现组件的压力。
7.添加xRPC框架
当前版本的APISIX支持TCP代理,但有时纯TCP协议代理不足。用户需要一个特定应用程序协议的代理,如Redis proxy、Kafka proxy等,因为有些功能只有在协议编码和解码后才能实现。
因此,在3.0版本中,APISIX实现了一个称为xRPC的传输层协议扩展框架,该框架允许开发人员自定义特定的应用程序协议。基于xRPC,开发人员可以通过Lua代码对请求和响应进行编码和解码,然后在理解协议内容的基础上实现故障注入、日志报告和动态路由。
基于xRPC框架,APISIX可以为几种主流应用程序协议提供代理实现。同时,用户还可以基于该框架支持自己的基于TCP的私有应用协议,使其具有类似于HTTP协议代理的精确粒度和更高阶的应用层控制。此外,在不同的协议之上,可以抽象一些共同因素来实现相关的插件功能,以便其他协议可以共享这些功能。
8.在传输层协议上支持更多的可观测性
APISIX一直在可观测性支持方面投入巨资,支持几乎所有的可观测性组件,如Zipkin、Apache SkyWalking、Datadog等。还支持各种日志记录组件,但大多数都是在应用层中执行的。
Apache APISIX将在3.0中添加更多的传输层可观测性支持。例如,增加了对普罗米修斯和各种日志的支持,使用户可以轻松观察应用层流量的问题,并可以查看传输层流量的运行状态。
9.集成OpenAPI规范
API是一个涉及整个开发生命周期的元素,从设计到编码、测试和部署。在APISIX 3.0中,Apache APISIX将支持标准的OpenAPI 3.0规范。
因此,如果您管理API设计和测试软件上的API,则可以通过导出和导入来管理和维护APISIX中的数据。同时,APISIX的各种API也可以通过OpenAPI 3.0规范提供,然后导入到其他系统中使用。
此外,APISIX 3.0还支持Postman相关的自定义格式(Postman Collection Format v2),实现了两者之间的数据传输,从而使集成更加容易。
10.全面支持网关API和服务网格
APISIX入口控制器已开始支持网关API,并且在最新的1.5版本中几乎支持所有网关API配置。
在这种情况下,可以使用网关API配置APISIX入口,这意味着您可以在不同的数据平面之间切换。到今年年底,APISIX Ingress将完全支持网关API以及其他传输和应用层功能。
与大多数服务网格解决方案不同,APISIX的服务网格解决解决方案在数据平面上具有优势(由于APISIX本身的高性能)。因此,在选择控制平面时,我们希望它能与社区中的一些主流解决方案兼容。最后,通过使用xDS协议与Istio集成,并将获得的配置写入APISIX的xDS配置中心,APISIX生成特定的路由规则,以完成相应的路由请求。
该解决方案不仅使整个服务网格更轻,而且借助APISIX的高可扩展性,使自定义开发和迁移更加方便。
11.与更多生态系统集成
除了上面提到的OpenAPI标准外,3.0版本还将增加许多生态系统插件,如OpenFunction、ClickHouse、Elasticsearch、SAML、CAS等,以集成更多对认证、安全性和可观察性的支持。
其中一个令人兴奋的插件,工作流,用于流量调度:我们可以在流量控制级别进行一些细粒度处理。
curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/hello/*",
"plugins":{
"workflow":{
"rules":[
{
"case": [
["uri", "==", "/hello/rejected"]
],
"actions": [
[
"return",
{"code": 403}
]
]
},
{
"case": [
["uri", "==", "/hello/v2/appid"]
],
"actions": [
[
"limit-count",
{
"count": 2,
"time_window": 60,
"rejected_code": 429
}
]
]
}
]
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
例如,当条件a为真时执行特定动作,当条件B为真时进行另一个动作等。这样,用户可以更方便地调度各种业务流量。
Apache APISIX 3.0入门
您现在可以在GitHub发布页面和下载页面上查看APISIX 3.0!
APISIX从一开始到3.0版本已经发展了很多。一个开源项目可能不仅仅根据性能和功能来判断,而是从用户、开发人员和企业的角度来考虑他们是否可以使用该产品快速有效地解决当前的痛点。
本文中提到的亮点和新功能都是通过开源社区创建的。Apache APISIX通过接收来自不同开发人员和企业用户的反馈而变得更加活跃。如果你想加入这个氛围,请查看这里的社区!
- 登录 发表评论
- 34 次浏览
Tags
最新内容
- 3 hours ago
- 3 hours ago
- 3 hours ago
- 4 hours ago
- 10 hours ago
- 1 day 8 hours ago
- 1 week 3 days ago
- 1 week 3 days ago
- 1 week 3 days ago
- 1 week 3 days ago