Hash分片

Hash分片

Content #

Hash 分片,就是按照数据记录中指定关键字的 Hash 值将数据记录映射到不同的分片中。我画了一张图来表示 Hash 分片的过程。

图中的表格部分显示了一个社交网站的记录表,包括主键、用户 ID、分享内容和分享时间等字段。假设以用户 ID 作为关键字进行分片,系统会通过一个 Hash 函数计算用户 ID 的 Hash 值而后取模,分配到对应的分片。模为 4 的原因是系统一共有四个节点,每个节点作为一个分片。

因为 Hash 计算会过滤掉数据原有的业务特性,所以可以保证数据非常均匀地分布到多个分片上,这是 Hash 分片最大的优势,而且它的实现也很简洁。但示例中采用的分片方法直接用节点数作为模,如果系统节点数量变动,模也随之改变,数据就要重新 Hash 计算,从而带来大规模的数据迁移。显然,这种方式对于扩展性是非常不友好的。

Viewpoints #

From #

06 | 分片机制:为什么说Range是更好的分片策略?