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

Gateway-路由-规则配置

1.路由

路由是指网络设备(如路由器、交换机、或软件)根据一张路径表(路由表),为数据包选择一条从源地址到目标地址的传输路径的过程。它就像快递配送系统,查看地址并决策下一步往哪里送”,该过程就是"路由"

1.1 核心职责与功能

1. 请求映射与分发 (The Map & Dispatcher)

这是路由最根本、最核心的职责。

  • 是什么:根据预先定义的规则,将一个输入的请求(无论是IP数据包还是HTTP请求)精确地映射并分发到对应的目标或处理单元上。
  • 怎么做:
    • 网络层:查看IP包头的目标IP地址,查询路由表,决定从哪个物理接口转发出去。
    • 应用层/API网关:查看HTTP请求的URL路径和方法(GET/POST等),将其分发给相应的控制器(Controller)函数或微服务。
    • 前端:根据浏览器地址栏的URL路径,决定渲染哪个视图(View)或组件(Component)。
  • 类比:公司的总机接线员,根据你要找的部门名称,把你的电话转接到对应的分机上。
2. 路径选择与优化 (The Pathfinder)

在网络层路由中,这一功能至关重要。

  • 是什么:为数据包选择一条从源到目的地的最佳路径。
  • 怎么做:
    • 路由协议(如OSPF、BGP)会动态地学习网络拓扑结构,计算不同路径的“成本”(基于跳数、带宽、延迟等因素)。
    • 维护一张路由表,其中包含到达各个网络的最佳路径(下一跳)。
    • 在出现网络故障或拥堵时,能够自动选择备用路径,确保网络韧性。
  • 类比:地图导航软件(如高德、Google Maps),为你规划出最快、最短或最经济的路线,并在遇到堵车时重新规划。
3. 隔离与安全 (The Security Guard)

路由提供了最初的、基于路径的隔离和安全检查点。

  • 是什么:通过路由规则,实现流量的逻辑隔离和初步安全过滤。
  • 怎么做:
    • 网络ACL:在路由器上设置访问控制列表,例如“拒绝所有从A网段发往B网段的流量”。
    • API网关:可以将管理接口(如 /actuator)的路由与对外API的路由隔离开,并对不同路由实施不同的认证策略。
    • VLAN间路由:在不同虚拟局域网(VLAN)之间进行路由,既实现了通信,又保持了广播域的隔离。
  • 类比:小区的大门保安,只允许业主进入相应的单元楼(路由到正确目的地),而将闲杂人等拒之门外(丢弃非法请求)。
4. 抽象与解耦 (The Translator)

在现代软件开发中,路由提供了强大的抽象能力。

  • 是什么:将对内部实现的依赖转变为对稳定接口(URL路径)的依赖。
  • 怎么做:
    • 后端:用户只需要记住 /users 这个端点就能获取用户信息,而无需知道背后是哪个服务器、哪个函数在处理。即使后台服务重构、更换编程语言,只要端点不变,客户端就无需修改。
    • 前端:URL路径 /about 对应“关于我们”页面,无论这个页面背后的组件代码如何变化,这个链接始终有效。
    • API网关:可以将内部复杂的微服务结构(如 user-service:8080, order-service:8081)抽象成统一的、对外友好的API路径(如 /api/v1/users, /api/v1/orders)。
  • 类比:餐厅的菜单。顾客只需点“宫保鸡丁”(URL路径),而不用关心它是哪个厨师(后端服务)、在哪个厨房(服务器)做的。
5. 负载均衡 (The Traffic Cop)

