开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关

这篇具有很好参考价值的文章主要介绍了开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

白泽平,Apache APISIX PMC 成员,目前主要在 APISIX 和周边项目 APISIX Dashboard 上进行相关贡献。本文整理自阿里云「中间件开发者 Meetup」中的议题分享。

Apache APISIX 是一个高性能的、动态的、实时的 API 网关,它是基于 NGINX 和 OpenResty 进行实现的。

作为一个脱胎于 NGINX 和 OpenResty 的软件,APISIX 天然继承了 NGINX 的性能和 OpenResty 的灵活性,因此,APISIX 的性能在一众 API 网关中都是数一数二的。

细数 Apache APISIX 优势

架构取长补短

具体来说,像 NGINX + Linux epoll 提供了高性能的网络 IO 基础设施,这些是 C 语言实现的,是静态的。而 OpenResty 则集成了 LuaJIT,它基于 NGINX 提供的生命周期钩子进行扩展,允许用户通过 Lua 代码对 NGINX 进行编程。而 LuaJIT 本身,得益于优秀的 JIT 实现,它可以在运行时对代码进行 JIT 编译,当热路径上的内容被编译为机器码后,性能将可以与原生 C 语言相比。

当然,除了 NGINX 与 OpenResty 的天然特性优势外,APISIX 本身也为性能进行了多处优化。比如没有复用 NGINX 的 location 来处理路由匹配,而是使用了基数树的方式。目前其他很多 API 网关还在使用遍历的方式处理路由,而 APISIX 则不会出现遍历方式的严重性能衰退,在路由很多时(这里指达到数千量级),它也可以提供基本平稳的匹配速度。

同时,APISIX 也在动态性能层面进行了一些操作。

相信使用过 NGINX 做服务部署的朋友一定记得,如果你修改了 NGINX 的配置文件,即使只是添加了一个 location,也必须要通过 NGINX reload 指令来应用配置,甚至有时还需要重启。这种情况对于内部应用场景来说还可以接受,但是对线上应用来进行这种操作时,可能会造成客户端连接的中断,这就影响很大。

而在 APISIX 中,上述配置操作过程都是完全动态的,location 可以动态配置,upstream 和 SSL 证书这些全部都可以动态配置。这主要得益于 APISIX 使用了 etcd 作为配置中心,通过 etcd watch 机制实现了动态的更新其配置,从而不需要依赖 reload 和重启。

除此之外,像是以往需要 NGINX 修改配置才可以设置的 gzip 和缓存等,也可以动态地在单一路由的维度中进行启用。

开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关

如上是 APISIX 体系的架构图,底层就是刚刚提到的 NGINX + Lua 环境,再向上是 APISIX 的核心模块,它包括路由、上游等相关能力,还有一些常用功能的封装。这个核心模块也是插件框架的入口,用户在类似路由等组件中配置路由时,将被合并在此调用执行。

APISIX 在核心模块中提供了很多开箱即用的功能,比如负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性、服务发现、限流限速和日志收集等功能。

APISIX 中的很多功能都是通过插件方式进行实现的,目前 APISIX 的插件已接近 80 个,未来还在持续扩展增加中。提到插件,不得不说 APISIX 提供的插件运行时是一个非常易于开发的插件框架,用户可以轻而易举地使用 Lua 编写自己的插件,来实现特定业务功能。如果实在不具备 Lua 的开发维护能力也可以使用外部 Plugin Runner(APISIX 多语言插件) 或者 WASM 开发插件。

开源活跃开放

APISIX 是 Apache 软件基金会旗下的顶级开源项目,它使用了 Apache License v2 开源协议,对商业使用与二次开发都比较友好。

同时 APISIX 社区也一直保持着活跃,包括但不限于产品技术本身的活跃(比如近一个月内有 70+ commit,处理了 70+ issue 等),还有社区活动和一些内容分享上的全球布道等。

开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关

Apache Way 的理念,指导着每一个 Apache 基金会开源项目,即「社区>代码」。社区的建设至关重要,重要性甚至超过项目代码本身。回过头来我们看,为什么 APISIX 社区可以如此活跃?

  • 社区开放,欢迎任何有意义的讨论(比如问题报告、新功能等)。 除此之外,无论项目维护者身份如何、来自什么公司,大家都采用同样的方式参与社区。所有讨论都在邮件列表内进行,未经邮件列表讨论的事项,就是不存在的;全部开发工作也都是公开的,任何事项都有痕迹。

  • 经常与其他社区进行项目合作。 比如 APISIX 的很多插件都是与其他项目或者服务的集成,像 Casbin 社区参与到 APISIX 项目中,贡献了 casbin 权限管理和 casdoor 身份认证插件。

  • 通过各种渠道吸引新的贡献者参与社区。 比如 APISIX 项目已连续多年参与 Google GSoC 计划和国内开源供应链点亮计划等活动,吸引国内外对开源项目感兴趣的学生来参与其中,增加学生们对开源社区的经验。

周边项目齐开花

