深度解析:大模型在多显卡服务器下的通信机制与分布式训练——以DeepSeek、Ollama和vLLM为例
一、引言:大模型与多显卡的必然结合
随着大模型参数规模突破千亿级(如GPT-4、DeepSeek),单显卡的显存容量与算力已无法满足需求。多显卡并行计算成为训练与推理的核心技术,其核心挑战在于高效通信与负载均衡。本文以国产大模型DeepSeek为例,结合Ollama与vLLM推理引擎,深度剖析多显卡协同工作的技术实现,并通过代码示例、性能数据与架构图展示完整解决方案。
二、多显卡通信机制:从数据并行到混合并行
1. 数据并行(Data Parallelism)
-
核心思想:将训练数据划分为多个批次,每个显卡持有完整的模型副本,独立计算梯度后同步更新。
-
通信模式:
- Ring AllReduce:通过环形拓扑分两步聚合梯度(Scatter-Reduce + AllGather),带宽利用率达理论峰值的 2 ( N − 1 ) / N 2(N-1)/N 2(N−1)/N倍(N为显卡数)。
术语解释
梯度(Gradient)
- 在机器学习中,梯度是衡量损失函数变化率的量,它指导着模型参数的更新方向,从而帮助模型找到最小化损失的最佳参数配置。
AllReduce操作
- 当多台计算机共同训练一个模型时,AllReduce用于将所有计算机上的局部梯度合并为一个全局梯度,并确保每个节点都拥有这个全局梯度。
- 例如,如果有4台计算机,每台计算机都有一个数值,AllReduce会将这些数值相加,然后将总和发送回每台计算机。
环形拓扑与Ring AllReduce过程
环形拓扑简介
- 这是一种网络结构,其中每台计算机仅与其相邻的两台计算机相连,形成一个闭合的环路。
Ring AllReduce流程
- Scatter-Reduce阶段:从某个起始节点开始,梯度信息逐个传递并累加。
- AllGather阶段:最终得到的全局梯度被分发回所有节点。
提高带宽利用率
通过上述过程,Ring AllReduce不仅实现了高效的梯度同步,还显著提升了带宽利用率。具体来说,利用公式 ( \frac{2(N - 1)}{N} ) (( N ) 表示节点数量),我们可以计算出相对于理论最大值的实际效率提升比例。
举个栗子
假设我们有4台计算机参与训练,根据上述公式,带宽利用率能达到1.5倍的理想状态。这意味着相较于传统方法,Ring AllReduce能在相同时间内传输更多的数据量,极大地加快了训练速度。
-
DeepSeek-7B示例:
# PyTorch DistributedDataParallel(DDP)完整配置 import torch import torch.distributed as dist from torch.nn.parallel import DistributedDataParallel as DDPdef main():dist.init_process_group("nccl")rank = dist.get_rank()device = torch.device(f"cuda:{rank}")model = DeepSeek7B().to(device)model = DDP(model, device_ids=[rank])optimizer = torch.optim.Adam(model.parameters())# 数据加载器需配合DistributedSamplerdataset = MyDataset()sampler = DistributedSampler(dataset)loader = DataLoader(dataset, batch_size=64, sampler=sampler)for batch in loader:inputs = batch.to(device)outputs = model(inputs)loss = compute_loss(outputs)loss.backward()optimizer.step()if __name__ == "__main__":main()
2. 模型并行(Model Parallelism)
- 张量并行(Tensor Parallelism):
将矩阵运算按维度拆分,例如对线性层 Y = X W Y = XW Y=XW,将权重矩阵 W W W按列切分到多卡,每卡计算部分结果后拼接。# DeepSpeed张量并行配置(以DeepSeek-16B为例) from deepspeed.runtime.pipe.engine import PipelineEngine engine = PipelineEngine(model=deepseek_model,config=deepspeed_config,tensor_parallel_size=4, # 4卡张量并行pipeline_parallel_size=2 # 2卡流水线并行 )
- 专家并行(Expert Parallelism):
MoE模型中,每个专家(Expert)分配到不同显卡。以DeepSeek-MoE-16B(16专家)为例:# DeepSeek-MoE的专家分片策略 class MoELayer(nn.Module):def __init__(self, num_experts=16):super().__init__()self.experts = nn.ModuleList([Expert().to(f"cuda:{i % 4}") # 4卡均匀分配专家for i in range(num_experts)])def forward(self, x):# 动态路由逻辑gate_scores = compute_gate(x)selected_experts = topk(gate_scores, k=2)outputs = []for expert_idx in selected_experts:expert = self.experts[expert_idx]outputs.append(expert(x.to(expert.device)))return sum(outputs)
3. 混合并行(Hybrid Parallelism)
- DeepSeek的混合策略:
在4096卡集群中组合三种并行模式:- 数据并行:全局批次大小=1024,每组256卡。
- 张量并行:每组内4卡拆分模型层。
- 流水线并行:跨组拆分模型层为8个阶段。
- 通信优化:
使用NCCL的IB_HCA=mlx5
参数启用InfiniBand RDMA,降低跨节点通信延迟。
三、分布式训练技术:性能瓶颈与优化
1. 性能分析工具
- Nsight Systems:
生成时间线视图,定位通信与计算的重叠区域。nsys profile -o report.qdrep python train.py
- DeepSpeed Flops Profiler:
统计每层的浮点运算量与通信耗时。from deepspeed.profiling.flops_profiler import get_model_profile flops, macs, params = get_model_profile(model, input_shape=(1, 1024))
2. 通信优化实践
- 梯度压缩:
使用FP16混合精度训练,通信量减少50%。# PyTorch AMP自动混合精度 scaler = GradScaler() with autocast():outputs = model(inputs)loss = compute_loss(outputs) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update()
- 计算与通信重叠:
在反向传播时异步发送梯度。with model.no_sync(): # 仅限DDP模式loss.backward() # 延迟同步
四、推理引擎对比:Ollama与vLLM的深度解析
1. Ollama的多显卡实现
- 架构设计:
- 性能瓶颈:
单请求无法跨卡加速,适合高并发但低延时不敏感场景。
2. vLLM的高吞吐秘密
- PagedAttention实现:
将KV Cache划分为固定大小的页(如4MB),动态分配显存。# vLLM的KV Cache分页管理 from vllm import LLMEngine engine = LLMEngine(model="deepseek-16b",tensor_parallel_size=4, # 4卡张量并行block_size=64, # 每页存储64个tokengpu_memory_utilization=0.9 # 显存利用率达90% )
- 连续批处理(Continuous Batching):
动态合并多个请求的注意力计算图,GPU利用率提升至80%以上。
3. 实测性能对比
场景 | Ollama(A100×4) | vLLM(A100×4) |
---|---|---|
单请求延迟(1K tokens) | 120ms | 75ms |
吞吐量(QPS) | 850 | 3200 |
显存占用(16B模型) | 32GB | 24GB |
扩展效率(1→4卡) | 2.8x | 3.6x |
五、未来方向:硬件与软件的协同进化
1. 通信硬件创新
- NVSwitch 3.0:
支持18块GPU全互联,双向带宽提升至900GB/s。 - CXL 3.0内存池化:
允许GPU通过CXL协议共享CPU内存,突破显存容量限制。
2. 软件栈优化
- 编译优化:
使用MLIR统一中间表示,自动生成张量并行代码。# 使用IREE编译器优化模型 iree-compile --iree-hal-target-backends=cuda model.mlir -o compiled.vmfb
- 自适应并行策略:
DeepSeek的自动切分工具根据模型结构选择最优并行方案。
六、总结:多显卡方案的选型指南
1. 训练场景
- 中小模型(<10B):数据并行(PyTorch DDP),代码简单且扩展高效。
- 超大模型(>100B):混合并行(DeepSpeed + Megatron-LM),需精细调优通信策略。
2. 推理场景
- 高并发API服务:Ollama任务级并行,快速扩展实例数。
- 低延迟实时推理:vLLM张量并行 + PagedAttention,最大化硬件利用率。
3. 硬件选型建议
需求 | 推荐配置 |
---|---|
低成本训练 | 8×RTX 4090(NVLink桥接) |
高性能推理 | 4×A100 80GB(NVSwitch互联) |
超大规模训练 | 华为昇腾910集群 + 200G IB网络 |
附录
- DeepSeek开源代码库
- vLLM官方文档
- NVIDIA Nsight工具指南
相关文章:
深度解析:大模型在多显卡服务器下的通信机制与分布式训练——以DeepSeek、Ollama和vLLM为例
一、引言:大模型与多显卡的必然结合 随着大模型参数规模突破千亿级(如GPT-4、DeepSeek),单显卡的显存容量与算力已无法满足需求。多显卡并行计算成为训练与推理的核心技术,其核心挑战在于高效通信与负载均衡。本文以国…...
爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用
网址:豆瓣电影 Top 250 本案例所需要的模块 requests (用于发送HTTP请求)re (用于字符串匹配和操作) 确定需要爬取的数据 : 电影的名称电影的年份电影的评分电影评论人数 一. 发送请求 模拟浏览器向服务器发送请求 准备工作 -分析页面: F12 or 右击点击检查 查看…...
【R安装包报错】在conda环境下用R语言命令安装R包报错
报错如下: gnu/include/c/11.2.0/ctime:80:11: error: ‘timespec_get’ has not been declared in ‘::’ 80 | using ::timespec_get; | ^~~~~~~~~~~~ 修改 报错原因:如果使用的是conda安装的g,可能与系统库不兼容。尝试 切换到系统默认编…...
基于STM32单片机设计的宠物喂食监控系统
1. 项目开发背景 随着宠物数量的增加,尤其是人们对宠物的养护需求日益增多,传统的人工喂养和管理方式难以满足现代养宠生活的需求。人们越来越希望通过智能化手段提高宠物养护的质量和效率,特别是对于宠物喂食、饮水、温湿度控制等方面的智能…...
Minio分布式多节点多驱动器集群部署
Minio分布式多节点多驱动器集群部署 Minio分布式多节点多驱动器集群部署节点规划先决条件开放防火墙端口设置主机名更新域名映射文件时间同步存储要求内存要求 增加虚拟机磁盘(所有机器都要执行)部署分布式 MinIO测试上传与预览测试高可用MinIO 配置限制模拟单节点磁盘故障模拟…...
Web前端开发——HTML基础
本系列博客声明,根据本人所学书籍和网上的一些资料共同磨合,写下web前端系列的博客 HTML基础 一、HTML基本概述[^1]二、HTML大体认知1.HTML基本结构2.HTML 语法格式 三、THML常用标记[^2]1.文本标记(1)标题(2…...
《计算机视觉》——图像拼接
图像拼接 图像拼接是将多幅有重叠区域的图像合并成一幅全景或更大视角图像的技术,以下为你详细介绍: 原理:图像拼接的核心原理是基于图像之间的特征匹配。首先,从每幅图像中提取独特的特征点,如角点、边缘点等&#x…...
zookeeper从入门到精通
一、入门基础 1.1 什么是 ZooKeeper ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,后成为 Apache 的顶级项目。它为分布式应用提供了高效、可靠的协调服务,例如统一命名服务、配置管理、分布式锁、集群管理等。ZooKeeper 的数据模型类…...
2.2 添加注释
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 注释是为了方便理解代码含义而添加的简短的解释性说明。在编译时,编辑器不会将注释加入最终生成的文件中,不…...
具有快慢思考的语言调节机器人操作
24年1月来自华东师范大学、美的集团和上海大学的论文“Language-Conditioned Robotic Manipulation with Fast and Slow Thinking”。 语言调节机器人操作,旨在将自然语言指令转化为可执行动作,从简单的“拾取和放置”到需要意图识别和视觉推理的任务。…...
美颜相机1.0
项目开发步骤 1 界面开发 美颜相机界面构成: 标题 尺寸 关闭方式 位置 可视化 2 创建主函数调用界面方法 3 添加两个面板 一个是按钮面板一个是图片面板 用JPanel 4 添加按钮到按钮面吧【注意:此时要用初始化按钮面板的方法initBtnPanel 并且将按钮添…...
Css3重点知识讲解
选择器 优先级: id 选择器 > 类选择器 > 标签选择器 类选择器: .myClass {color: blue; }id 选择器(全局唯一): #myId {color: green; }标签选择器: p {color: red; }层次选择器: /…...
[Web 安全] Web 安全攻防 - 学习手册
关联专栏:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:Web 安全攻防 —— 信息收集篇 Web 信息收集 — 手动收集域名信息 Web 信息收集 — 手动收集 IP 信息 Web 信息收集 — 端口服务信息收集 Web 信息收集 — 自动化信息收集 — ShuiZe 水泽 We…...
nextjs的记录一些小东西
1. 格式化时间:使用date-fns库 npm install date-fns 在组建中创建date.js import { parseISO, format } from date-fnsexport default function Date({ dateString }) {const date parseISO(dateString)return <time dateTime{dateString}>{format(date,…...
故障诊断 | PID搜索算法优化CatBoost故障诊断(MatlabPython)
目录 效果一览文章概述故障诊断 | PID搜索算法优化CatBoost故障诊断(Matlab&Python)PID搜索算法优化CatBoost故障诊断PID搜索算法优化CatBoost故障诊断一、引言1.1、研究背景与意义1.2、研究现状1.3、研究目的与内容二、CatBoost算法概述2.1、CatBoost算法原理2.2、CatBo…...
探索关键领域的AI工具:机器学习、深度学习、计算机视觉与自然语言处理
引言 在人工智能(AI)迅猛发展的今天,机器学习(ML)、深度学习(DL)、计算机视觉(CV)和自然语言处理(NLP)已经成为解决复杂问题的关键技术。无论是自动驾驶车辆的视觉识别,还是智能助手的对话理解,这些技术都在改变着世界。本文将介绍在各个领域…...
使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流
在现代工作与学习中,可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本,结合 Typora 快速生成流程图和甘特图,并通过 Markdown 格式生成思维导图,最终…...
11、集合框架
一、简介 Java集合框架位于java.util包中 Collection是Set和List的父类,Collections是工具类,提供了对集合进行排序、遍历等多种算法的实现。 ArrayList: 有序(放进去顺序和拿出来顺序一致),可重复 HashSet: 无序(放进去顺序和拿出来顺序不…...
从入门到精通Rust:资源库整理
今天给大家分享一些优质的Rust语言学习资源,适合不同水平的学习者。前三个官方资源是我Rust语言的启蒙老师,非常平易近人。 官方资源 The Rust Programming Language (The Book) 链接: https://doc.rust-lang.org/book/ 简介: 官方权威指南,…...
Spring Boot 项目启动命令大全:参数详解与高阶用法
Spring Boot 项目启动命令大全:参数详解与高阶用法 一、基础启动命令 默认启动命令 java -jar xxx.jar适用场景:开发环境快速启动,使用默认配置(端口 8080,内存由 JVM 自动分配)。 指定 JVM 内存参数 java…...
c++day4
作业 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory>using namespace std; class S{ private:int a;int b; public:S(i…...
应对LLM应用中的AI幻觉,如何通过Token对数概率预测LLM的可靠性
应对LLM应用中的AI幻觉 如何通过Token对数概率预测LLM的可靠性 内容: 1. 相关机器学习(ML)概念回顾(精准度/召回率,LLM直觉) 2. 使用序列对数概率度量作为LLM信心 3. 通过案例研究结果过滤低质量LLM输出…...
Openwrt路由器操作系统
一、什么是 OpenWrt? OpenWrt 是一个基于 Linux 的开源操作系统,主要设计用于嵌入式设备,尤其是路由器。与其说是传统的路由器固件,不如说它是一个路由器操作系统。 传统的路由器固件通常由路由器厂商开发,功能相对固…...
基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“流浪动物救助系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…...
Ansible 学习笔记
这里写自定义目录标题 基本架构文件结构安装查看版本 Ansible 配置相关文件主机清单写法 基本架构 Ansible 是基于Python实现的,默认使用22端口, 文件结构 安装 查看用什么语言写的用一下命令 查看版本 Ansible 配置相关文件 主机清单写法...
(六)趣学设计模式 之 代理模式!
目录 一、啥是代理模式?二、为什么要用代理模式?三、代理模式的实现方式1. 静态代理2. JDK动态代理3. CGLIB动态代理 四、三种代理的对比五、代理模式的优缺点六、代理模式的应用场景七、总结 🌟我的其他文章也讲解的比较有趣😁&a…...
【CSS】HTML元素布局基础总结
HTML默认布局和元素显示 CSS 元素显示 { HTML 默认布局: 流式布局 { 从左到右,从上到下 随页面宽度变化动态排列元素 文档流:整个 H T M L 文档的流式布局 HTML 元素分为 { 块级元素 :默认占满一行 行内元素 :在行内最…...
【JavaScript】什么是JavaScript?以及常见的概念
作为 JavaScript 初学者,想要更好地理解这门语言,需要从核心概念、实践练习和项目实战三个方面入手。下面是详细的学习路线和方法,帮助你系统性地掌握 JavaScript。 一、理解 JavaScript 的核心概念 JavaScript 是一门动态、弱类型的编程语言…...
为什么要将PDF转换为CSV?CSV是Excel吗?
在企业和数据管理的日常工作中,PDF文件和CSV文件承担着各自的任务。PDF通常用于传输和展示静态的文档,而CSV因其简洁、易操作的特性,广泛应用于数据存储和交换。如果需要从PDF中提取、分析或处理数据,转换为CSV格式可能是一个高效…...
P1038 [NOIP 2003 提高组] 神经网络
题目描述 在兰兰的模型中,神经网络就是一张有向图,图中的节点称为神经元,而且两个神经元之间至多有一条边相连,下图是一个神经元的例子: 神经元(编号为 i) 图中,X1∼X3 是信息…...
TypeScript 类型断言的适用场景及代码示例
类型断言的适用场景及代码示例 适用场景 类型断言就像是你很确定某个东西是什么,然后直接告诉 TypeScript 编译器“相信我,它就是这个类型”。以下是几种常见的适用场景: 从 any 类型恢复具体类型:当你使用 any 类型时…...
Docker 容器
Docker 是一种开源的容器化平台,可以让开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后部署到任何支持 Docker 的环境中。Docker 的基本概念包括以下几点: 1. **容器(Container)**:容器是一个独立、轻量级的运行环境…...
Spark(3)vi的基本使用
一.打开与创建文件 二.三种模式 三. 光标操作 四.复制粘贴 一.打开与创建文件 它是linux的内置命令,所以还是以命令的方式来运行。 命令的格式是:Vi /路径/文件名。要注意如下两种情况: 1.如果这个文件不存在,此时就是新建文…...
element-ui的组件使用
1. 安装 Element UI(在文件夹最上面输入cmd进入dos窗口,然后输入安装指令 npm install element-ui --save) 2.在main.js文件全局引入(main.js文件负责 全局注册 ),在该文件注册的所有组件在其他文件都能直接调用,一般…...
Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用
滑模控制(Sliding Mode Control)算法详解 一、基本原理 滑模控制(Sliding Mode Control, SMC)是一种变结构控制方法,通过设计一个滑模面(Sliding Surface),迫使系统状态在有限时间内…...
《深度剖析Linux 系统 Shell 核心用法与原理_666》
1. 管道符的用法 查找当前目录下所有txt文件并统计行数 # 使用管道符将ls命令的结果传递给wc命令进行行数统计 ls *.txt | wc -l 在/etc目录下查找包含"network"的文件并统计数量 # 使用find命令查找文件,并通过grep查找包含特定字符串的文件…...
51单片机学习之旅——定时器
打开软件 1与其它等于其它,0与其它等于0 1或其它等于1,0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作,高四位保持,低四位清零,高四位定时器1,低四位定时器0 TMODTMOD|0x01;//0x010000 0…...
超详细介绍map(multimap)的使用
map类的介绍 map的声明如下,Key是map底层关键字的类型,T是map底层value的类型。set默认要求Key支持小于比较,如果不支持或者需要的情况下我们可以自行传入仿函数,map底层存储数据的内存是从空间申请来的。一般情况下,我…...
原生稀疏注意力NSA 替换transformer 注意力进行文本生成训练
DeepSeek-R1这篇文章,聚焦范围更加小,R1的重点在于提出了一个文本生成的训练策略和蒸馏策略,这篇文章则是提出了一个注意力机制NSA,主要解决的是长序列做注意力时带来的效率问题。通篇文章看下来,它的实际意义可能比较…...
读书笔记:《百年孤独》
《百年孤独》加西亚.马尔克斯 著 范晔 译 读出了阅读障碍。 记不得书中的人,记不得书中的事,更不知何为孤独,只记得马孔多,这个陌生的地方,还有那个猪尾巴婴儿。 百年:故事跨越了百年 孤独&#…...
TVS管学习记录
文章目录 前言一、TVS是什么?二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景:通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…...
网络安全系统概述 网络安全系统分为几级
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 5级 网络信息系统安全等级保护分为五级,一级防护水平最低,最高等保为五级。分别是用户自主保护级、系统审计保护级、安全标记保护级、结构…...
基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 😃,生活加油 我站在人潮中央,思考这日日重复的生活。我突然想,…...
Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制
Apache Flink是一个分布式流处理框架,其核心架构设计围绕有界与无界数据流的统一处理能力展开。以下从任务分配、算子数据同步、TaskManager与JobManager的TaskSlot机制三个维度展开详细分析: 一、任务分配机制 Flink的任务分配基于并行度(P…...
Linux 常见命令全解析
一、文件操作命令 1. ls ls是列出目录内容的命令。简单输入ls,会展示当前目录下的文件和目录列表。想要获取更详细的信息,比如文件权限、所有者、大小、修改时间等,使用ls -l。若要显示所有文件,包括以点(.ÿ…...
k8s集群部署
集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…...
springboot005学生心理咨询评估系统(源码+数据库+文档)
源码地址:学生心理咨询评估系统 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表(含论文)后台运行截图 1.项目简介 使用旧方法对学生心理咨询评估信息进行系统化管理已经不再让人们信赖了,把现…...
LeetCode37
LeetCode37 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结...
2025年02月24日Github流行趋势
项目名称:mastra 项目地址url:https://github.com/mastra-ai/mastra 项目语言:TypeScript 历史star数:5735 今日star数:1140 项目维护者:adeleke5140, abhiaiyer91, TheIsrael1, adeniyii, Joshuafolorunsh…...
Spring Boot 中的日志管理
一、日志框架选择 1. 主流框架对比 框架特点Spring Boot 默认支持Logback- 性能优异,Spring Boot 默认集成- 支持自动热更新配置文件✅ (默认)Log4j2- 异步日志性能更强- 支持插件扩展- 防范漏洞能力更好❌ (需手动配置)JUL (JDK自带)- 无需额外依赖- 功能简单&am…...