APISIX 在 API 和微服务领域的探索

Apache APISIX 是一个高性能、动态的API网关,支持多语言插件、插件热加载和动态编排。它摆脱了对数据库的依赖,采用etcd实现高可用,支持全流量网关,允许用户通过插件编排自定义功能。此外,APISIX正在探索多云和混合云场景,强化安全性和集成更多云上标准,以满足微服务和API管理的需求。
摘要由CSDN通过智能技术生成

分享人:温铭,Apache 顶级项目 APISIX 的 PMC 主席,开源商业化公司 API7.ai 的联合创始人和 CEO。

原文链接

背景介绍

Apache APISIX 是一个动态、实时、高性能的开源 API 网关,提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

作为 API 网关,Apache APISIX 可以帮助企业快速、安全地处理 API 和微服务流量,应用于网关、Kubernetes Ingress 和服务网格等场景。利用 APISIX 既可以处理从客户端到服务端的南北向流量,也可以处理从各个企业微服务之间的东西向流量。

APISIX 在 2019 年 6 月 6 号开源,同年 10 月份捐赠给了 Apache 软件基金会。在之后不到一年的时间内,毕业成为 Apache 顶级项目。

在项目快速发展的背后,APISIX 在技术上进行了哪些探索?为什么会得到越来愈多开发者和企业用户的青睐?在接下来的内容中,将为你讲述更多细节。

APISIX 技术探索之路

摆脱数据库依赖

在 APISIX 项目问世之前,也有非常多的商业 API 网关或开源 API 网关产品,但这些产品大多数都把 API 数据、路由、证书和配置等信息存放在一个关系型数据库中。

存放在关系型数据库的优势其实很明显,可以让用户更加方便地使用 SQL 语句进行灵活查询,方便用户进行备份及后续维护等环节。

但这种情况也会额外带来一个问题。网关作为一个基础中间件,它处理了所有来自客户端的流量,这种情况下对于可用性的要求便会非常高。如果你的 API 网关依赖了一个关系型数据库,也就意味着关系型数据库一旦出现了故障(比如宕机、丢失数据),你的API网关也会因此受到影响。这种情况下,系统的整体可用性就会大打折扣。

所以 APISIX 在设计之初,就从底层架构上避免了类似上述情况的发生。

APISIX 架构

APISIX 的架构主要分成两部分。第一部分叫做数据面,它是真正去处理来自客户端请求的一个组件,去处理用户的真实流量,包括像身份验证、证书卸载、日志分析和可观测性等功能。数据面本身并不会存储任何数据,所以它是一个无状态结构。

第二部分叫做控制面。APISIX 在底层架构上和其它 API 网关的一个很大不同就在于控制面。APISIX 在控制面上并没有使用传统的类似于像 MySQL 去做配置存储,而是选择使用 etcd。这样做的好处主要有以下几点:

  1. 与产品架构的云原生技术体系更统一
  2. 更贴合API网关存放的数据类型
  3. 能更好地体现高可用特性
  4. 拥有低于毫秒级别的变化通知

使用etcd后,对于数据面而言只需监听 etcd 的变化即可。如果轮询数据库的话,可能需要 5-10 秒才能获取取到最新的配置;但如果监听 etcd 的配置变更,就可以将时间控制在毫秒级别之内,达到实时生效的效果。

所以使用 etcd 而不是关系型数据库,不仅让 APISIX 在底层上更加贴合云原生,也让它在系统高可用的体现上带来了更多优势。

支持多语言插件

API 网关其实和数据库或其他中间件不太一样,虽然都属于基础组件,但对于网关来说,它更多使用场景是进行一些定制化开发和系统集成。

目前 APISIX 官方虽然有非常多的插件,但仍难以涵盖用户的所有使用场景。所以在真实使用场景中,多多少少都会面对业务进行一些定制化的插件开发。通过网关去集成更多的协议或者系统,最终实现在网关层的统一管理。

APISIX 在刚开始只支持使用 Lua 语言进行开发插件。这样做的好处在于,通过原生计算语言的底层优化,可以让开发出来的插件具备非常高的性能。但是它的劣势也非常明显,就是学习 Lua 这门新语言是需要时间和理解成本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

API7.ai 技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值