Q先生的世界

面朝大海,春暖花开

经典存储对比|LMDB 与 BoltDB:它们如何利用 mmap,以及为什么一个更偏 COW、一个更强调页式事务

两者都爱 mmap,但真正决定气质差异的,不是 mmap 本身,而是它们如何组织提交、回收和读写视图

系统对比 LMDB 与 BoltDB 的核心设计,重点分析它们如何利用 mmap、怎样组织读写事务、为何都依赖 copy-on-write 却呈现出不同工程气质,以及各自的优势、代价与适用场景。

经典系统排障|FUSE 调试与排障:getattr 风暴、缓存、并发、权限与 macOS/Linux 差异

FUSE 真正难的地方通常不是把 demo 跑起来,而是为什么它跑起来以后和你想得完全不一样

围绕 Go FUSE 文件系统的真实调试问题,系统拆解 getattr 风暴、缓存语义、并发访问、权限模型以及 macOS/Linux 差异,并给出可执行的排障思路。

经典系统实践|把 Go 文件系统接到 FUSE:真正挂载起来,并走通 ls/cat/touch 全链路

当 toy filesystem 真能被 mount 以后,inode、目录项和路径查找就不再只是你代码里的概念了

在最小 Go 文件系统和 WAL 续篇的基础上,继续通过 FUSE 把文件系统真正挂载起来,讲清 syscall、FUSE 回调和本地存储引擎之间的完整链路,并演示 ls、cat、touch 的工作流。

经典系统实践|给 Go 文件系统加上最小 WAL / Journal:事务边界、Redo Log 与崩溃恢复

一旦一个逻辑操作要修改多个物理位置,日志几乎就是迟早的事

在前一篇最小 Go 文件系统的基础上,继续实现一版最小可理解 WAL / journal,讲清事务边界、日志格式、commit 语义、恢复流程与 Go 代码骨架。

经典系统实践|用 Go 实现一个最小可理解文件系统:Superblock、inode、Bitmap 与目录树

不要一上来就盯 ext4,先自己写一个能 mount 到脑子里的最小文件系统

从对象存储研发工程师视角,用 Go 实现一个最小可理解文件系统,系统讲清 superblock、inode、bitmap、directory、path walk、write path 与崩溃一致性。

经典系统深度解析|从对象存储研发工程师视角看文件系统:VFS、Page Cache、Journal 与崩溃一致性

对象存储并没有绕开文件系统,它只是把最关键的语义压力都压到了文件系统上

从对象存储研发工程师的视角,系统性拆解 Linux 文件系统中的 VFS、inode、page cache、extent、journal、fsync、rename 与崩溃一致性,并给出源码路径与伪代码。

经典算法深度解析|纠删码(架构选型篇):什么时候该用三副本、RS、LRC,什么时候根本不该上 EC

真正成熟的选型,不是先问哪种码更高级,而是先问你的 workload 和组织能力到底配不配

从架构选型视角系统分析三副本、Reed-Solomon 和 LRC 的适用边界,讨论何时该用何种冗余方案,以及哪些场景根本不应该上 EC。

经典算法深度解析|纠删码(案例排障篇):repair 打满网络、degraded read 尾延迟飙升与 partial write 放大

纸面上能恢复,不等于线上不会出事故;真正麻烦的是故障期间系统会怎样失控

围绕四类典型线上问题拆解 EC 排障:repair 打满网络、degraded read 尾延迟飙升、同故障域共置、partial write 放大,分析症状、误判、根因与缓解手段。

经典算法深度解析|纠删码(性能篇):benchmark、NUMA、线程模型与 repair 限流

EC 真正的性能问题,往往不是单个核函数快不快,而是整条数据路径会不会被自己拖垮

从性能工程视角拆解 EC 的真实瓶颈:benchmark 设计、热点定位、NUMA、线程模型、批处理粒度、内存带宽、degraded read 与 repair 限流。

经典算法深度解析|纠删码(源码篇):最小 RS encoder/decoder 与 read-modify-write 伪代码

从公式走到代码,真正重要的是数据流、矩阵流和更新流怎么接起来

用最小可理解模型拆解 Reed-Solomon 的编码、解码和 partial write 更新路径,给出伪代码级别的 encoder、decoder、矩阵构造与 read-modify-write 流程。