分布式技术导论 — 探索分析从起源到现今的巅峰之旅(逻辑架构)

探索分析从起源到现今的巅峰之旅

  • 背景介绍
    • 技术系列
  • 逻辑架构
    • 连接处理层
    • 数据缓存层
    • SQL处理层
    • 存储引擎
    • 逻辑层次的分工
  • 模块执行
    • 连接处理层
      • 初始化模块
      • 核心API模块
      • 网络交互模块
      • Client&Server 交互协议模块
      • 用户模块
        • 案例
      • 访问控制模块
        • 案例
      • 连接管理、连接线程和线程管理
        • 连接管理模块
        • 线程管理模块
    • 数据缓存层
      • Query Cache模块(高版本已经去除)
    • SQL处理层
      • Query解析与分发模块
      • Query优化器模块
  • 整体执行流程
    • 1. MySQL服务启动
      • 1.1 读取配置
      • 1.2 内存分配
      • 1.3 存储引擎
      • 1.4 网络监听
    • 2. MySQL接受请求
      • 2.1 分配连接线程
      • 2.2 处理连接请求
    • 3. MySQL执行请求
      • 3.1 语义和语法分析
      • 3.2 解析Query请求类型
      • 3.3 Query优化器处理
      • 3.4 资源权限判断执行
        • 3.4.1 锁(资源)+ 权限控制判定
        • 3.4.2 table cache优化机制
        • 3.4.3 多类型指令判断执行
      • 3.5 下发到存储引擎
        • 3.5.1 解析元数据调用标准接口
        • 3.5.2 自动调用对应的引擎实现
  • 未完待续
    • 存储引擎
      • 并发控制
      • 事务管理

尽管外界惯以“简约”之名概述MySQL,其实质乃一套内蕴深邃复杂机制与精巧设计的体系架构

背景介绍

MySQL作为一款广泛应用的数据库管理系统,其架构所具备的多用途特性和对复杂环境的高度适应性,使其能在诸多应用场景中展现出卓越的性能实力。无论是作为应用程序内核部分实现无缝整合,还是服务于确保数据冗余以达成高可用架构的设计,乃至在承载大规模并发交易、应对实时数据流转需求的在线事务处理系统(OLTP)中。

技术系列

本系列文章将多角度剖析MySQL的内在构造,包括逻辑架构的层次划分、模块间协同执行机制、多样化的存储引擎策略、严谨的并发控制手段以及稳健的事务管理体系。
在这里插入图片描述

本文的主旨在于深入剖析并详细阐述技术的首个关键领域——【逻辑架构】。我们将对其核心组件、设计理念以及在实际应用中的优势进行全面解读,以期为读者提供一个全面而深入的视角。


逻辑架构

要深刻领悟MySQL服务器的工作机制,关键在于在脑海中构建一幅生动详实的蓝图,形象地描绘其各组成部分之间的精密协作模式,如下图所示。
在这里插入图片描述
可以看到,我们大致将MySQL数据库拆分为:连接处理层,数据缓存层,SQL处理层以及存储引擎:
在这里插入图片描述

连接处理层

大多数基于网络的客户端/服务器工具或服务均展现出相似的结构,涵盖了连接管理、权限验证、安全保障等方面。

当客户端尝试连接到MySQL服务器时,连接处理层会验证客户端的身份(例如,用户名和密码)。如果验证成功,它将建立与客户端的连接,并为该连接分配一个线程,以便后续的查询处理。

数据缓存层

多种缓存机制,用于提高查询性能。

查询缓存可以存储之前执行过的查询及其结果,这样当相同的查询再次执行时,可以直接从缓存中获取结果,而无需重新执行查询。此外,还有用于存储索引和其他数据的缓存,以减少对磁盘的访问。

SQL处理层

MySQL的核心服务功能,包括查询的解析、分析、优化、缓存机制,以及各类内置函数(如日期时间处理、数学运算、加密功能等)。这一层还实现了跨存储引擎的通用功能,如存储过程、触发器和视图等。

