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...

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

  • 思维导图
  • 整体流程
相关推荐
uzong4 小时前
后端线上发布计划模板
后端
uzong5 小时前
软件工程师应该关注的几种 UML 图
后端
上进小菜猪7 小时前
基于 YOLOv8 的 100 类中药材智能识别实战 [目标检测完整源码]
后端
码事漫谈8 小时前
AI 技能工程入门:从独立能力到协作生态
后端
码事漫谈8 小时前
构建高并发AI服务网关:C++与gRPC的工程实践
后端
颜酱9 小时前
前端必备动态规划的10道经典题目
前端·后端·算法
半夏知半秋10 小时前
rust学习-闭包
开发语言·笔记·后端·学习·rust
LucianaiB11 小时前
【保姆级教程】10分钟把手机变成AI Agent:自动刷课、回消息,学不会我“退网”!
后端
Mr -老鬼11 小时前
功能需求对前后端技术选型的横向建议
开发语言·前端·后端·前端框架
IT=>小脑虎11 小时前
Go语言零基础小白学习知识点【基础版详解】
开发语言·后端·学习·golang