纠删码
Reed–Solomon。
Rustorage 是一个单节点的 S3 兼容对象存储,用 Rust 从零写成。
Reed–Solomon。
所有盘属于一个 erasure set。
桶与对象的增删查列。
每份分片带一个 keyed BLAKE3 校验和。
数据先落到 .staging-* 临时名。
健康检查、就绪探针、Prometheus 指标。
这三件事是真正花了心思的地方。
同样是 6 块盘。
read_quorum = N − parity
每份分片带校验和。
换来的是单向的可用性收益。
一次写入分三步。
而且写路径是逐块流式的。
四张图,讲清对象放在哪。
桶就是一个目录。
请求体被逐块切分。
4+2 布局下读 quorum 是 4。
同一个 64 MiB 对象上的 GET bytes=0-99。
两根横条按真实比例绘制。
下面每个数字都来自仓库里的基准。
| 机制 | 结果 | 说明 |
|---|---|---|
| 范围读少读的字节 | 100 676 742 → 1 573 056 | 64× |
| 同 key 重复 HEAD 的磁盘调用 | 12 000 → 0 | 缓存命中即零磁盘 IO |
| 分页列举的目录遍历 | 11 430 → 7 230 | −37% |
| 单次 PUT 内复用分片缓冲 | 256 → 16 次显式扩容 | 16× |
当一次列举必须扫完整个桶时。
计数是主证据,墙钟是佐证。
有边界的 MVP 比没有边界的半成品可信。
没有日期。