一文搞定API网关

简介

API是Application Programming Interface缩写,翻译成中文就是应用程序接口。在实际微服务中可以理解一个个功能方法。就比如你一个用户服务的微服务,可以对外提供 API 接口为,查找用户,创建用户等。

为什么要使用API​​网关

API 网关并不是微服务场景中必须的组件,如下图,不管有没有 API 网关,后端微服务都可以通过 API 很好地支持客户端的访问。
在这里插入图片描述

但对于服务数量众多、复杂度比较高、规模比较大的业务来说,引入 API 网关也有一系列的好处:

  • 聚合接口使得服务对调用者透明,客户端与后端的耦合度降低
  • 聚合后台服务,节省流量,提高性能,提升用户体验
  • 提供安全、流控、过滤、缓存、计费、监控等 API 管理功能

在网易云与客户合作的技术实践中,客户往往需要通过统一的 API 网关进行服务能力的共享,提供发布、管理、保护和监控 API的能力,实现跨系统、跨协议的服务能力互通。以德邦快递为例:

  • 一是客户需要通过 API 网关的熔断/限流/降级服务治理等能力和服务治理框架层相结合,来保证物流系统更好地支撑峰值流量的冲击;
  • 二是有些特殊场景的接口,比如支付接口,需要设置调用权限,API 网关配合中间框架更好实现黑白名单和权限的控制;
  • 三是网关的流量镜像能力,可以转发到压测环境,客户能够更好地估计系统能够承载的最大量;
  • 此外,API 网关通过流量的控制,还可以让客户更快地做好灰度发布、A/B 测试。基于这样的需求,网易云轻舟微服务平台的设计也包含了 API 网关组件的设计,采用插件式流量复制与分流实现,以提高系统的稳定性和响应效率,不过团队提供了可拆卸的模式,供用户按照实际的应用场景来选择。

API网关还可以做什么

API网关不仅可以通过路由分发客户的请求,还可以在API管理方面提供很多好处。作为将客户端与服务连接起来的中央接口,API网关可以处理重要的安全和管理任务,例如身份验证,输入验证,指标收集和响应转换。

身份验证: API网关可能用于验证API调用。这样,即使客户端需要从多个服务访问数据,他们也只需要在网关进行一次身份验证即可。这样可以减少延迟,并确保身份验证过程在整个应用程序中保持一致。

输入验证: API网关也可以用于执行简单的逻辑。对于输入验证,这意味着确保客户的请求包含所有必要的信息,以正确的格式完成请求,然后再到达服务,该服务最终将检索请求的数据。

指标集合:由于所有请求都是通过API网关传递的,因此它是收集分析数据的理想场所。 API网关可以例如测量用户发出的请求数量或正在中继到特定微服务的请求数量。这也允许将API网关用于速率限制:如果用户发送的请求太多,则网关可以拒绝它们,而不是将其传递给服务之一。

响应转换:通常,不同的设备和用户需要访问不同的信息。例如,移动设备可能比台式设备需要更少的数据,而内部客户端可能需要比外部客户端更多的信息。 API网关可用于解决此问题,从而为每种客户端类型有效地呈现唯一的API。

相关设计

服务路由

  • 静态路由策略配置
  • 后端服务的软负载均衡
  • 后端服务的心跳检查
  • 参数分流
  • 流量的镜像复制

服务治理

  • 服务限流,支持 QPS、Thread 等多种限流方式
  • 降级与熔断,支持基于RT、错误率的熔断策略以及手动降级策略
  • 服务容错,支持 failover、failfast、failback等多种容错机制

流量管理

  • 路由管理,支持基于黑白名单的路由规则
  • 负载均衡,支持多种负载均衡规则,兼容 Spring Cloud Ribbon
  • 参数分流,支持参数取模、名单分流、权重分流等
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kuokay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值