当前位置: 首页 > news >正文

7层的API网关

 

一句话大白话

​7层的API网关就是一个“智能前台总监”,它不仅能看懂你的公司门牌号(4层功能),还能听懂你的具体业务需求(7层功能),并帮你把事情安排好。​

为了理解“7层”,我们首先要复习一下经典的 ​​OSI网络七层模型​​。这个模型把网络通信分成了7个层次,就像一栋7层的办公楼:

层级名称功能比喻常见协议
​7​​应用层​​​HTTP, HTTPS, FTP, SMTP
​6​表示层翻译官,负责数据格式转换、加密/解密-
​5​会话层协调员,负责建立、管理和终止会话-
​4​​传输层​​快递员,负责整个数据的传输​TCP, UDP
​3​网络层路由员,负责寻址和最佳路径选择IP
​2​数据链路层司机,负责在本地网络上传送数据帧Switch
​1​物理层公路,负责传输原始的比特流网线, 光纤

​关键点在于:​

  • ​第4层(传输层)​​ 的工作视角是:​​“有一个数据包从IP地址1.2.3.4的8080端口,发往5.6.7.8的80端口。我把它送过去就行。”​​ 它不关心数据包里的具体内容是什么。
  • ​第7层(应用层)​​ 的工作视角是:​​“这是一个HTTP请求,用的是GET方法,请求的URL是 /api/v1/orders/123,里面还带着一个用户的身份令牌(Token)。我需要知道这个请求具体要干什么。”​​ 它关心并能够解析数据包里的​​具体内容​​。

4层负载均衡 vs 7层负载均衡(API网关)

假设一个请求是:“我要查询订单123的详情”。

  • ​4层负载均衡(如LVS、F5的基本模式)​​:

    • 它只看请求的​​IP地址和端口​​。比如,它看到请求发到了服务器的80端口。
    • 它根据规则(比如轮询),把这个请求​​整体转发​​到后台三台订单服务器中的某一台(比如Server 2)。
    • ​它不知道这个请求的具体内容是什么​​,只是像个“快递分拣员”。
  • ​7层负载均衡/API网关(如Nginx、Kong)​​:

    • 它会​​拆开​​这个请求,​​读取里面的应用层内容​​(HTTP协议)。
    • 它看到请求的 ​​URL是 /api/v1/orders/123​,方法的是 GET
    • 它可以根据这个​​具体的URL路径​​,做出更智能的决策。比如,它知道所有以 /api/v1/orders 开头的请求,都应该被转发到​​订单服务​​的服务器集群,而不是用户服务。
    • 然后它再通过负载均衡算法,将请求转发到订单服务集群中的某一台具体服务器(比如Order Service 1)。

为什么需要7层?—— API网关的核心价值

正因为7层网关能“读懂”业务内容,所以它能实现4层完全无法实现的、无比重要的功能:

  1. ​动态路由与灰度发布​

    • ​场景​​:新开发了一个v2版本的订单接口,想先让1%的用户体验一下。
    • ​7层怎么做​​:网关读取请求URL(如 /api/v2/orders)或Header中的特殊标记(如 version: v2),将带有这些特征的流量​​精准地​​路由到v2版本的服务器群组,而其他流量依然走v1版本。这在4层是无法实现的。
  2. ​统一认证与授权​

    • ​场景​​:确保每个访问订单、用户数据的请求都是合法用户发出的。
    • ​7层怎么做​​:网关在入口处统一检查每个HTTP请求Header里的 ​​Token​​ 或 ​​API密钥​​。如果Token无效,直接返回401错误,根本不会让请求到达后台业务服务。这避免了每个服务都要重复实现一套鉴权逻辑。
  3. ​限流与熔断​

    • ​场景​​:防止恶意用户一秒内请求一万次“发送短信”接口,或者某个后台服务挂了导致请求堆积。
    • ​7层怎么做​​:网关可以针对​​特定的API接口​​(如 POST /api/sms/send)设置规则,比如“同一个IP每秒最多请求10次”。超过限制的请求直接被网关拒绝。它还可以监控某个服务的错误率,如果太高就自动“熔断”,不再转发请求给它。
  4. ​请求转换与聚合​

    • ​场景​​:手机H5端需要一个接口就返回首页的所有数据(用户信息、 banner列表、消息通知),而不想连续调用3个接口。
    • ​7层怎么做​​:网关可以接收一个请求(如 GET /api/homepage),然后帮你​​并行地​​调用用户服务、banner服务、消息服务三个后台接口,将结果聚合后,一次性返回给客户端。
  5. ​日志与监控​

    • ​场景​​:运营想知道哪个API调用最频繁、平均响应时间是多少。
    • ​7层怎么做​​:网关作为所有流量的统一入口,可以记录下每一个API请求的​​详细日志​​(URL、方法、状态码、耗时),并集中上报到监控系统,生成可视化报表。

