数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的。
三种常用的数据分片方式:
1. 哈希分片
2. 一致性哈希分片(Consistent Hash)
3. 按照数据范围分片(Range Based)
数据分片的应用场景:
1. 数据库扩展
2. 分布式缓存
对集群部署多个缓存节点,提高缓存的处理能力。采用缓存分片方法,把缓存的数据拆分到多个节点分别存储,减轻单个缓存节点的访问压力,达到分流效果。
3. 分布式文件系统
4. 分布式消息队列
5. 日志处理
哈希分片
哈希分片:hash(key)%服务器数量
按照数据的某一特征key来计算哈希值,通过对key进行hash运算,将哈希值与系统中的节点建立映射关系,使得数据分布到不同的节点上。通常是用哈希值与服务器数量进行取余,余数为key所映射的服务器索引,余数相同的放在同一个节点上。
假设有3台服务器(服务器编号为0、1、2),key经过哈希运算得到的值为10,执行hash(key)%3,结果为1,表示该key映射到服务器1上。
哈希分片的优点