谈API网关

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2022/01/27/api-gateway/



文章首发于阿里云开发者社区:https://developer.aliyun.com/article/862205

API 网关是位于客户端与后端服务集之间的管理工具/平台。简单来说大致相当于一个反向代理,可以调用并返回结果。

价值

API网关并不是必须的,如果处于起步阶段的项目,单体应用还是最直接的,一层Controller就可以解决问题,这个阶段引入过多的复杂性其实没有太大必要。

但是对于大型应用,特别是微服务化的场景下,API网关可以带来很多价值:

聚合和解耦

当用户需要同时访问多个接口的时候,网关可以聚合结果,节约流量。

网关由于路由规则等比较灵活,可以比较容易的切换网关后的路由,对于一些升级、迁移场景,可以降低影响。特别是业务迭代早期,服务之前的边界和模型不稳定,迭代是极为频繁的。

非业务功能

在实际的应用场景中,有很多功能是必要的,但是它不是业务功能,比如限流、降级、熔断等。网关可以用较低代价去实现通用能力,并提供一些通用的模块,比如认证接入等。

管理

网关统一了所有对外暴露的接口,也就有条件提供一个统一的管理工具,这样可以给API更统一的管理模型,统一生命周期。

评价

评价一款API网关主要看性能和功能,另外个人还觉得和已有生态的结合也是一个考虑点。如果是自建/自部署,还要考虑开源社区的活跃程度和二次开发的复杂度。

性能测试网上有很多,一般都是使用几台压测机进行施压,观察平均响应时间、吞吐量和响应时间分布。这样测试一般后端都是空接口(没有业务逻辑),无法模拟真实情况下的连接波动等的影响。

功能的话,大部分流行的API网关功能都是完备的,只要是叫得上名字的,功能都大同小异,这种情况下可以重点关注下监控系统的集成。

选型

API网关由于通用性比较强,相对来说选型也比较多。

常见的开源选择有Kong、Ambassador、Traefik、Tyk等。

部分开源网关也有商业版/商业支持,如果目前已经上云了,那其实完全可以使用云厂商的网关,差不多都是按流量+次数收费,也有买断式的专享实例,这种按照时长+流量收费。

对于云厂商来说,API网关属于最基本的功能了,都有提供,但云厂商提供的API网关存在厂商锁定问题,后期切换不容易。



本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2022/01/27/api-gateway/

发表评论