【CSDN 编者按】API是Application Program Interface,应用程序连接接口的缩写,作为数据传输流转的重要通道,API网关更成为云原生时代的重要入口 。
作者 | 温铭,Apache APISIX PMC主席
责编 | 张红月
出品 | CSDN(ID:CSDNnews)
API 是各个不同的应用程序和系统之间互相调用和传输数据的标准方式 。在很多的开发团队中都是使用 API-first 的模式,围绕着 API 来进行产品的迭代,包括测试、Mock、文档、API 网关、Dev Portal 等,这就是 API 全生命周期管理(Full Life Cycle API Management) 。
文章插图
API 解决的问题
在 API 出现之前,数据的传输和交换并没有标准的方式,大多数情况下是通过数据库、Excel 表格、文本,或者是 FTP,不同的系统和程序通过各种五花八门的方式来沟通 。这些混乱的背后,隐藏了巨大的开发成本和安全隐患:权限控制、数据精细管控、限流限速、审计等,都只能用笨重的方式来解决 。这就是计算机世界中的“巴别塔”(Tower of Babel),因此只有解决了不同语言开发的系统以及不同存储方案带来的问题,才有机会构建足够复杂的产品 。
而 API 的出现,则成功地解决了巴别塔问题,开发者只需要关心其他系统对外暴露的 API 即可,无需关心底层实现和细节 。
我们熟知的手机 App、网络游戏、视频直播、远程会议和 IoT 设备,都离不开终端设备与服务端的连接和数据传输,这些都是通过 API 完成的 。
文章插图
为什么需要 API 网关
API 网关是 API 全生命周期管理的关键基础组件,负责生产环境中 API 的配置、发布、版本回滚、安全、负载均衡等 。API 网关是所有终端流量的入口,负责把终端的 API 请求路由到正确的上游服务进行处理,然后再把返回的数据返回给原始请求方,同时保证整个过程的安全、可靠和低延迟 。
文章插图
在最开始 API 数量不多的情况下,API 网关往往是一个由 Web Server 和上游服务两部分拼接而成的虚拟组件:由 Apache 和 Nginx 等组件完成最简单的路由转发、反向代理和和负载均衡,其他功能比如身份认证、限流限速等,则依靠上游服务自身进行实现 。
但随着 API 的数量越来越多,喜欢“偷懒”的开发者们发现了一个严重的问题:他们需要在不同的上游服务中,重复实现身份认证、限流限速、日志等通用的功能,这不仅会浪费开发资源,而且一旦需要修改这部分的代码,就需要修改很多代码,这是版本管理和升级维护的噩梦 。怎么办呢?聪明的开发者们很快就找到了解决方案:把这些通用的功能抽象到一个统一的组件中,把上述的两层结构改为一层结构,从上游的逻辑代码中剥离与业务无关的功能,然后增强 Apache 和 NGINX 这类组件 。这就是第一代 API 网关的诞生过程 。
让 API 网关承载更多非业务逻辑的功能,这就是 API 网关一直以来的进化方向 。在这个过程中,前端开发者和后端开发者们,为了让产品能够更快的迭代,就对 API 网关提出了越来越多的需求,并不仅仅局限于负载均衡、反向代理、身份认证等传统功能,还在 gRPC、GraphQL、可观测性等方面提出了很多新的功能 。
文章插图
API 网关的作用
为了让 API 网关更灵活高效,开发者们在底层上也做了非常多创新,比如:
- 功能插件化 。随着 API 网关上承载的功能越来越多,如何让这些功能之间更好的隔离以及让二次开发变得更加简单?插件,是完美的解决方案 。因此,现在主流的 API 网关均采用插件来实现各种功能,比如在 Apache APISIX 中叫做 Plugins,在 Envoy 中则称之为 Filters,它们的含义是相同的 。插件化可以让网关的开发者不再关心底层实现,用较少的开发资源就可以实现一个新的功能 。
- 数据面和控制面的分离 。在第一代 API 网关的实现中,数据面和控制面是在同一个进程中实现的,这样足够简单,但也带来了很大的安全隐患 。由于数据面是直接对外提供服务的,如果被黑客入侵,就有机会获取到控制面的数据(比如 SSL 证书)和控制权,造成更大的破坏 。因此,现在大部分的开源 API 网关,都是将两者分别部署的,中间通过关系型数据库或者 etcd 来进行配置的管理和同步 。
推荐阅读
- 云南旅行团购物点可以不买吗,跟团云南游会强制购物吗-
- 带货|云昊透露许妈退休会开直播,大家纷纷期待其带货赚米,规划获认可
- 秦霄贤还在德云社嘛,秦霄贤多会儿进的德云社-
- 我们的少年时代二上映时间,我们的少年时代第二季什么时候播出-
- 柳下惠坐怀不乱,柳下惠坐怀不乱是什么意思-
- 张九龄|德云社张九龄发文,在线挑战师哥烧饼,粉丝:说完后悔了吧
- 姜昆|姜昆:由于年龄和时代的差距,我有些力不从心了。网友:退下来吧
- 云顶之弈最新版本最强阵容搭配攻略 云顶之弈好用阵容推荐
- 名将赵云之死! 常山赵子龙怎么死的
- 岳云鹏|岳云鹏在微博上提问:你们的孩子都听话吗?学习都好吗?你们辅导作业都困难吗?