以 Apache APISIX 为例,下面的架构图,诠释了以上两个创新:
文章插图
文章插图
云原生时代下的挑战
过去十年,IT 领域最大的技术变革就是云原生 。诞生于 2013 年的 Docker 拉开了云原生的帷幕,从此裸金属、虚拟机开始被容器所替代,单体架构开始被微服务所替代 。但是云原生并不是简单的技术革命,其背后的推动力主要来自互联网产品的快速发展和激烈竞争,云原生相关的技术生逢其时,迅速流行并替代了之前的很多技术组件和方案 。
具体到 API 网关在云原生中的挑战,主要来自以下两个方面:
单体架构到微服务的转型
在微服务架构逐渐被开发者认可和落地后,该架构释放了巨大的技术红利:每个微服务可以按照自己的节奏进行升级和发布,不需要担心与其他服务的耦合 。产品的迭代因此变得敏捷,每天都可以进行几十次甚至几百次的发布 。
但与此同时,微服务的发展也带来了一些副作用,比如:
- API 和微服务的数量从最初的几十个,增长到几千个,甚至几万个;
- 出现故障时如何快速定位是哪一个 API 引起的?
- 如何保证 API 的安全?
- 如何做到服务熔断和服务降级?
动态和集群化管理
容器和 Kube.NETes 的普及,让动态成为所有云原生基础组件的标准特性 。在 Kubernetes 的环境中,容器在不断的生成和销毁,弹性伸缩成为一个必选项而不是可选项 。
想象一个场景:一家互联网电商公司做了一次促销,大量的用户在一个小时内涌入,促销结束后就会离开 。对于传统架构的公司来说,他们需要事先采购一批物理服务器,来应对这些高峰时候的 API 流量;但是对于云原生架构的公司来说,就可以随时使用公有云上的弹性资源,根据 API 请求的数量,自动的调整网络、计算、数据库等资源的规模即可 。那么伴随着容器弹性伸缩而来的技术挑战如下:
- 上游服务不断更换 IP 地址和端口;
- IP 黑白名单的频繁更新;
- 【云原生时代,API 网关为何如此重要?】服务健康的及时检测和异常处理;
- API 的频繁发布;
- 服务注册和发现的及时性;
- SSL 证书的热更新和自动轮转 。
在中国,有一家类似微软 office 365 的 SaaS 办公软件公司 -- wps,他们有数百台物理机在运行着 Apache APISIX,有近万核 CPU 在处理来自客户端的 API 请求,每天处理数百亿次 API 请求 。
在这个超大规模的 API 网关环境下,开发者不可能去逐个修改每一个 API 网关的配置然后 Reload,他们希望有一个统一的控制台来操作整个集群 。可惜的是,第一代 API 网关诞生的年代,并没有这么大的实例规模,也就没有考虑集群管理的需求 。
文章插图
下一代 API 网关的发展
上述挑战和痛点,逐渐催生了新一代的 API 网关 。
和第一代 API 网关不同的是,云原生时代诞生的下一代 API 网关是在开源社区的驱动下快速成长的 。借助社区和众多开源贡献者的力量,这些 API 网关有机会形成一个正向的迭代和进化:
- 更快速的收集一线开发者及用户的需求和痛点
- 在开源项目中尝试解决这些问题
- 开源项目变得更加好用,吸引更多开发者使用
文章插图
支持更低成本的二次开发
同时,让开发者能够以更低的成本进行二次开发,也成为了下一代 API 网关的亮点 。集成是 API 网关的重要功能之一,对于下游是协议解析和各种协议的转换,包括 GraphQL、gRPC、Dubbo 等;对于上游是集成 Okta、Keycloak、Datadog、Prometheus 等身份认证、可观测性服务,以及公司内部的认证、日志、审计等服务 。API 网关不可能覆盖集成过程中所有的组件,这时候不可避免地需要开发者通过插件的方式进行二次开发,来满足自己的业务需求 。不同的 API 网关提供了不同的二次开发的编程语言和开发方式,Apache APISIX 和 Kong 都可以使用 Lua 来编写原生插件,Envoy 是使用 C++ 编写原生插件 。同时,Apache APISIX 还可以使用 Go、Python/ target=_blank class=infotextkey>Python、Node、JAVA 和 Wasm 来编写插件,这些主流的开发语言已经可以覆盖绝大部分开发者了 。
推荐阅读
- 云南旅行团购物点可以不买吗,跟团云南游会强制购物吗-
- 带货|云昊透露许妈退休会开直播,大家纷纷期待其带货赚米,规划获认可
- 秦霄贤还在德云社嘛,秦霄贤多会儿进的德云社-
- 我们的少年时代二上映时间,我们的少年时代第二季什么时候播出-
- 柳下惠坐怀不乱,柳下惠坐怀不乱是什么意思-
- 张九龄|德云社张九龄发文,在线挑战师哥烧饼,粉丝:说完后悔了吧
- 姜昆|姜昆:由于年龄和时代的差距,我有些力不从心了。网友:退下来吧
- 云顶之弈最新版本最强阵容搭配攻略 云顶之弈好用阵容推荐
- 名将赵云之死! 常山赵子龙怎么死的
- 岳云鹏|岳云鹏在微博上提问:你们的孩子都听话吗?学习都好吗?你们辅导作业都困难吗?