第3章 数据划分与定位
静态/动态划分、数据定位、一致性哈希与 GFS。
下载本章 PDF3.1 为什么划分
1. 知识点论述
「3.1 为什么划分」是《分布式计算系统》数据划分部分的核心知识点。解决数据放在哪里、如何定位与扩容时如何少搬家的问题。本知识点首先把握:目的:集群变大时,容量和算力一起变大。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 目的:集群变大时,容量和算力一起变大。
- 目标:数据并行存储和处理,同时避免负载倾斜。
- 热点:某个键或某一段键被频繁访问,再好的划分也会打在同一分区上。
4. 应用场景
- 数据量与访问量随业务增长,必须按键/范围切分。
- 热点键识别与打散是容量规划的关键。
- 分库分表、对象存储分片都依赖划分策略。
3.2 静态划分
1. 知识点论述
「3.2 静态划分」是《分布式计算系统》数据划分部分的核心知识点。解决数据放在哪里、如何定位与扩容时如何少搬家的问题。本知识点首先把握:范围划分:一段连续键值一个分区,适合区间扫描,边界要事先算好。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 范围划分:一段连续键值一个分区,适合区间扫描,边界要事先算好。
- 哈希划分:用哈希把键打散,减轻热点,区间查询变贵。
- 其他:无分区、列表分区。
- 取模划分的问题:节点数一变,绝大多数键都要搬家。
4. 应用场景
- 范围划分适合区间扫描(如时间序列)。
- 哈希划分适合均匀随机访问。
- 避免简单取模,以免扩容时大规模迁移。
3.3 动态调整
1. 知识点论述
「3.3 动态调整」是《分布式计算系统》数据划分部分的核心知识点。解决数据放在哪里、如何定位与扩容时如何少搬家的问题。本知识点首先把握:数据规模变化后要重新划分并迁移。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 数据规模变化后要重新划分并迁移。
- 小分区作为迁移粒度:限定分区数量。;限定分区大小。;限定分区比例。
- 节点增减时搬的是小分区,而不是重算全部映射。
4. 应用场景
- 在线扩容:把小分区迁到新节点。
- 弹性云数据库按负载自动分裂/合并分区。
- 迁移粒度设计直接影响停机窗口与可用性。
3.4 数据定位
1. 知识点论述
「3.4 数据定位」是《分布式计算系统》数据划分部分的核心知识点。解决数据放在哪里、如何定位与扩容时如何少搬家的问题。本知识点首先把握:目标:快速找到数据所在节点,再读或写。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 目标:快速找到数据所在节点,再读或写。
- 元信息放在哪:分布式节点自己保存。;第三方目录。;客户端缓存。
4. 应用场景
- 客户端缓存目录降低 Master 压力。
- 元数据服务与数据路径分离(如 GFS Master)。
- 路由表下沉到 Proxy 或 SDK。
3.5 一致性哈希
1. 知识点论述
「3.5 一致性哈希」是《分布式计算系统》数据划分部分的核心知识点。解决数据放在哪里、如何定位与扩容时如何少搬家的问题。本知识点首先把握:节点和键都映射到环上,键顺时针找到第一个节点。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 节点和键都映射到环上,键顺时针找到第一个节点。
- 节点加入或退出时,只影响相邻区间,迁移量约为 1/N。
- 数据倾斜用虚拟节点缓解:一个物理节点在环上占多个位置。
4. 应用场景
- Redis Cluster、Cassandra、Memcached 等环状定位。
- CDN 或缓存层节点增减时减少失效。
- 虚拟节点缓解物理机性能不均。
3.6 GFS
1. 知识点论述
「3.6 GFS」是《分布式计算系统》数据划分部分的核心知识点。解决数据放在哪里、如何定位与扩容时如何少搬家的问题。本知识点首先把握:角色:客户端、Master、Chunk Server。文件切成块,块有多副本。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 角色:客户端、Master、Chunk Server。文件切成块,块有多副本。
- Master 保存文件名到块、块到服务器的元数据,不存用户数据本身。
- 读:客户端向 Master 要块位置,再选近端 Chunk Server 读取;失败则试其他副本。
- 写:租约指定一段时间内的主副本,主副本排定写顺序,副本按该顺序落地。
- 一致性:并发写可能 consistent but undefined,副本字节相同,但不是任何一次客户端写入的完整结果。
4. 应用场景
- 大规模日志、训练集、备份文件的分布式存放。
- 对象存储设计可对照 Master/Chunk 角色划分。
- 理解租约写顺序对并发写结果的影响。