当客户端发送一个SQL查询时,SQL处理层首先会解析该查询,生成一个解析树。然后,它会使用查询优化器来找到执行该查询的最有效方法。最后,它会生成一个执行计划,并调用存储引擎来执行该计划。

存储引擎

常见的存储引擎包括InnoDB、MyISAM等。存储引擎负责在底层管理数据文件的存储和检索。它处理SQL处理层发送的指令,执行数据的读取、写入、更新和删除等操作。不同的存储引擎在事务处理、锁定机制、外键支持等方面可能有所不同。

存储引擎API包含数十个底层函数,用于执行如事务启动、按主键检索记录等操作。但存储引擎不参与SQL解析,且不同存储引擎间不进行通信,它们只是简单地响应上层服务器的请求

类似于GNU/Linux系统中的多种文件系统,每种存储引擎都有其独特的优势和局限。服务器通过专用的API与存储引擎进行交互,这些接口有效地掩盖了不同存储引擎之间的差异,使得这些差异对上层查询过程而言是透明的。

逻辑层次的分工

上面说明的层次化的结构使得MySQL非常灵活和可扩展。你可以根据需要选择不同的存储引擎,或者对缓存层进行优化,以提高查询性能。同时,这种结构也使得MySQL更容易维护和扩展新功能。


模块执行

MySQL的架构内部由多个精心设计的模块构成,这些模块各司其职,共同完成了从语法解析、优化查询到结果集返回的整个过程。

连接处理层

在这里插入图片描述

初始化模块

在MySQL Server启动之际,初始化模块便发挥其核心作用,负责对整个系统进行全面的初始化工作。这包括但不限于缓冲区和缓存结构的配置与启动,内存空间的分配与管理,系统变量的预设与调整,以及各存储引擎的初始化配置等。
在这里插入图片描述
此模块促使MySQL Server能够以最佳状态启动,为后续的数据处理和服务提供稳定而高效的支撑。
在这里插入图片描述
初始化模块是MySQL Server启动过程中的关键一环,它确保了系统各项功能的正常运作与性能优化。
在这里插入图片描述

核心API模块

核心API模块致力于提供一系列高效且底层的操作功能优化实现,涵盖了底层数据结构的精心构建、特殊算法的创新实现、字符串与数字处理的优化方案,以及小文件I/O和格式化输出的高效处理。此外,它还负责内存管理的核心部分,确保系统资源得到合理的分配与使用。

网络交互模块

底层网络通信模块通过抽象化接口API,简化了底层网络交互的复杂性,实现了网络数据的接收与发送功能。这一设计使得其他模块能够方便地调用网络交互功能,同时也简化了对这部分代码的维护。

Client&Server 交互协议模块

MySQL的客户端和服务器能够高效、准确地进行信息交换,确保系统的稳定运行和数据的准确传输

MySQL的客户端与服务器交互协议模块,便是负责实现两者间所有交互流程的核心部分。这些交互协议都是基于当前主流的操作系统和网络协议之上构建的,如广为人知的TCP/IP协议和Unix Socket等。

用户模块

用户模块的核心职责在于实施用户登录权限的验证与连接控制,以及执行用户授权管理任务。它宛如MySQL系统的守护神,审慎地判断每位来访者的身份,决定是否为其敞开大门。当客户端(如应用程序)尝试与MySQL服务器建立连接时,服务器会执行一系列认证步骤以确保连接的安全性。这些认证过程主要基于提供的用户名、原始主机信息以及密码进行验证。

案例

如果连接采用了安全套接字层(SSL)加密方式,服务器还可以利用X.509证书进行额外的身份验证,从而增强连接的安全性。一旦客户端通过了认证并成功连接到服务器,服务器会进一步核实该客户端是否具备执行特定查询的权限。

访问控制模块

为了确保系统的安全性和稳定性,我们需要引入一个访问控制模块,它能够实时监控每位用户的操作行为,并根据用户的角色或身份赋予不同的权限,确保每位用户只能在其允许的范围内进行操作。