上文我们提到的都是 APISIX 项目本身的一些内容。但其实,基于 APISIX 这个云原生 API 网关,也衍生出了很多周边项目。

通过使用 APISIX Ingress Controller,用户可以将 Kubernetes Ingress 资源和 APISIX 自定义的 CRD 资源提取出来,进而为 APISIX 配置路由、上游或插件等。它将自动根据 K8s Service 生成上游,并与路由进行关联,提供了一种在 K8s 中的声明式 API 的实现路径。

除此之外,APISIX 还提供自己的开源控制台实现——APISIX Dashboard,它提供了 APISIX 中最常用功能的可视化配置能力,可直接在界面上修改即可完成 API 的配置上下线。这与 APISIX Ingress Controller 提供的代码即配置的思路有所不同,前者注重配置的灵活性,而后者注重规则定义的确定性。

同时在当前最热门的服务网格领域,APISIX 也在尝试交出自己的答卷。APISIX 的服务网格项目 Amesh 现已经开源,目前的方案使用 Istio 作为控制面实现,与 Envoy 一样通过 xDS 协议与 Istio 通信,并将通信规则转换为 APISIX 中的路由与上游配置。从而替换了 Istio + Envoy 组合中 Envoy 的流量网关角色。

APISIX 如何应对应用发展

开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关

现代应用系统架构已经经过多次发展,从单体应用、多单体应用+企业服务总线的 SOA 到现在的多微服务架构演化。

当单体应用迭代到微服务后,微服务本身具有一定规模后,单纯的微服务并不足以解决生产上面临的问题。其伴随的一个显著特征就是,服务的数量在大幅增长,各个服务间的调用关系也变得更加复杂。

因此,在不同的阶段其实大家都面临着很多不同的技术选型。比如服务层面,我们可以用到像是 Apache、NGINX、HAProxy 这样的反向代理工具。进入到微服务时代我们又会用到像 NGINX 或是一些更加现代化的动态 API 管理工具,这里又会因为技术栈的不同扩展出更多的产品。比如在 Java 语言侧选择 Zuul 或者 Spring Cloud Gateway 这样的组件,在 Kubernetes 部署又会有 Ingress 等选择。更进一步到服务网格架构中,又会产生 Istio + Envoy/MOSN 这种选择。

各种技术手段浩如烟海,如何根据当前企业、团队的状况选择最合适的架构对架构师的能力带来很大的挑战。

除了整体架构上的选择,随着团队的扩大和业务场景的复杂,对于开发者而言,需要了解和考虑的东西越来越多。这种情况下,各种各样的流量比如 HTTP/TLS、gRPC、四层的 TCP/UDP、中间件的调用(比如 Redis 缓存)等等,对它们进行统一的管理正是当下应用发展阶段所面临的困境。

APISIX 作为云原生 API 网关,为许多企业提供了一个更优的选择。在应对各种不同场景时,APISIX 有着一些流量代理的用法。比如我们可以将 APISIX 作为一个 LB 来处理对外服务的负载均衡问题,同时也可以将其用作 API 网关来解决微服务的暴露与调用,利用 APISIX Ingress Controller 还可以解决容器中的 API 管理难题。

可以看到,使用 APISIX 可以为你在不同阶段提供一个统一的、全流量的处理方式。那这种方式能为用户带来哪些收益呢?

  • 对于研发人员来说,如果一个人掌握了 APISIX 这套体系的技术,他就可以很轻松地完成企业团队中各种不同领域的工作,比如在 API 网关或者 Ingress Controller 这种流量管理的落地场景。

  • 对于运维人员来说,使用 APISIX 后无论是后续维护现有环境还是切换到新的技术栈上,你都可以直接使用同一种工具和方法进行直接管理,而无需再投入学习和时间成本。同时作为开源产品,学习之后还可以作为自身的技术积累复用到其他工作中,可谓是一举多得。

  • 对于公司来说,选用 APISIX 的架构不仅仅可以满足现有需求,还为将来的技术演进预留下空间。比如当下是为了满足作为 LB 的需求,如果之后公司技术发展,将来也可以无缝过渡到 API 网关或者容器平台乃至服务网格等领域。

展望:与 OpenSergo 的未来计划

我们在上文中也提到了与其他社区的积极合作。在之前,OpenSergo 在 APISIX 社区项目仓库的 issue 中曾发起讨论,希望可以通过社区合作的方式,协商建立一个用于流量控制的统一标准,这引起了一部分社区成员的兴趣。之后在一次 APISIX 社区的中文 Weekly Meeting 中,OpenSergo 社区的伙伴也为大家介绍了这一项目的愿景、思路和价值。

作为一个开放且包容的开源社区,APISIX 是非常欢迎这种社区间合作的,通过项目协同可以发挥出各自项目更大的价值。

具体来说,由于 OpenSergo 项目标准的表现形式主要为 Kubernetes CRD, 其用于云原生的容器环境中,因此可以优先考虑将它与 APISIX Ingress Controller 项目进行集成,为其增加 OpenSergo 的配置解析和处理模块,将原始配置转换为 APISIX 的内置速率限制插件等。