通常与路由紧密结合的功能,尤其是在网关和现代网络设备中。

  • 是什么:将到达同一目的地的流量,分摊到多个相同的处理单元上。
  • 怎么做:
    • API网关:定义一条路由规则 path: /user/**,指向后端3个用户微服务实例。网关会将请求以轮询、随机等策略分发到这些实例上,避免单个实例过载。
    • 网络层:ECMP(等价多路径路由)可以将去往同一目标的流量,通过多条不同的网络链路同时传输。
  • 类比:银行开放多个窗口办理同类业务,大堂经理将顾客引导到人最少的窗口。
6. 流量控制与治理 (The Flow Regulator)

这是路由在微服务架构中的高级功能。

  • 是什么:基于路由对特定类型的流量实施策略。
  • 怎么做:
    • 灰度发布/金丝雀发布:将带有特定Header(如 version: canary)的请求路由到新版本的服务,而其他请求依然路由到旧版本服务。
    • 限流与熔断:对匹配特定路由(如 /api/expensive-operation)的请求进行速率限制。如果该路由对应的服务不可用,则快速熔断,返回错误,避免雪崩效应。
    • A/B测试:将一部分用户流量路由到A版本UI,另一部分路由到B版本UI。

2.配置路由

创建并编写application-route.yml路由配置文件

补充application.yml文件(包含route):

为gateway模块下的pom文件添加负载均衡依赖

为service-order模块下的OrderController类添@RequestMapping("/api/order")注解

3.测试路由

通过访问我们之前写过的readDb接口来测试路由是否配置成功

启动GatewayMainAppincation和任意一个Order微服务

浏览器访问localhost/api/order/readDb,浏览器和idea控制太输出以下信息,说明路由配置成功

4.总结

路由的核心职责是作为一个智能的决策点,通过一套规则系统,高效、可靠、安全地将请求指引到其正确的目的地,并在此过程中赋予系统灵活性、可扩展性和可维护性。

核心职责

网络设备 (路由器)

后端/API网关

前端框架 (React Router等)

请求映射与分发

根据目标IP查表转发

根据URL路径分发到服务/控制器

根据URL渲染对应组件

路径选择与优化

核心功能,动态选择最佳路径

不常用

不涉及

隔离与安全

通过ACL过滤网络流量

认证、授权、CORS、IP黑白名单

路由守卫(拦截未登录访问)

抽象与解耦

隐藏内部网络结构

隐藏微服务架构,提供统一API

将URL与组件解耦

负载均衡

支持(如ECMP)

核心功能,分发到服务实例

不涉及

流量控制与治理

策略路由(Policy-Based Routing)

核心功能,限流、熔断、灰度发布

不涉及


文章转载自:

http://U515d4v6.qdxkn.cn
http://HiqxDKPv.qdxkn.cn
http://5vxTIroC.qdxkn.cn
http://YM0ZnlsJ.qdxkn.cn
http://Lr4d7JLa.qdxkn.cn
http://Hnu3CN4T.qdxkn.cn
http://5P4eHlTO.qdxkn.cn
http://fRKW16y8.qdxkn.cn
http://lTWxQGqg.qdxkn.cn
http://hIhUMqE8.qdxkn.cn
http://m9YDESPZ.qdxkn.cn
http://mvwXldT4.qdxkn.cn
http://w9Arf4jO.qdxkn.cn
http://ox4ZNURI.qdxkn.cn
http://StiFMjXs.qdxkn.cn
http://cIqlO5Fc.qdxkn.cn
http://HSQ3KzCE.qdxkn.cn
http://LUOxOYNX.qdxkn.cn
http://OgVbdYUn.qdxkn.cn
http://cFzvofus.qdxkn.cn
http://j2aTc7cx.qdxkn.cn
http://ef2ch1ps.qdxkn.cn
http://EHdz9Sae.qdxkn.cn
http://OBj5yEgr.qdxkn.cn
http://XSjGr0NM.qdxkn.cn
http://IcVHrQj9.qdxkn.cn
http://YCqfhYMX.qdxkn.cn
http://x1qIgfBH.qdxkn.cn
http://fEFC5YIt.qdxkn.cn
http://K9e24tO3.qdxkn.cn
http://www.dtcms.com/a/385545.html

相关文章:

  • 低端影视官网入口 - 免费看影视资源网站|网页版|电脑版地址
  • 【Python3教程】Python3高级篇之日期与时间
  • 计算机网络——传输层(25王道最新版)
  • 5-14 forEach-数组简易循环(实例:数组的汇总)
  • 【智能体】rStar2-Agent
  • ego(5)---Astar绕障
  • UE5C++编译遇到MSB3073
  • 记一次JS逆向学习
  • 【PyTorch】单目标检测
  • RabbitMQ—基础篇
  • 介绍一下 Test-Time Training 技术
  • 【LangChain指南】Document loaders
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
  • 2021/07 JLPT听力原文 问题四
  • MySQL 视图的更新与删除:从操作规范到风险防控
  • 【SQLMap】获取 Shell
  • Java之异常处理
  • C# 通过 TCP/IP 控制 Keysight 34465A 万用表(保姆级教程)
  • TVS二极管详解:原理、选型与应用实战
  • C++实现文件中单词统计等
  • 数据库(四)MySQL读写分离原理和实现
  • 关于数据库的导入和导出
  • 【氮化镓】GaN中受主的氢相关钝化余激活
  • AI 进课堂 - 语文教学流程重塑
  • 最近一些机器github解析到本地回环地址127.0.0.1
  • P6352 [COCI 2007/2008 #3] CETIRI
  • 【LeetCode 每日一题】37. 解数独
  • 多项式回归:线性回归的扩展
  • AI生成到无缝PBR材质:Firefly+第三方AI+Substance工作流
  • Java分布式锁实战指南:从理论到实践