访问控制模块实现的功能就是根据用户模块中各用户的授权信息,以及数据库自身特有的各种约束,来控制用户对数据的访问。用户模块和访问控制模块两者结合起来,组成了 MySQL 整个数据库系统的权限安全管理的功能

案例

例如,服务器会检查客户端是否被授予了对数据库中XX表执行SELECT语句的权限,以确保数据访问的合法性和合规性。通过这样的认证和权限验证机制,MySQL服务器能够确保只有经过授权且符合安全要求的客户端能够访问和操作数据库资源。

连接管理、连接线程和线程管理

在MySQL服务器进程中,每个客户端连接都会独占一个线程,确保该连接的查询任务仅在该线程内执行。这样的设计确保了查询的隔离性和高效性。同时,这个线程会按照操作系统的调度策略,在CPU核心或CPU中轮流运行,充分利用系统资源。

连接管理模块

在MySQL Server中扮演着至关重要的角色,它时刻保持警觉,监听并接收来自各方的连接请求。一旦有请求接入,它便迅速将这些请求转交给线程管理模块处理。

在这里插入图片描述
为了确保每个客户端都能得到及时且专注的服务,每当有新的客户端连接到MySQL Server时,连接管理模块都会为其分配一个专门的连接线程。这些连接线程是MySQL Server与客户端之间沟通的桥梁,它们负责接收客户端的命令请求,并将Server端的结果信息准确传递回客户端。

线程管理模块

连接线程的管理者,它负责线程的创建、维护以及缓存等工作。通过精心管理这些线程,线程管理模块确保MySQL Server能够高效地处理大量的客户端请求,同时保持系统的稳定性和性能。
在这里插入图片描述

除了上述特点外,MySQL还内置了一套高效的API,专门用于支持线程池(Thread-Pooling)插件的运作。通过这一机制,MySQL能够利用有限数量的线程来处理庞大的连接请求,从而避免了频繁创建和销毁线程所带来的资源消耗。

数据缓存层

在MySQL数据库中,有一个至关重要的模块——查询缓存(Query Cache),这种设计使得MySQL能够迅速响应相同的查询请求,无需重复执行查询操作,从而大大提高了查询效率。
在这里插入图片描述

Query Cache模块(高版本已经去除)

当查询所涉及的基础表中的数据发生任何变化时,MySQL会智能地使相关查询的缓存失效,以确保数据的一致性。在读写操作比例极高的应用系统中,查询缓存对于性能的提升效果尤为显著。

在这里插入图片描述
核心职责是将客户端发送给MySQL的Select类型查询请求的返回结果集存储在内存中,并与这些查询的一个哈希值相对应。

注意,这也意味着它可能会消耗大量的内存资源。因此,在使用查询缓存时,我们需要根据实际应用场景来权衡其带来的性能提升与内存消耗之间的关系

SQL处理层

在MySQL生态系统中,Client端向Server端发送的各类数据操作请求通常被统一归纳为query。这些query指令作为MySQL进行数据处理与交互的基石,承载着客户端丰富的操作意图。无论是数据的增删改查,还是其他复杂的操作请求,都通过query指令得以实现。

当MySQL Server的连接线程接收到客户端发来的Query时,它并不会立即进行处理,而是将其传递给一个专门的模块——即Query解析与分发模块。

Query解析与分发模块

这一模块负责进一步处理和分析Query,并根据其类型和内容,将其分发至相应的处理单元进行执行,query进行深入的语义和语法分析,确保其合法性和准确性。随后,根据query的不同操作类型,该模块会对其进行分类,并精准地转发给相应的处理模块进行后续执行。
在这里插入图片描述

Query优化器模块

Query优化器,其核心功能在于对客户端提交的query进行深度优化。它凭借对客户端query语句的精准解析以及数据库内统计信息的全面掌握,运用一系列先进算法进行缜密分析,旨在制定出最为高效的执行策略。这一策略将精准指导后续程序如何高效地获取query语句所需结果,从而确保数据库查询的高效性与准确性。


整体执行流程

