名字想费脑的坤宝
发布于 2026-07-20 / 0 阅读
0
0

读《数据密集型应用系统设计》:复制与分区

《Designing Data-Intensive Applications》读了第二遍,这次记录第五章和第六章的要点。

复制:单主、多主、无主

单主复制最简单,写全部走主节点,问题在于主节点故障后的切换。多主适合多区域写入,代价是冲突处理。无主复制(Dynamo 风格)用 quorum 读写,听起来灵活,实际运维复杂度最高。

一致性模型那里有个很实用的结论:「读到自己刚写的数据」是用户最容易感知的一致性,很多系统只需要保证这一点,不必追求线性一致。

分区:范围 vs 哈希

按 key 范围分区利于范围查询,但容易热点;哈希分区均匀,范围扫描就废了。实践里常见的是复合键:(用户ID, 时间戳) 这样既均匀又能做单用户的时间范围查询。

二级索引的代价

本地索引写入快、查询要 scatter/gather;全局索引查询快、写入要跨分区分发。选哪种取决于读写比例。

一句话总结

分布式的每一个"更好",都是用另一个维度的复杂度换来的。搞清楚自己在换什么,比记住名词重要得多。


评论