从内核到分布式:补全存储系统的底层拼图
很多开发者在遇到高并发延迟或集群数据一致性问题时,往往卡在“知其然不知其所以然”的困境。这门课不教简单的 API 调用,而是聚焦于存储全栈技术的垂直深挖。它解决的核心痛点是:当你需要理解 NVMe 盘如何被用户态驱动高效访问、内核文件系统(如 FUSE)如何与用户态交互、以及分布式数据库(如 TiDB、Ceph)底层的数据复制与同步机制时,你缺乏一套连贯的技术视角。课程涵盖了从最底层的 io_uring 和 SPDK,到中间层的 RocksDB 和 ZeroFS,再到上层的 Ceph 和 TiDB 集群部署,试图帮你打通“硬件-内核-引擎-集群”这条链路。对于已经熟悉常规后端开发,但希望深入系统底层,或者准备转向基础架构、数据库内核方向的同学,这门课提供了难得的纵深练习机会。
学习路径建议:先打地基,再攻项目
资料包内容跨度极大,如果从头按视频编号看,容易在纯理论部分迷失。建议根据你的现有基础采取“跳跃式”学习策略。如果你是 Linux 系统编程新手,务必先攻克 io_uring 系列,理解用户态与内核态通信的边界,这是后续理解 SPDK 绕过内核阻塞优势的前提。接着重点观看 ZeroFS 的 partition layout 设计部分,这部分代码展示了如何直接操作 NVMe 的 LBA 和 NBlocks,是理解文件系统底层的硬核内容。对于有中间件经验的读者,可以直接跳到 RocksDB 的使用场景分析,对比其与 MySQL InnoDB 在 LSM 树实现上的差异。至于 Ceph 和 FastDFS 的部分,更偏向于运维部署和集群拓扑理解,建议在具备一定云原生背景后再看,重点关注其高可用架构和 Docker 环境下的安装差异,而非纯粹的脚本操作。
实战落地:你能独立构建什么
学完这门课,你不仅能在面试中讲清楚 TiDB 的 Replication 原理或 Ceph 的分布式集群部署流程,更重要的是具备了解析存储性能瓶颈的能力。你可以通过 SPDK 项目中的 POSIX API 实现部分,尝试编写一个基于 NVMe 的直接 I/O 工具,绕过传统页缓存来测试极限吞吐量;或者利用 RocksDB 的 Conf 文件配置和测试用例模块,为业务场景定制一个高性能的本地缓存层,解决内存不足时的抖动问题。资料中的视频是核心逻辑讲解,建议在观看 ZeroFS 和 SPDK 相关章节时,同步在虚拟机中搭建 Linux 环境,将视频中提到的 mkfs 实现代码手动复现一遍。不要只看不练,亲手修改 partition layout 代码并观察 NVMe 读写变化,是检验是否真正理解“自下而上”存储体系的最快方式。若缺乏硬件环境,可借助虚拟化软件模拟 NVMe 盘,重点调试内核模块与用户态程序的交互逻辑,确保自己能独立排查数据一致性与 I/O 延迟异常。
课程目录
📁 视频 039.【TiDB2】TiDB集群方案与Replication原理_.mp4 [238.5 MB] 038.【TiDB1】TiDB存储引擎的原理_.mp4 [237.8 MB] 037.【RockDB】不一样的kv存储RocksDB的使用场景_.mp4 [262.3 MB] 035.【ceph2】 docker安装ceph分布式存储系统(高可用)_.mp4 [235.6 MB] 036.【ceph3】分布式ceph存储集群部署_.mp4 [165.1 MB] 034.【ceph1】 内核级支持的分布式存储ceph_.mp4 [309.2 MB] 033.【fastdfs6】 产品上云公网发布测试用例_.mp4 [342.3 MB] 032.【fastdfs5】文件传输和接口设计_.mp4 [385.1 MB] 031.【fastdfs4】高负载nginxfastcgi_.mp4 [381.9 MB] 030.【fastdfs3】 fastdfs存储原理_.mp4 [353.3 MB] 028.【fastdfs1】fastdfs架构分析和配置_.mp4 [331.5 MB] 027.【KV项目-8】-kv存储测试用例与性能测试_.mp4 [190.2 MB] 029.【fastdfs2】FastDFS集群部署和同步机制分析_.mp4 [359.7 MB] 026.【KV项目-7】-为kv存储加上conf文件_.mp4 [232.4 MB] 024.【KV项目-5】btreehashmapradixtreerbtree之间的选择_.mp4 [272.8 MB] 025.【KV项目-6】-slab分配slot与释放slot_.mp4 [192.4 MB] 023.【KV项目-4】pagechunk的get与put_.mp4 [161.7 MB] 020.【KV项目-1】KV存储拆解 Set,Get,Mod,Del_.mp4 [284.0 MB] 022.【KV项目-3】kv service接口 set_get_modify_delete_.mp4 [192.7 MB] 021.【KV项目-2】bdev与blob对于kv存储的选择_.mp4 [264.3 MB] 019.【SPDK项目6】文件系统的性能测试(2)_.mp4 [195.2 MB] 018.【SPDK项目5】文件系统的性能测试(1)_.mp4 [148.0 MB] 017.【SPDK项目4】文件系统的posix api实现(2)_.mp4 [229.1 MB] 016.【SPDK项目3】文件系统的posix api实现(1)_.mp4 [175.9 MB] 015.【SPDK项目2】SPDK的工作原理与文件系统架构分析(2)_.mp4 [173.7 MB] 013.【fuse2】fuse协同事件 用户态文件系统(2)_.mp4 [289.8 MB] 014.【SPDK项目1】 SPDK的工作原理与文件系统架构分析(1)_.mp4 [155.7 MB] 011.【io_uring4】 io_uring的使用场景(2)_.mp4 [262.4 MB] 012.【fuse1】fuse协同事件 用户态文件系统(1)_.mp4 [203.1 MB] 010.【io_uring3】io_uring的使用场景(1)_.mp4 [153.3 MB] 009.【io_uring2】与epoll媲美的io_uring(2)_.mp4 [225.6 MB] 008.【io_uring1】与epoll媲美的io_uring(1)_.mp4 [161.8 MB] 007.【zerofs6】mkfs.zvvfs的partition layout完善与nvme读写_.mp4 [203.4 MB] 006.【zerofs5】mkfs.zvvfs实现partition layout的5步曲_.mp4 [185.5 MB] 005.【zerofs4】 文件系统partition layout设计与实现_.mp4 [167.2 MB] 004.【zerofs3】block_device对nvme的读写与sector大小代码实现_.mp4 [197.5 MB] 002.【zerofs1】文件系统需求分析与mkfs.zvvfs的两种实现方式_.mp4 [153.7 MB] 003.【zerofs2】nvme的lba与nblocks的重要性_.mp4 [151.1 MB] 001.存储课程技术点介绍视频_.mp4 [93.9 MB] 下载说明.txt [424.0 B]