深入探究MySQL的内部机制后,接下来我们聚焦于其各个模块间的协同工作。通过梳理MySQL从启动到客户端连接、发送查询请求、获取返回结果,直至最终退出的完整流程。
在这里插入图片描述

1. MySQL服务启动

1.1 读取配置

执行启动MySQL命令后,初始化模块便着手从系统配置文件中提取系统参数与命令行设置,进而依照这些参数对整个系统进行细致的初始化工作。

1.2 内存分配

内存的合理分配、全局变量的精确设定以及各类数据结构的详尽初始化等环节。这些步骤确保了MySQL系统能够稳定、高效地运行,为后续的数据处理和交互奠定了坚实基础。

1.3 存储引擎

各类存储引擎逐一启动,并各自执行相应的初始化操作,确保它们能够顺利融入整个系统,为数据的存储和检索提供高效支持。

1.4 网络监听

整个系统初始化工作圆满完成后,连接管理模块便接过了重任。该模块随即启动监听程序,以处理来自客户端的连接请求,这包括TCP/IP网络的监听以及UNIX Socket的连接。
在这里插入图片描述
经过上述一系列精细化的启动步骤后,MySQL服务器已经完成了基本的启动流程,并做好了充分的准备,随时待命,以响应客户端发出的各类请求。

2. MySQL接受请求

当连接管理模块侦测到客户端的连接请求时,它便借助网络交互模块的功能与客户端进行交互。遵循C/S交互协议模块所规定的协议进行初步的交流后,连接管理模块便会将这一连接请求转交给线程管理模块,以请求分配一个连接线程。
在这里插入图片描述

2.1 分配连接线程

线程管理模块随即会将控制权交给连接线程模块,并告知其有新的连接请求需要处理。连接线程模块在接收到请求后,会首先检查当前连接线程池中是否有可用的空闲连接线程。

2.2 处理连接请求

如果发现有可用的空闲线程,它便会选取一个与客户端建立连接,若线程池中没有空闲线程,则会新建一个连接线程以响应客户端的请求。

注意,连接线程模块并不会立即与客户端建立连接。它首先会调用用户模块进行授权检查,确保客户端的请求已通过必要的权限验证。只有在通过授权检查后,连接线程模块才会将客户端的请求与负责处理该请求的连接线程进行连接

3. MySQL执行请求

客户端与连接线程通过协议顺利建立通信,连接线程随即承担起处理客户端发送的各类请求的职责。每当接收到Query语句时,连接线程会迅速将其转交给Query解析与分发模块。

3.1 语义和语法分析

首先对Query进行初步的语义与语法分析,确保其逻辑正确且符合语法规范。随后,根据请求的具体类型,一部分请求会直接在模块内部得到妥善处理,而另一部分则会被精准地分发给其他相关模块进行进一步的处理,以确保每个请求都能得到准确且高效的响应。

3.2 解析Query请求类型

若是一个Query类型的请求,控制权会转交给SQL解析器。解析器首先判断该请求是否为select类型的Query。

  • 命中缓存:它会调用查询缓存模块来检查该query是否已在缓存中存在。若缓存中存在相应数据,则直接返回给连接线程模块,并通过与客-户端的连接线程将数据传送给客户端。

  • 未命中缓存:若该Query不属于可缓存类型,或缓存中不存在相关数据,则Query将返回给解析器进行进一步处理,并通过查询分发器分发给相应的处理模块进行处理。

3.3 Query优化器处理

当解析器识别出一条尚未缓存的select语句时,它会将控制权顺利移交至Query优化器模块,也就是我们所称的Optimizer。通过这一移交过程,确保select语句能够得到高效的优化处理,从而提升查询性能。

3.4 资源权限判断执行

3.4.1 锁(资源)+ 权限控制判定

在Query解析与分发模块成功将请求分派至相应模块后,这些模块的首要任务是通过访问控制模块进行严格的权限验证。这确保了连接用户只有在满足访问目标表及字段的权限要求时,才能继续执行后续操作。一旦用户权限得到确认,表管理模块随即被调用,负责请求所需的表,并尝试获取必要的锁,以确保数据的一致性和安全性。

