基于Apache APISIX的全流量API网关统筹集群流量

本文将从云原生时代的机遇和挑战说起,介绍一个全新的开源高性能云原生 API 网关——Apache APISIX,探讨如何解决云原生时代 API 网关所面临的一些痛点,最后介绍该开源项目未来的规划 。
背景云原生的机遇和挑战很多应用和服务都在向微服务、容器化迁移,形成新的云原生时代 。云原生是下一个 5-10 年的技术颠覆,重写了传统企业的技术架构,例如云原生中的 Kubernetes 颠覆了传统操作系统,所有的“主机”(node 上的容器)由 Kubernetes 来控制和编排,非常适用于公有云、私有云、混合云等各种环境 。云原生体系的特点之一就是由各种开源项目组成,不同于以往的商业闭源项目,缓解了收费贵等问题,加速了技术落地 。现代公司的技术是非常重要的组成部分,在一个商业竞争激烈的时代,公司愈早的占据技术顶峰愈是能够占据商业顶峰 。网关作为云原生入口,是掌握云原生的一个必经之地,是开启“财富”的关键钥匙 。
微服务的演进从 2014-2015 年,谷歌搜索引擎上“微服务”关键字的搜索趋势呈直线上升 。

基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 
在单体架构上,任一请求都会负载到整个的单体服务集群上 。
基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 
在微服务架构上,对应请求会负载到微服务中对应的的子服务集群上 。
基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 
使用微服务进行精细管理后,服务的弹性伸缩、开发团队变得敏捷、服务之间隔离、降低故障率;在流量变动的时候,只需要对有可能变动流量的服务进行对应资源的扩缩容即可,这样可以很明显的节省服务器成本以及更高的承受度;在业务变动的时候,只需要对有可能变动业务的服务进行对应业务模块的变动即可,这样可以很明显的节省人力成本以及更高的控制力;在出现故障时不会导致整体服务不可用 。
但是落地微服务同样的带来了一些问题,比如接口之间通用的功能重复开发、膨胀的服务数量、难以管理 。通常的解决方案便是使用 API 网关对其进行管理 。
微服务与 API 网关使用 API 网关进行管理,通常的做法是将微服务框架中功能型的功能统一放到网关上,例如可观测性 metrics、应用性能 apm tracing、限速、身份认证、日志等等 。
基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 
灰度发布灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高 。灰度发布会将流量按比例划分给已经上线的版本(比如1.0,占比90%)以及正在上线的版本(比如1.01,占比10%),若观测没有问题,逐步调整二者的流量占比直到流量完全切到1.01版本 。Apache APISIX 内置的灰度发布支持读取到的 HTTP 请求参数中包含了 Nginx 的所有变量,可以依据变量进行灰度,甚至支持 LUA 代码去运算处理请求的请求体、请求参数 。
基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 
服务熔断如图所示,当 Invoices 服务出现大量常见错误达到配置的熔断阈值就可以直接熔断不接收请求了 。
基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 
Apache APISIX 在传统和云原生领域的支持粒度| 作用在传统API网关领域的功能 | 作用在云原生API网关领域的功能 | | ------------------------------------------------------------ | ------------------------------------------------------------ | | 让 API 请求更安全、更高效的得到处理;覆盖 Nginx 的所有功能:反向代理、负载均衡;动态上游、动态 SSL 证书、动态限流限速;主动/被动健康检查、服务熔断 | 对接 Prometheus、Zipkin、Skywalking;gRPC 代理和协议转换 (REST <-> gRPC);身份认证:OpenID Relying Party、OP(Auth0、okta……)高性能、无状态、随意扩容和缩容动态配置,不用 reload 服务支持多云、混合云容器优先,Kubernetes 友好 |
API 生命周期管理全景图API 生命周期指的是从 API 的设计到 API 的文档和他的 SDK 以及他的 API 的上线之类,甚至还包括 API 的市场等等一整套的解决方案,网关在其中是核心角色 。
基于Apache APISIX的全流量API网关统筹集群流量

文章插图
 


推荐阅读