这种做法有助于使用 Kubernetes 的用户来增强其流量控制能力,并与其他各种上下游生态进行集成,比如 RPC 框架。对于不使用 Kubernetes 的用户,在目前产品现状下,还缺少一个桥梁去完成 CRD 到 APISIX 插件的配置转换。

因此,我们也有参考彼此产品的一些未来规划。比如 OpenSergo 的文档中提到,它们将发布专门的 SDK 供数据面组件调用以集成至 OpenSergo。如果有了 SDK 或是其他形式的接口,在接下来的日子里,有望看到 OpenSergo 与 APISIX 的集成项目。

最后,作为开源活跃项目,APISIX 社区也非常欢迎有兴趣的伙伴来提交这些功能的实现,帮助项目的集成成为现实。相信通过开源间的合作,彼此项目都可以取得更大的成就。文章来源地址https://www.toymoban.com/news/detail-452958.html

到了这里,关于开源浪潮下,Apache APISIX 如何成为全球最活跃 API 网关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生网关Apache APISIX

    Apache APISIX 介绍 什么是Apache APISIX Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均 衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功 能。可以使用 Apache APISIX 处理传统的南北向流量,也可以处理服务间的东 西向流量。同时

    2024年02月09日
    浏览(39)
  • Apache Apisix网关系统历史漏洞复现分析

    Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 开源项目地址:https://github.com/apache/apisix; 官方文档地址:https://apisix.apache.org/zh/docs/apisix/getting-started/README/; 你可以把 Apache

    2024年02月19日
    浏览(32)
  • [运维|中间件] Apache APISIX使用笔记

    Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。 官方文档地址 快速安装

    2024年02月14日
    浏览(37)
  • AI驱动下的算力浪潮,中国稳居全球第二

    AI大模型的发展引发了对算力的进一步需求。中国信通院发布的《中国综合算力指数(2023年)》显示,当前算力规模中,通用算力占比达74%,智能算力规模同比增加60%至25%。大模型对人工智能算力的重要推动作用。 如今,算力已深入渗透到科研、工业生产乃至日常生活的各个

    2024年01月20日
    浏览(29)
  • 通过 MSE 实现基于Apache APISIX的全链路灰度

    微服务体系架构中,服务之间的依赖关系错综复杂,有时某个功能发版依赖多个服务同时升级上线。我们希望可以对这些服务的新版本同时进行小流量灰度验证,这就是微服务架构中特有的全链路灰度场景,通过构建从网关到整个后端服务的环境隔离来对多个不同版本的服务

    2024年01月17日
    浏览(23)
  • 如何飞速成为开源贡献者(Contributor)

    型号 :MacBook Pro 内存 :16GB 硬盘 :512GB SSD 处理器 :Apple M2 宿主机CPU架构 :ARM Git版本 :2.39.2 (Apple Git-143) Maven版本 :3.8.8 JDK版本 :17 Git 是一个 分布式版本控制系统 ,用于管理和跟踪文件的变化。它可以帮助开发人员或团队 追踪代码的修改历史、协同开发、管理各个版本

    2024年02月10日
    浏览(31)
  • 景顺长城基于 Apache APISIX 在金融云原生的生产实践

    本文介绍了景顺长城在金融云原生架构演进中选择 APISIX 作为网关工具的技术细节,同时分享了使用 APISIX 的实践细节,并对 APISIX 的未来展望进行了探讨。 作者李奕浩,景顺长城信息技术部研发工程师,负责公司网关和业务系统上云等工作。 景顺长城基金管理有限公司成立

    2023年04月08日
    浏览(33)
  • 【天幕系列 02】开源力量:揭示开源软件如何成为技术演进与社会发展的引擎

    在当今数字化时代,开源软件已经成为了技术领域的一个重要组成部分,对整个行业和社会产生了深远的影响。从操作系统到数据库,从编程语言到应用程序,开源软件的影响力日益显现,为技术创新、经济发展和社会进步作出了巨大贡献。 开源软件对技术创新的推动作用是

    2024年02月20日
    浏览(29)
  • apisix 配置https api的步骤

    apisix 是一个开源的 API 网关,可以帮助你管理和路由 API 请求。下面是在 apisix 中配置 HTTPS API 的步骤: 安装 apisix。你可以使用 Docker 来安装 apisix,也可以使用源码编译安装。 生成 SSL 证书。你可以使用 Let\\\'s Encrypt 来生成免费的 SSL 证书,也可以使用自签名的 SSL 证书。 在 a

    2024年02月14日
    浏览(46)
  • 孙宇晨最新研判:加密货币将成为全球金融基础设施的一部分

    近日,波场TRON创始人、火币HTX全球顾问委员会委员孙宇晨接受了在加密社区有重要影响力的媒体平台Bankless的专访,就自己的从业经历、涉足加密行业的理想、波场TRON本身的发展和未来的市场走向等话题进行了详细的分享。 孙宇晨认为,波场TRON的使命是为那些没有银行账户的人

    2024年03月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包