3.4.2 table cache优化机制

表管理模块会首先检查该表是否已存在于table cache中,若已存在则直接进行锁相关的处理;若不在cache中,则需要打开表文件并获取锁,之后将打开的表交给表变更管理模块。

Table cache是MySQL为了提高性能而设计的一种缓存机制,存储了最近访问过的表的元数据和部分数据,以便快速响应后续的请求。

3.4.3 多类型指令判断执行

多个专项小模块各司其职,包括负责插入操作的insert处理器、负责删除操作的delete处理器、负责更新操作的update处理器、负责创建操作的create处理器以及负责修改操作的alter处理器等,它们共同协作,高效处理各种DML和DDL操作任务。

3.5 下发到存储引擎

3.5.1 解析元数据调用标准接口

解析该表的元数据信息,进而确定其采用的存储引擎类型以及其他关键属性。基于这些信息,模块会向专门的存储引擎接口模块发起请求,并调用相应的存储引擎实现模块以执行特定的操作。

3.5.2 自动调用对应的引擎实现

对于表变更管理模块而言,底层存储引擎的具体实现细节是透明的。它只需调用标准的接口,并指定表的类型,接口模块便会根据这些信息自动选择并调用合适的存储引擎,确保数据处理的高效性和准确性。


未完待续

后面的文章中,我们还将对MySQL数据库的多个核心架构进行深入剖析,包括其存储引擎的运作机制、高效的并发控制策略以及精细的事务管理等方面。我们将逐一详细介绍这些组件的设计理念、功能特点以及在实际应用中的表现,帮助大家更全面地了解MySQL数据库的内部架构和工作原理。

存储引擎

敬请期待:分布式技术导论 — 探索分析从起源到现今的巅峰之旅(存储引擎)


并发控制

敬请期待:分布式技术导论 — 探索分析从起源到现今的巅峰之旅(并发控制)


事务管理

敬请期待:分布式技术导论 — 探索分析从起源到现今的巅峰之旅(事务管理)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习资料分析

学习资料分析 速算运算 √截位直除分数比较等比修正其他速算方法基期与现期基本概念求基期求现期增长率与增长量增长相关统计术语求一般增长率比较一般增长率增长量比重比重相关公式求比重平均数倍数间隔增长乘积增长率年增长率混合增长率资料分析:主要测查报考者对文字、数字…

UML与设计模式

1、关联关系 关联关系用于描述不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。关联关系是一种静态关系,通常与运行状态无关,而是由“常识”、“规则”、“法律”等因素决定的,因此关联关系是一种强关联的关…

层出不穷的大模型产品:使用体验、倾向选择及未来展望

✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…

哪些因素驱动新零售发展?新零售与传统零售、电子商务区别在哪?

零售业正经历着一场前所未有的变革,这场变革由多种因素驱动,涉及技术、消费习惯以及商业模式的全面升级。我们称之为”新零售”,它不仅仅是一个概念,更是零售业未来发展的方向。新零售的兴起,标志着零售行业正在迈向一…

Spring boot 使用AbstractRoutingDataSource实现数据源动态切换

目录 一、AbstractRoutingDataSource 二、具体实现 1、pom.xml 2、新建UserMapper 3、在spring boot 启动类上添加扫描mapper注解 4、在配置文件 application.properties 中添加多个(我这里是两个)数据源的配置信息 5、集成动态数据源模块 5.1、新建注解 CurDataSource…