总结

特性4层 (L4) 负载均衡7层 (L7) API网关
​工作层面​传输层 (TCP/UDP)应用层 (HTTP/HTTPS)
​决策依据​IP地址、端口URL路径、HTTP方法、Header、Cookie等
​主要能力​网络流量分发、高可用​路由、认证、限流、熔断、日志、聚合​
​比喻​快递分拣员智能前台总监 + 安全保安 + 流量警察

​所以,为什么要7层?​

因为现代微服务架构的复杂度已经远远超出了“根据IP和端口转发流量”的需求。我们需要一个更智能的、能理解​​业务内容​​的中间层,来统一处理跨服务的公共需求(安全、流量管理、监控等),让后台业务服务可以更专注于核心业务逻辑的开发。

而这个“智能中间层”,就是 ​​7层的API网关​​。它已经成为微服务架构中不可或缺的核心组件。你之前问题中架构图里的 ​​API网关​​,正是一个典型的7层网关。


文章转载自:

http://qbjh6luD.grcgk.cn
http://LVJ0JFKw.grcgk.cn
http://vFUB5LJP.grcgk.cn
http://M8rgCKfk.grcgk.cn
http://HznhHqiA.grcgk.cn
http://jJZL5yLl.grcgk.cn
http://Mx8W4tEf.grcgk.cn
http://NtgGus7S.grcgk.cn
http://4mzlFMtz.grcgk.cn
http://ji4Fg3Re.grcgk.cn
http://fKN3miFA.grcgk.cn
http://6zxXeGnB.grcgk.cn
http://UtsTzLfA.grcgk.cn
http://1H573LfY.grcgk.cn
http://oogNBfvu.grcgk.cn
http://zpiW5FdJ.grcgk.cn
http://X5KN4SFV.grcgk.cn
http://CnbHHKNi.grcgk.cn
http://jHNGn69g.grcgk.cn
http://6DkAwFpM.grcgk.cn
http://DhhKrQFG.grcgk.cn
http://fquqiHTd.grcgk.cn
http://kyr4zqlq.grcgk.cn
http://eQCmn6n6.grcgk.cn
http://sVUVvM6y.grcgk.cn
http://7Jhmakin.grcgk.cn
http://RJINascS.grcgk.cn
http://JCtrfkvH.grcgk.cn
http://PxxlUrQP.grcgk.cn
http://j3m5LGZq.grcgk.cn
http://www.dtcms.com/a/376022.html

相关文章:

  • 链表问题:LeetCode 两数相加 - 算法解析与详解
  • 类型别名(type)与接口(interface)的抉择
  • 4.1 - 拖链电缆(柔性电缆)与固定电缆
  • 硬编码Salt问题及修复方案
  • 随笔一些用C#封装的控件
  • 9月9日星期二今日早报简报微语报早读
  • Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
  • GEO与SEO,GEO 是什麼?SEO + AI = GEO 生成式搜尋引擎優化 全解析
  • Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
  • 如果服务端有数据更新,浏览器缓存同时也没有过期,如何直接使用最新的数据
  • 使用java编写一个基础的彩票抽奖程序
  • 算法题 Day5---String类
  • 【靶场练习】--DVWA第二关Command Injection(命令执行)全难度分析
  • 什么是Adobe Analytics?数据驱动营销的关键工具​
  • 使用Docker搭建MaxKB智能体平台
  • 【链表】3.重排链表(medium)
  • 免费!离线!免安装!Windows文件夹隐藏工具
  • 联邦学习及其相关创新SCI辅导
  • 466章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • ES8集群部署与使用-zookeeper集群部署与使用
  • Nginx 优化与防盗链配置指南
  • 【数据结构】栈详解
  • 力扣周赛困难-3677. 统计二进制回文数字的数目(需要一定推理的经典二分)
  • 【硬件-笔试面试题-77】硬件/电子工程师,笔试面试题(知识点:滤波电路中截止频率的计算)
  • CUDA编程13 - 测量每个Block的执行时间
  • 仓颉编程语言青少年基础教程:特殊数据类型Unit类型和Nothing类型)
  • AFSim2.9.0学习笔记 —— 3、Wizard平台类型与ArkSIM平台介绍
  • 基于LTE标准的MIMO-OFDM仿真程序
  • 814章:Python Web爬虫入门:使用Requests和BeautifulSoup
  • 硬件开发(5)—ARM汇编