数据分片方式脑图
数据分布设计原则
在分布式数据存储系统中,存储方案选型时,通常会考虑数据均匀、数据稳定和节点异构性这三个维度。
数据均匀
每个节点存储的数据相差不太大即可
数据稳定
当存储节点出现故障需要移除或者扩增时,数据按照分布规则得到的结果应该尽量保持稳定,不要出现大范围的数据迁移。
数据稳定,就是尽可能只迁移移除节点上的数据到其他节点上,而不需要对大范围或所有数据进行迁移存储。当然,如果有扩展同类型节点,也是尽可能小范围迁移数据到扩展的节点上。具体的迁移方法,可以采用下文介绍的一致性哈希方法。
节点异构性
不同存储节点的硬件配置可能差别很大。比如,有的节点硬件配
置很高,可以存储大量数据,也可以承受更多的请求;但,有的节点硬件配置就不怎么样,
存储的数据量不能过多,用户访问也不能过多。
如果这种差别很大的节点,分到的数据量、用户访问量都差不多,本质就是一种不均衡。所
以,一个好的数据分布算法应该考虑节点异构性
隔离故障域
是为了保证数据的可用和可靠性。比如,我们通常通过备份来实现数据的可靠性。但如果每个数据及它的备份,被分布到了同一块硬盘或节点上,就有点违背备份的初衷了。所以,一个好的数据分布算法,应该为每个数据映射一组存储节点,这些节点应该尽量在不同的故障域,比如不同机房、不同机架等。
性能稳定性
是指,数据存储和查询的效率要有保证,不能因为节点的添加或者移除,造成存
储或访问性能的严重下降。
了解了数据分布的设计原则后,接下来我们再看看主流的数据分布式方法,哈希和一致性哈
希吧。其中,哈希和一致性哈希是数据分布的基础方法,在不同场景下,数据分布设计的原
则需要考虑的维度也不一样。随着维度的增加,一致性哈希又可进一步演进为带有限负载的
一致性哈希和带虚拟节点的一致性哈希方法。
数据分布方法
哈希是指,将数据按照提前规定好的函数(哈希函数)映射到相应的存储节点,即进行一个
哈希计算,得到的结果就是数据应该存储的节点。
一致性哈希同样是采用哈希函数,进行两步哈希:1. 对存储节点进行哈希计算&#x