186.二叉树:二叉搜索树中的插入操作(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

pytest + yaml 框架 -61.jenkins+allure+钉钉通知添加测试结果

前言 上一篇pytest + yaml 框架 -60.git+jenkins+allure+钉钉通知反馈 已经实现测试结果用钉钉通知。 本篇继续在钉钉通知里添加测试的汇总结果,此功能在pytest-yaml-yoyo v1.5.2版本上实现。 Environment Injector 插件 在运行完用例后会生成一个summary.json 文件,汇总…

护眼台灯哪个品牌更好?五款市面主流的护眼台灯款式分享

近年来,护眼台灯的研发和创新不断推进,一些台灯配备了智能化功能,如定时开关机、自动调节光线等,使孩子们能够更好地控制用眼时间和光线环境。护眼台灯哪个品牌更好?一些高端的护眼台灯还采用了纳米光滤镜技术&#xf…

誉天5月红帽战报:恭喜14名学员通过RHCE认证,通过率87.5%!

红帽认证是全球公认的Linux权威认证之一,对于Linux从业者来说具有很高的价值和认可度。旨在评估考生在Linux系统管理和应用方面的专业知识和技能。红帽考试是Linux从业者提升自身技能水平和职业竞争力的重要途径之一。 5月份,誉天14名学员通过了RHCE认证…

Python基础教程(十九):网络编程

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

Midjourney提示词终极指南(完整版)

在这篇博客中,我们深入研究了使用提示的艺术,以利用Midjourney的AI功能的力量。我们将探索各种技术,以创建个性化和迷人的图像,将你的创意想法转变为令人惊叹的视觉杰作。 1. 了解提示词 提示是简短的文字描述或关键词&#xff…

基于Spring+Vue的前后端分离的计算器

麻雀虽小,五脏俱全 需求分析 表达式求值 支持加减乘除四则运算、支持高精度 获取日志 Api文档定义 前后端分离,人不分离 通过Apifox定义接口细节,协调前后端开发工作。 软件架构设计 Spring-MVC 把软件系统分为三个基本部分:模…

跨国大文件传输需要哪些方面?怎么实现数据快速传输?

跨国大文件传输涉及到许多方面,包括网络速度、安全性、可靠性和法律合规性等。 以下是跨国大文件传输时需要考虑的一些重要方面: 高速稳定的网络连接:确保有足够的带宽和稳定的网络连接以支持大文件的快速传输。这可能需要考虑到跨国网络的延…

数字孪生火电厂:传统能源的数字化转型

通过图扑自主研发的产品 HT for Web ,采用可视化与数字孪生技术,打造多样化设计风格和业务视角下的火电厂数字孪生方案。为智慧电厂综合“一张图”管理提供了上层展示技术支撑,助力企业增强对火电厂的信息化和数字化管理水平。

用android如何实现计算机计算功能

一.新建一个项目 步骤&#xff1a; 1.新建项目 2.选择 二.用户界面构建 找到项目的res的下面layout里面的activity.xml文件进行约束布局界面构建。 activity.xml代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.c…

电脑屏幕录制怎么录制?这7个录制屏幕的技巧值得一试!

电脑屏幕录制怎么录制&#xff1f;屏幕录制是什么? 简单地说&#xff0c;电脑屏幕录制就是在你的设备屏幕上录制视频。它可以捕捉屏幕上正在发生的事情&#xff0c;并让你与其他人分享。记录电脑、手机或笔记本电脑屏幕的原因有很多&#xff1a; 1. 一个简单的屏幕录制可以用…

STM32项目分享:智能大棚/智慧农业系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.co…

超全Midjourney自学教程,怒码1万3千字!这是我见过最良心的教程啦!

前段时间&#xff0c;后台有网友私信我&#xff0c;说想跟我一起学AI~当时一边开心一边惶恐&#xff0c;满足于被人看到自己的努力、又担心自己是不是教不好别人&#xff0c;毕竟我自己也是业余时间边学边发的那种~ 不过&#xff0c;我还是会继续搬运或整理一些我认为值得记录…

Spark学习——不同模式下执行脚本

举个简单的例子&#xff1a;使用spark官方用例"取pi值" 一、local模式 进入spark目录执行后台命令&#xff1a; bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[*] \ ./examples/jars/spark-examples_2.12-3.2.1.jar \ 10运行结…

七、IP路由原理和路由引入

目录 一、IP路由原理 二、路由引入 2.1、双点双向路由引入 2.2、路由回灌 三、路由策略与路由控制 路由匹配工具&#xff08;规则&#xff09; ACL IP前缀列表 路由控制工具&#xff08;控制&#xff09; 策略工具1 策略工具2 搭配组合 组…