附件:分布式存储知识地图
附件:分布式存储知识地图
根据笔者日常工作听到的、实际用到的高频技术总结而成一副知识地图/技能地图。
这张地图,也是我们 “分布式存储漫游指南” 的世界地图。
注:笔者委托画师朋友手工绘制这个地图。请大家尽情享受最后这几年人工创作的日子吧!
*手工绘制不断更新中,您可以在此链接获取高清电子版。
🗺️ The Map of Distributed Storage
1. 物理层与硬件 (Physical & Hardware)
这是所有数据的最终归宿,物理特性的限制决定了上层软件的设计。
存储介质
- HDD: 机械臂寻道 (Seek latency), 顺序写优势, SMR (叠瓦式) vs CMR。
- SSD: NAND Flash, FTL (闪存转换层), 写入放大 (Write Amplification), GC (垃圾回收)。
- New Tech: NVMe/ZNS (分区块存储), PMEM (持久内存), Open-Channel SSD。
网络硬件
- NIC (网卡), Switch (交换机), RDMA (InfiniBand/RoCE)。
2. Linux 内核与 OS 技能 (Linux Kernel & OS)
这是存储开发者必须深耕的领域,理解 OS 才能榨干硬件性能。
内存管理 (Memory)
- Page Cache: Buffered I/O 的核心,脏页回写 (Writeback), pdflush。
- NUMA: 非一致性内存访问,跨 Socket 访问的性能陷阱 (CPU Affinity/Binding)。
- Allocators: tcmalloc / jemalloc (减少内存碎片和锁竞争)。
并发与调度
- Context Switches: 上下文切换的成本(自旋锁 vs 互斥锁)。
- Thread Model: 用户态线程 (Goroutine) vs 内核级线程。
观测与旁路
- eBPF: 现代内核无侵入观测神技。
- Kernel Bypass: SPDK, DPDK (绕过内核直接操作硬件,极致减低延迟)。
3. 本地 I/O 栈 (Local I/O Stack)
数据从用户态内存流向物理介质的必经之路。
VFS (虚拟文件系统)
- Inode / Dentry: 文件句柄与元数据查找过程(海量小文件的性能瓶颈)。
- Filesystems: Ext4 (日志机制), XFS (大文件并行性能), Btrfs/ZFS (CoW, 快照, 校验和)。
I/O 模式
- Buffered I/O: 标准
read/write(依赖 Page Cache)。 - Direct I/O:
O_DIRECT, 绕过 Page Cache(数据库/自研引擎常用)。 - Memory Mapped: mmap (Zero-copy read)。
高性能/异步接口
- io_uring: (现代高性能标准) Submission/Completion Queue, Polling mode。
- Linux AIO: (旧时代的异步接口,限制较多)。
4. 单机存储引擎 (Local Storage Engine)
如何在一个节点上高效地组织数据。关键机制 WAL 和 Checkpoint 归位于此。
数据结构
- LSM-Tree: (RocksDB/LevelDB) 适合写多读少,涉及 Compaction, Bloom Filter。
- B+ Tree: (MySQL/BoltDB) 适合读多写少,涉及 Page Split, B-Tree 变体。
- Log-Structured: (Bitcask) Append-only, Hash Index。
可靠性维持机制 (Durability)
- WAL (Write-Ahead Log): 顺序写盘保平安,所有状态变更先写日志,Crash Recovery 的基础。
- Checkpoint / Snapshot: 定期将内存状态持久化,缩短故障恢复时间,常结合 CoW 技术。
5. 分布式理论与协调 (Theory & Coordination)
让一堆不可靠的机器像一台机器一样工作。
一致性 (Consistency)
- Consistency Models: Linearizability (线性一致性), Sequential, Eventual (最终一致性)。
- 理论基石: CAP 定理, BASE, PACELC (延迟与一致性的权衡)。
共识算法 (Consensus)
- Paxos: 分布式共识的基石。
- Raft: 工业界最流行的实现(Etcd, TiKV)。
- ZAB: Zookeeper 使用的原子广播协议。
时钟、顺序与检测
- Clock: Logical Clocks (Lamport, Vector Clocks), TrueTime (原子钟)。
- Coordination: Failure Detection (心跳检测), Lease (租约机制防止脑裂), Phi Accrual Detector。
- Leader Election: 选主机制。
6. 数据分布与元数据 (Distribution & Metadata)
决定数据切分到哪里,以及如何保证不丢。
分片策略 (Sharding)
- Partitioning: Range Sharding (按范围), Hash Sharding。
- Consistent Hashing: (一致性哈希 & 虚拟节点) 解决节点增减时的数据迁移问题。
冗余策略 (Redundancy)
- Replication: Multi-Raft, Chain Replication, Primary-Backup。
- Erasure Coding (EC): RS Codes, LRC (局部重构码,降低跨机柜修复带宽)。
元数据管理
- Management: Centralized (HDFS NameNode), Decentralized (DHT/Kademlia), Federation。
7. 架构形态 (Architecture & API)
用户看到的系统形态与访问协议。
接口形态
- Block (块存储): Ceph, OpenEBS。
- File (文件存储): NFS, CephFS, JuiceFS (符合 POSIX 标准)。
- Object (对象存储): S3 API (事实标准), MinIO。
系统架构演进
- Shared-Nothing: 传统分布式架构。
- Disaggregated Storage (存算分离): 云原生大趋势,计算层无状态,存储层独立扩展。
8. 工程化与可靠性 (Engineering & Reliability)
开发者的工具箱,确保系统在混沌的环境中依然正确。
正确性验证
- Formal Methods: TLA+ (形式化验证复杂算法逻辑)。
- Testing: Jepsen Test (分布式一致性黑盒测试)。
混沌工程与观测
- Chaos Engineering: Fault Injection (故障注入), Chaos Mesh。
- Observability: Distributed Tracing (OpenTelemetry), Tail Latency Analysis (P99/P999 延迟分析)。