DOCA介绍
本文分为两个部分:
- DOCA及BlueField介绍
- 如何运行DOCA应用,这里以DNS_Filter为例子做大致介绍。
DOCA及BlueField介绍:
现代企业数据中心是软件定义的、完全可编程的基础设施,旨在服务于跨云、核心和边缘环境的高度分布式应用工作负载。尽管软件定义的数据中心提供了类似云的灵活性和敏捷性,但它们往往会消耗大量的CPU资源,进而降低服务器和数据中心的整体效率。通过利用DPU(Data Processing Uint)和DOCA(Data Center Infrastructure on a Chip Architecture),可以实现硬件加速的软件定义基础设施,从而显著提升数据中心的性能和灵活性。
DPU被定义为一种可编程的网络系统级芯片(SoC),它集成了从网络端口到PCI Express(PCIe)接口的所有主要功能。NVIDIA于2020年进入DPU市场,并推出了BlueField系列产品。已发布的BlueField-2能够作为智能网卡和存储控制器使用,支持高达200Gbps的以太网端口和高带宽的PCIe接口。BlueField-3于2022年上市,而更强大的BlueField-4预计将在2024年推出。
图1
不同于传统的服务器处理器,DPU(Data Processing Uint)专为网络数据包处理而设计。尽管其架构有所不同,但大多数DPU都包含一个可编程的数据平面,以及用于控制平面和应用代码的CPU核心。与使用CPU核心相比,DPU的专用数据路径不仅更高效,而且性能显著提升。
如图所示,BlueField架构本质上将网卡子系统(基于ConnectX)与可编程数据路径、用于加密、压缩和正则表达式的硬件加速器,以及用于控制平面的Arm控制器融为一体。在BlueField-3中,包含16个核心的可编程包处理器能够处理多达256个线程,实现了在Arm核心上零负载的数据路径处理。在许多应用中,数据路径可以自主处理已知的网络流量,而Arm核心则负责处理新流量等异常情况及控制平面功能。
图2
尽管DPU具备显著的优势,但由于需要用户编写底层代码,其早期应用仅限于少数用户群体。为了解决这一限制,并推动独立软件供应商(ISV)、服务提供商和学术界更广泛地采用DPU,NVIDIA开发了DOCA(Data Center On A Chip Architecture)。
DOCA是一个由库文件、运行时组件和服务组成的框架,构建在一套经过验证的驱动程序之上。其中一些库与开源项目相关,而另一些则是NVIDIA独有的。正如CUDA为GPU编程提供了抽象化一样,DOCA为DPU编程提供了更高级别的抽象化。
图3
如上图所示,DOCA软件栈包括驱动程序、库、服务代理和参考应用。NVIDIA 提供的软件栈包含两部分内容,一部分是面向开发者的 DOCA SDK,另一部分是用于实现开箱即用部署的 DOCA Runtime 软件。
从软件栈上层看,流量网关库能够实现一个建立在数据路径 SFT 上的硬件加速网关,为过滤和分发网络流量的网关应用提供了更高级别的抽象化。在存储方面,DOCA 支持用户态库开源 SPDK。在 HPC 和 AI 方面,DOCA 初期加入了作为运行时组件的统一集合通信(UCC)库,在未来版本中还将加入 SDK 支持。
DOCA应用体验:
DNS过滤应用程序被设计为在BlueField-2 DPU实例上运行。DPU拦截来自网络的流量(入站流量),并根据流量分类来决定是将其传递给Arm处理器(根据列表类型过滤接收到的数据包),还是通过发夹转发到出口端口,整个系统设计如图4所示。
图4
DNS过滤器运行在DOCA Flow之上,用于对DNS请求进行分类。然后,它利用硬件正则表达式引擎,根据域名列表规则(编译后的正则表达式)查找匹配项。
图5
以下是DNS过滤应用程序的工作流程:
- 用户将正则表达式列表规则文件编译成
rof2.binary
文件。 - 正则表达式二进制规则文件被加载到正则表达式引擎中。
- 通过管道识别入站数据包类型,这些管道封装了流规则匹配模式和动作。
- DNS过滤应用程序为每个端口构建三个管道:DNS丢弃管道、DNS转发管道和发夹管道。除了丢弃管道外,每个管道只包含一个条目。丢弃管道在运行时包含许多条目,每个条目代表一个被丢弃的数据包。在应用程序初始化和配置之后,接受任何流量之前,管道是空的。
- 丢弃管道匹配已经被阻止的DNS数据包以丢弃它们。发夹管道匹配每个数据包(无遗漏)。丢弃管道作为根管道,DNS转发管道作为丢弃管道的转发未命中组件,发夹管道作为DNS转发管道的转发未命中组件。
操作流程:
1.解析应用程序参数。
doca_argp_init();
a).初始化arg解析器资源。
b).注册DOCA通用旗帜。
Register_dns_filter_params();
c).注册DNS过滤器应用程序标志。
doca_argp_start();
d).解析DPDK标志并调用rte_eal_init()函数。
e)解析应用程序标记。
2.DPDK初始化。
dpdk_init();
a).初始化DPDK端口,包括mempool分配。
b).如果需要,可以初始化发夹队列。
c).将每个端口的发夹队列绑定到其对等端口。
3.DNS过滤器初始化。
dns_filter_init();
a).DOCA流量和DOCA流量端口初始化。
b).为两个端口创建发夹管道。该管道包括一个与每种类型的数据包匹配的条目(无遗漏), 并通过发夹将其转发到出口端口。
c).为两个端口创建DNS转发管道。构建的管道有一个条目用于匹配DNS流量并将其 转发到Arm。此外,如果DNS条目不匹配(例如,对于每个非DNS包,包将被转发), 则使用hairpin管道进行转发。
d).创建掉包管道,作为两个端口的根管道。开始时,管道是空的。但随着应用程序的 运行,它会添加掉包的条目。此外,DNS转发管道用于转发,如果掉包管道条目不匹 配。
e).DOCA RegEx初始化。
f).用已编译的规则文件配置RegEx。
4.处理和过滤DNS包。
dns_worker_lcores_run()
a).Arm上接收到的所有数据包都是DNS数据包,而非DNS数 据包则通过使用允许 过滤DNS数据包的发夹转发到出口端口。
b).提取您所查询的DNS。
c).将DNS查询作为作业发送到RegEx引擎:
d).根据RegEx响应筛选DNS包。
e).如果需要,可通过向DNS删除管道添加条目来阻止数据包。
5.DNS过滤器被销毁。
dns filter destroy();
a).释放所有分配的资源。
b).释放提供所有DOCA RegEx资源。
6.Arg解析器销毁。
doca_argp_destroy()
a).释放DPDK资源。
具体步骤:DNS过滤器示例二进制文件位置/opt/mellanox/doca/applications/ dns_filter/bin/doca_dns_filter,
构建所有应用程序:
打开终端并导航到应用程序目录:
cd /opt/mellanox/doca/applications/
使用Meson构建系统进行配置:
meson build
使用Ninja构建所有应用程序:
ninja -C build
如果仅构建DNS过滤器应用程序:
编辑构建选项:/opt/mellanox/doca/applications/meson_option.txt。
将 enable_all_applications 设置为 false。
将 enable_dns_filter 设置为 true。
运行与步骤2相同的命令来配置和构建:
meson build
ninja -C build
注意:
构建成功后,doca_dns_filter二进制文件将创建在./build/dns_filter/src/目录下。
应用实例:
这里使用文本文件指定列表来添加url,并创建签名数据库将其添加到dpi引擎,使用dpdk库中的状态表模块可以识别分类入口数据流量。
图6
图7
现在让我们将此数据包从对端服务器发送到 DPU
图8
我们可以看到,DPU 已将数据包识别为匹配签名ID 1
图9
当尝试访问被阻止的 URL时,将会被识别和过滤流量,随后的数据包将被丢弃。主机完全不知道该过程并于此过程隔离。
图10
总结一下DNS过滤器应用程序的包处理流程:
- 每个接收到的数据包首先与丢弃管道进行匹配检查。如果匹配成功,则数据包被丢弃。
- 如果在丢弃管道中没有匹配(未命中),则数据包会被检查与DNS转发管道进行匹配。如果在DNS转发管道中匹配成功,数据包将被转发到处理器。
- 如果在DNS转发管道中仍然没有匹配(再次未命中),数据包将被转发到发夹管道进行匹配处理。
这种处理流程确保了数据包根据预定义的规则进行分类和处理,优化了DNS流量的管理和安全性。
相关文章:
DOCA介绍
本文分为两个部分: DOCA及BlueField介绍如何运行DOCA应用,这里以DNS_Filter为例子做大致介绍。 DOCA及BlueField介绍: 现代企业数据中心是软件定义的、完全可编程的基础设施,旨在服务于跨云、核心和边缘环境的高度分布式应用工作…...
Hadoop----高可用搭建
目录标题 **什么是高可用?****⭐搭建的步骤**一.jdk**安装配置**- **要点**: 二.zookeeper**集群配置**- **要点** 三.Hadoop高可用的搭建- **要点**①环境变量的配置②配置文件的修改 ③内容分发④集群任务的初次启动 什么是高可用? 通过冗余设计 自动…...
2023蓝帽杯初赛内存取证-1
获取关于内存镜像文件的基本信息: vol.py -f memdump.mem imageinfo 得知Image local date and time : 2023-06-21 01:02:27 0800 Image local date and time是本地时区(中国——东八区) 答案:2023-06-21 01:02:27...
算法之回溯法
回溯法 回溯法定义与概念核心思想回溯法的一般框架伪代码表示C语言实现框架 回溯法的优化技巧剪枝策略实现剪枝的C语言示例记忆化搜索 案例分析N皇后问题子集和问题全排列问题寻路问题 回溯法的可视化理解决策树状态空间树回溯过程 回溯法与其他算法的比较回溯法与动态规划的区…...
Linux 内核中 cgroup(控制组) 作用是什么?
cgroup(Control Groups) 是 Linux 内核提供的一种机制,用于对 进程(或线程)组 进行资源限制、优先级分配、统计监控和任务控制。通过将进程分组管理,可以实现对 CPU、内存、磁盘 I/O、网络等系统资源的精细…...
Relay IR的核心数据结构
在 Apache TVM 的 Relay IR 中,基础节点(Var、Const、Call、Function 和 Expr)是构建计算图的核心数据结构。以下是对它们的详细解析,包括定义、作用、内部组成及相互关系: 1. Expr(表达式基类)…...
【MCP Node.js SDK 全栈进阶指南】初级篇(4):MCP工具开发基础
在MCP(模型上下文协议)的生态系统中,工具(Tools)是一种强大的扩展机制,允许AI模型执行各种操作并获取结果。本文将深入探讨MCP TypeScript-SDK中的工具开发基础,包括工具定义与参数验证、Zod模式详解与高级用法、异步工具处理与错误管理以及工具调用与结果格式化。通过学…...
3Blue1Brown/videos - 数学视频生成代码库
本文翻译整理自:https://github.com/3b1b/videos 文章目录 一、关于本项目相关链接资源关键功能特性 二、注意事项三、工作流1、核心原理2、Sublime 专用配置 四、快捷键功能说明 一、关于本项目 本项目包含用于生成 3Blue1Brown 数学解说视频的代码。 相关链接资源…...
vue3 + element-plus中el-drawer抽屉滚动条回到顶部
el-drawer抽屉滚动条回到顶部 <script setup lang"ts" name"PerformanceLogQuery"> import { ref, nextTick } from "vue"; ...... // 详情 import { performanceLogQueryByIdService } from "/api/performanceLog"; const onD…...
【inlining failed in call to always_inline ‘_mm_aesenclast_si128’】
gcc编译错误:inlining failed in call to always_inline ‘_mm_aesenclast_si128’: target specific option mismatch 消除方法: 假如是GCC,则CFLAGS添加如下编译选项:-maes 假如是cmake,参加如下脚本: …...
DB-GPT支持mcp协议配置说明
简介 在 DB-GPT 中使用 MCP(Model Context Protocol)协议,主要通过配置 MCP 服务器和智能体协作实现外部工具集成与数据交互。 开启mcp服务,这里以网页抓取为例 npx -y supergateway --stdio "uvx mcp-server-fetch" …...
前端之勇闯DOM关
一、DOM简介 1.1什么是DOM 文档对象类型(Document Object Model,简称DOM),是W3C组织推荐的处理课扩展标记语言(HTML或者XML)的标准编程接口 W3C已经定义了一系列的DOM接口,通过这些DOM接口可…...
实现鼠标拖拽图片效果
我们需要一个图片 可以是你的女朋友 可以是男朋友 ,我就拿窝的偶像 一个大佬——>甘为例吧! 哈哈哈哈哈 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport&q…...
nodejs模块暴露数据的方式,和引入(导入方式)方式
在 Node.js 中,模块之间通过 模块导出(exports) 和 模块导入(require 或 ESModule 的 import) 来进行数据和功能的共享。下面我详细总结一下两种主要的模块系统: 一、CommonJS 模块(Node.js 默认…...
AXOP33552: 400MHz 高速双通道运算放大器
AXOP33552是一款通用型高速双通道运算放大器,产品的工作电压为2V至5.5V,具有400MHz的带宽,f0.1dB的带宽为 120MHz,单通道静态电流为10mA。产品特别对噪声和THD做了优化,其噪声为5nV/√Hz 1MHz,2次谐波为-85…...
Spring Boot日志配置
目录 logback 使用logback 获取日志对象 日志级别 控制日志输出级别 日志输出格式控制 配置方式 日志转存 示例 日志是应用程序不可或缺的一部分,记录着程序运行的信息。主要作用有: 记录日常运营的重要信息记录应用报错信息记录过程数据等…...
不可变数据:基于持久化数据结构的状态管理
不可变数据:基于持久化数据结构的状态管理 一、 什么是不可变数据? 不可变数据是指一旦创建就无法更改的数据。在计算机科学中,不可变数据结构是指其内容或状态不能被修改的数据结构。在不可变数据中,所有修改操作都会生成新的数据副本&#…...
PyTorch卷积层填充(Padding)与步幅(Stride)详解及代码示例
本文通过具体代码示例讲解PyTorch中卷积操作的填充(Padding)和步幅(Stride)对输出形状的影响,帮助读者掌握卷积层的参数配置技巧。 一、填充与步幅基础 填充(Padding):在输入数据边缘…...
C++手撕STL-其叁
Deque 今天我们进入新的容器:deque,一般叫做双端队列。 比起传统的先入先出的队列queue,deque的出场率显然要低得多,事实上deque比起queue来说最大的特点就是多了一个push_front()和pop_front(),其他并没有太多不同。…...
AI大模型-window系统CPU版安装anaconda以及paddle详细步骤-亲测有效
window系统CPU版安装anaconda以及paddle详细步骤-亲测有效 一 安装anaconda 下载地址:anaconda下载 下载成功后,选择非C盘安装,按提示安装即可修改镜像文件 安装成功后,运行anaconda软件,若提示更新则点击更新,更新完后,修改镜像文件 找到用户目录下的.condarc文件,覆…...
UML概览
🥰名片: 🐳作者简介:乐于分享知识的大二在校生 🌳本系列专栏: (点击直达)统一建模语言UML 🫣致读者:欢迎评论与私信,对于博客内容的疑问都会尽量回复哒!!! 本文序: ⛰️本文介绍&…...
影刀填写输入框(web) 时出错: Can not convert Array to String
环境: 影刀5.26.24 Win10专业版 问题描述: [错误来源]行12: 填写输入框(web) 执行 填写输入框(web) 时出错: Can not convert Array to String. 解决方案: 1. 检查变量内容 在填写输入框之前,打印BT和NR变量的值ÿ…...
LLMs可在2位精度下保持高准确率
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
C语言高频面试题——结构体和联合体区别
在 C 语言中,结构体(struct) 和 联合体(union) 是两种重要的复合数据类型,用于组织和管理多个相关的变量。尽管它们在语法上有些相似,但在内存布局、用途和行为上有显著的区别。以下是详细的对比…...
App爬虫工具篇-mitmproxy
mitmproxy 是一个支持 HTTP 和 HTTPS 的抓包程序,类似 Fiddler、Charles 的功能,它通过控制台的形式和ui界面的方式 此外,mitmproxy 还有两个关联组件,一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它可以对接 Python 脚本,实现监听后的处理;另一个是 mitmweb,它…...
配置openjdk调试环境
先决条件 首先在Ubuntu 18.04上编译SlowDebug版本的openjdk。注意,这里我选择的是x86处理器的电脑。苹果M系列属于ARM芯片,指令集不一样。由于我在苹果上进行垃圾回收调试的时候会报SIGILL错误。为了了解JVM的内部工作原理,不要在这种问题上…...
加油站小程序实战教程13充值规则配置
目录 1 创建数据源2 搭建管理功能最终效果 我们目前已经实现了会员的注册以及登录功能,有了基础的认证之后就进入到了业务部分的开发。会员的话首先是可以进行充值,在充值的时候通常会有一定的赠送,本篇我们来开发一下充值规则的配置功能。 1…...
jQuery — 总结
介绍 jQuery是一款高效、轻量级的JavaScript库,旨在简化网页开发中的常见任务。自2006年发布以来,它凭借直观的语法和强大的功能迅速成为前端开发的标配工具。其核心设计理念是“写更少,做更多”,通过封装复杂的原生JavaScript操作…...
【信息安全工程师备考笔记】第二章 网络信息安全概述
第二章 网络攻击原理与常用方法 2.1 网络攻击概述 概念:损害网络 系统安全属性 的危害行为 危害行为基本类型 信息泄露攻击(机密性)完整性破坏攻击(完整性)拒绝服务攻击(可用性)非法使用攻击…...
国家自然科学基金答辩ppt制作案例模板下载
国家自然科学基金 National Natural Science Foundation of China 支持基础研究,坚持自由探索,发挥导向作用,发现和培养科学技术人才,促进科学技术进步和经济社会协调发展,逐渐形成和发展了由研究项目、人才项目和环境…...
代码随想录第三十七天|华为秋季笔试真题230823
刷题小记: 主要偏向扎实编码基础的考察,但貌似近些年题目难度有所提高,仅供参考。 卡码网136.获取连通的相邻节点列表(卡码网136.获取连通的相邻节点列表) 题目分析: 题目描述: 存在N个转发…...
KUKA机器人KR 3 D1200 HM介绍
KUKA KR 3 D1200 HM是一款小型机器人,型号中HM代表“Hygienic Machine(卫生机械)用于主副食品行业”,也是一款并联机器人。用于执行高速、高精度的抓取任务。这款机器人采用食品级不锈钢设计,额定负载为3公斤ÿ…...
从零开始创建MCP Server实战指南
一、MCP协议核心概念 1.1 什么是MCP? MCP(Model Context Protocol) 是一个标准化的“沟通规则”,由公司Anthropic提出,专门用于让大语言模型(LLM,比如通义千问、ChatGPT等)与外部工…...
C语言教程(十二):C 语言数组详解
一、引言数组的基本概念 数组是一组具有相同数据类型的元素的集合,这些元素在内存中连续存储。通过一个统一的数组名和下标来访问数组中的每个元素。使用数组可以方便地处理大量相同类型的数据,避免为每个数据单独定义变量。 二、一维数组 2.1 数组的…...
Linux[基础指令][2]
Linux[基础指令][2] cp(复制) 格式:cp [-rf] 源文件 {普通文件,目录} 拷贝 cp -r 递归拷贝目录 蓝色为目录,白色为具体文件 拷贝后面加一个不存在的文件会新建文件再拷贝 cp -ir -i是覆盖的时候询问 如果目标文件存在就会覆盖原有文件 mv(重命名/剪切) 格式:mv 源文件…...
MySQL_MCP_Server_pro接入cherry_studio实现大模型操作数据库
大模型直接与数据库交互,实现基本增删改查操作。首先贴下代码地址: https://github.com/wenb1n-dev/mysql_mcp_server_pro 安装环境:win10 1、下载代码 git clone https://github.com/wenb1n-dev/mysql_mcp_server_pro 2、使用conda创建…...
linux命令集
命令 grep -r --includeAndroid.bp libcfs ./ 参数说明 选项/参数作用-r递归搜索子目录。--includeAndroid.bp仅搜索名为 Android.bp 的文件(精确匹配文件名)。libcfs要搜索的关键字(单引号包裹特殊字符如 以避免被 Shell 解析ÿ…...
数据结构:链表
链表的概念及结构: 链表的概念: 链表是一种物理储存结构上非连续的储存结构,数据元素的逻辑顺序是通过引用链接次序实现的 那物理存储结构连续是什么意思? 之前我们讲过顺序表,顺序表的底层是数组,如下…...
【高并发内存池】从零到一的项目之高并发内存池整体框架设计及thread cache设计
个人主页 : zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 前言1. 高并发内存池整体框架设计2. 高并发内存池--thread cache2.1 定长内存池的问题2.2 整体框架2.3 自由链表2.4 thread cache哈希桶的对齐规则2.5…...
电气动调节单座V型球阀带阀杆节流套沟槽孔板的作用-耀圣
电气动调节单座V球阀杆节流套是阀门中的一个重要组件,主要用于调节和控制流体介质的流量、压力或流速,同时兼具导向、密封和稳定阀杆运动降低流速减少冲刷的作用。以下是其具体功能和应用场景的详细说明: 1. 节流与流量控制** 作用原理**&am…...
vscode使用笔记
文章目录 安装快捷键 vscode是前端开发的一款利器。 安装 快捷键 ctrlp # 查找文件(和idea的双击shift不一样) ctrlshiftf # 搜索内容...
基于 SpringAI 整合 DeepSeek 模型实现 AI 聊天对话
目录 1、Ollama 的下载配置 与 DeepSeek 的本地部署流程 1.1 下载安装 Ollama 1.2 搜索模型并进行本地部署 2、基于 SpringAI 调用 Ollama 模型 2.1 基于OpenAI 的接口规范(其他模型基本遵循) 2.2 在 IDEA 中进行创建 SpringAI 项目并调用 DS 模型 3、基…...
Idea创建项目的搭建方式
目录 一、普通Java项目 二、普通JavaWeb项目 三、maven的JavaWeb项目 四、maven的Java项目 一、普通Java项目 1. 点击 Create New Project 2. 选择Java项目,选择JDK,点击Next 3. 输入项目名称(驼峰式命名法),可选…...
【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型
【MATLAB第115期】基于MATLAB的多元时间序列的ARIMAX的预测模型 一、简介 ARIMAX(Autoregressive Integrated Moving Average with eXogenous inputs)模型是一种结合自回归(AR)、差分(I)、移动平均&a…...
【以太网安全】——防护高级特性配置总结
目前网络中以太网技术的应用非常广泛、然后、各种网络攻击的纯在(例如针对ARP DHCP 等攻击)不仅造成了网络合法用户无法正常访问网络资源、而且对网络信息安全构成严重威胁、以下配置是对局域网安全配置命令做详解 主要的安全威胁 MAC攻击:泛洪、欺骗 …...
微信小程序 van-dropdown-menu
点击其他按钮,关闭van-dropdown-menu下拉框 DropdownMenu 引入页面使用index.wxmlindex.scssindex.ts(重点)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入组件 "usingComponents": {"van-dropdown-menu": "vant/weapp…...
再见 Smartdaili,你好 Decodo!
我们将翻开新的篇章,推出新的名称以及更好的代理和刮擦解决方案。了解我们如何帮助全球用户构建、测试和扩展他们的公共网络数据项目。 Smartproxy,即后来的Smartdaili,由一个行业专业人士和企业家团队于2018年创立,其使命是创建一…...
海量文本中的词语距离:在 O(n) 时间内找到最近的词对
想象一个巨大的日志文件、一部鸿篇巨著或者网络爬虫抓取的数据——它们可能达到 TB 级别。现在,假设你需要找出两个特定的词(比如 词语1 和 词语2)在这段庞大文本中出现时,彼此“靠得最近”的距离是多少。 挑战: …...
TextCNN 模型文本分类实战:深度学习在自然语言处理中的应用
在自然语言处理(NLP)领域,文本分类是研究最多且应用最广泛的任务之一。从情感分析到主题识别,文本分类技术在众多场景中都发挥着重要作用。最近,我参与了一次基于 TextCNN 模型的文本分类实验,从数据准备到…...
前台调用接口的方式及速率对比
一、引言 在现代 Web 开发中,前台与后台的数据交互至关重要,而调用接口是实现这一交互的关键手段。不同的接口调用方式在速率上可能存在差异,这会影响用户体验和应用性能。本文将详细介绍几种常见的前台调用接口方式,并对它们的速…...