哈希方式
常见哈希方式:(用户id) % (机器(组)数)= 分配到0~(机器(组)数-1)上
优点:只要哈希函数的散列特性较好,哈希方式可以较为均匀的将数据分布到集群中去。
缺点:
①可扩展性不高,一旦集群规模需要扩展,则几乎所有的数据需要被迁移并重新分布。
②一旦某数据特征值的数据严重不均,容易出现“数据倾斜”(data skew)问题。
解决方式:
①扩展哈希分布的数据系统时,要成倍的扩展,按照数据重新计算哈希,这样原本一台机器上的数据只需迁移一半到另一台对应的机器上即可完成扩展。
②将对应关系作为元数据,由专门的元数据服务器管理。将哈希值取模的值大于机器的数量,这样同一台机器上需要负责多个哈希取模的余数。在集群扩容时,将部分余数分配到新加的机器并迁移对应的数据到新机器上。
③重新选择需要哈希的数据特征
按数据范围分布
将数据按特征值的值域范围划分为不同的区间,使得集群中每台(组)服务器处理不同区间的数据。
常见分布方式:已知某系统中用户 id 的值域范围是[1,100),集群有 3 台服务器,使用按数据范围划分数据的数据分布方式。将用户 id 的值域分为三个区间[1, 33),[33, 90),[90, 100)分别由 3 台服务器负责处理。
优点:
<