谈API网关

本文涉及的产品
云原生 API 网关,700元额度,多规格可选
简介: API网关的意义和常用选择

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


价值

API网关并不是必须的,如果处于起步阶段的项目,单体应用还是最直接的,一层

Controller就可以解决问题,这个阶段引入过多的复杂性其实没有太大必要。


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


聚合和解耦

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

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


非业务功能

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


管理

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


评价

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


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


功能的话,大部分流行的API网关功能都是完备的,只要是活跃的,常见功能都有,这种情况下可以重点关注下监控系统的集成。


选型


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


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


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


对于云厂商来说,API网关属于最基本的功能了,都有提供,比如阿里云的API网关,腾讯的API网关等。云厂商的API网关和自身生态体系结合比较紧密,后端的选择很多,比如阿里云支持ECS、SLB、函数计算、Dataworks、DMS等,也有额外的插件可选,比如后端签名插件、JWT认证插件、后端路由等。


云厂商提供的API网关唯一问题就是厂商锁定比较重,和存储等还不太一样,相互间切换不容易。

相关文章
|
算法 安全 JavaScript
通过Postman实现API网关的请求签名与调试
Postman是一个非常强大的HTTP发包测试工具, 目前Postman已经提供了Windows/Mac/Linux系统的客户端的下载,使用很方便。不过API网关的调试,需要对HTTP请求进行签名才能调用,无法使用简单的curl等发包工具完成,但我们可以使用Postman工具提供的Pre-request Script脚本来实现API网关的签名功能,实现API的调试功能。
6152 0
|
6月前
|
监控 网络协议 测试技术
流量回放新形态:基于网关 Access Log 发起
流量回放技术在性能测试和故障排除中至关重要。传统工具如 GoReplay、Tcpreplay 等存在高权限、配置复杂、登录态失效等痛点。PTS 推出基于 Access Log 的流量回放功能,自动生成压测场景,解决传统工具痛点,操作简单,一起来了解下吧~
7746 20
|
5月前
|
网络协议 算法 网络架构
|
自然语言处理 Dubbo 应用服务中间件
Higress和dubbo-go-pixiu都与网关和服务调用有关
Higress和dubbo-go-pixiu都与网关和服务调用有关
128 1
|
8月前
|
缓存
ARM学习扫盲篇(一):CPSR&SPSR、Lcache&Dcache、w/parity&w/ECC
ARM学习扫盲篇(一):CPSR&SPSR、Lcache&Dcache、w/parity&w/ECC
140 0
|
Dubbo Java 应用服务中间件
基于 Triple 实现 Web 移动端后端全面打通
基于 Triple 实现 Web 移动端后端全面打通
40735 20
|
XML JSON API
API参考—实例管理—RestartDBInstance
调用RestartDBInstance接口重启实例。
|
XML JSON API
API参考—实例管理—DeleteDBInstance
调用DeleteDBInstance接口释放实例。
|
JSON API 开发工具
API参考—实例管理—CreateDBInstance
API参考—实例管理—CreateDBInstance
102 0
|
XML JSON API
API参考—实例管理—DescribeDBInstances
调用DescribeDBInstances接口查看实例列表详情。
111 0