FastAPI 手写网关系列(1)——API网关的定义与设计

API 网关提供跨一个或多个内部 API 的单一、统一的 API 入口点。网关通常提供:

  • 速率限制
  • 访问配额管理
  • 安全
  • 缓存
  • 路由
  • API 组成、处理和版本控制
  • API 健康分析

API 网关如何在微服务中工作

什么是微服务中的 API 网关?那么,在微服务架构中,API网关模式可以帮助解决一系列问题。网关位于微服务的边缘,管理在客户端应用程序和各种服务之间流动的 API 调用。

如果没有 API 网关,您就只能处理直接的客户端到微服务模式。这样的实现可能会变得非常混乱,而且速度非常快。最终,您会对多个微服务端点进行多个客户端调用,并且客户端应用程序和微服务的耦合方式由于涉及的复杂性层而阻碍了微服务的任何类型的演变。你实际上正在扼杀创新。

通过[微服务网关和访问模式],您可以在客户端和服务之间放置一个软件应用程序(网关)。然后,客户端调用流经 API 网关,网关将它们路由到各种微服务,包括根据需要将调用分解为针对不同服务的不同请求。响应也流经网关。

这种结构具有一系列优势,包括:

  • 防止向外部客户暴露内部问题
  • 为您的微服务增加一层安全保障
  • 支持混合通信协议
  • 降低微服务复杂性
  • 微服务模拟和虚拟化的范围

我们将在下面更详细地探讨这些内容。

微服务 API 网关的优势

微服务架构中 API 网关的优势有很多。让我们看看一些主要好处。

防止将内部问题暴露给外部客户*

API 网关将外部公共 API 与内部微服务 API 分开,允许添加微服务和更改边界。其结果是能够随着时间的推移重构微服务并调整其大小,而不会对外部绑定的客户端产生负面影响。它还通过为所有微服务提供单一入口点,向客户端隐藏服务发现和版本控制详细信息。

这是微服务架构中 API 网关的主要优势之一。它为您提供了自由和灵活性来更改"幕后"所需的内容,从小型服务调整到根本性更改 - 所有这些都不会影响客户端。

为您的微服务添加额外的安全层

API 网关通过提供额外的保护层来防止 SQL 注入、XML 解析器漏洞和拒绝服务 (DoS) 攻击等攻击媒介,从而帮助防止恶意攻击。

鉴于此类攻击日益复杂,任何企业都不能忽视它们。从服务中断到声誉受损,涉及的金额巨大;添加额外的安全层是有意义的。

启用对混合通信协议的支持

虽然面向外部的 API 通常提供基于 HTTP 或 REST 的 API,但内部微服务可能会从使用不同的通信协议中受益。协议可能包括[ProtoBuf]或可能与 SOAP、JSON-RPC 或 XML-RPC 的系统集成。API 网关可以跨这些不同的协议提供基于 REST 的外部统一 API,允许团队选择最适合内部架构的 API。

降低微服务复杂性

微服务有一些常见的问题,例如:使用 API 令牌进行授权、访问控制实施和速率限制。这些问题中的每一个都会要求每个服务都实现它们,从而增加微服务的开发时间。API 网关将从您的代码中消除这些问题,使您的微服务能够专注于手头的任务。

当授权和身份验证通过 API 网关进行控制时,管理起来尤其容易。这种设置还意味着您可以清楚地监督谁访问了什么以及何时访问------这在各种情况下都可以派上用场。

API网关设计

github: github.com/tracydzf/fl...

代码仅供学习参考,适用于感兴趣者

  • 思维导图
  • 整体流程
相关推荐
向前看-6 小时前
验证码机制
前端·后端
超爱吃士力架8 小时前
邀请逻辑
java·linux·后端
AskHarries10 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
isolusion11 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp11 小时前
Spring-AOP
java·后端·spring·spring-aop
TodoCoder12 小时前
【编程思想】CopyOnWrite是如何解决高并发场景中的读写瓶颈?
java·后端·面试
凌虚12 小时前
Kubernetes APF(API 优先级和公平调度)简介
后端·程序员·kubernetes
机器之心13 小时前
图学习新突破:一个统一框架连接空域和频域
人工智能·后端
.生产的驴14 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
顽疲14 小时前
springboot vue 会员收银系统 含源码 开发流程
vue.js·spring boot·后端