分布式存储技术:数据分布与数据复制( 二 )


分布式存储技术:数据分布与数据复制


哈希分布
为了解决顺序分布的问题,我们引入了哈希分布 。哈希分布首先需要确定一个哈希函数,通过计算,将数据存储到响应的节点 。
如果我们有4个节点,分别为节点1,节点2,节点3,节点4,ID的范围为[1,100],ID1{id : 1},ID2{id : 2},ID3{id : 3}……ID99{id : 99},ID100{id : 100},哈希分布会对现有的哈希函数进行计算,id%4(存储节点个数)结果为1存储到节点1,id%4结果为2存储到节点2,id%4结果为3存储到节点3,id%4结果为0存储到节点4,依次进行计算 。哈希分布很好的解决了数据合理分布的问题,同时可以让所有的节点同时参与工作 。但是哈希计算也有缺点,那就是稳定性相对较差 。如果此时增加了一个节点5呢,这时候有5个节点,需要将之前存储到4个节点的数据重新进行计算,分配到这5个节点上 。
分布式存储技术:数据分布与数据复制


一致性哈希分布
针对于顺序分布的的单节点工作与哈希分布的不稳定性,这里和大家介绍另一种分布——一致性哈希分布 。一致性哈希是一个环形结构,将哈希函数映射到哈希环上,数据通常通过顺时针方向寻找的方式 。同样就哈希分布的那个例子进行讨论 。有节点1,节点2,节点3,节点4这四个节点,ID的范围为1-100,ID1{id : 1},ID2{id : 2},ID3{id : 3}……ID99{id : 99},ID100{id : 100} 。id为1-25是会存储到节点1,id为26-50会存储到节点2,id为51-75会存储到节点3,id为76-100会存储到节点4 。如果这时候在id为56的后面增加一个节点5,那么,id为51-56会存储到节点5,57-75依旧存储到节点3,其它几个节点的数据不需要改变 。如果删除一个节点呢?现在我们删除一个节点2,那么节点2存储的数据会按照顺时针方向,将数据存储到节点3上面 。
分布式存储技术:数据分布与数据复制


以上介绍的三种分布方式各有优、缺点,可以根据实际的需要选择最合适的分布方式 。
数据复制
数据复制技术,可以保证存储在不同节点上的同一份数据是一致的 。这样当一个节点发生故障后,可以从其他存储该数据的节点获取数据,避免数据丢失,进而提高了系统的可靠性 。
1.根据数据复制的一致性分类
根据数据一致性和可用性可以将数据复制分为三大类:同步复制:可以保证主库与同库的数据为最新的数据,但是一旦从库没有响应,主库就无法就行数据的写入 。(主库负责接收客户端的写入命令,再将数据写入从库;从库主要负责客户端数据的读取)
【分布式存储技术:数据分布与数据复制】异步复制:即使从库落后,主库依旧可以正常写入,但是主库失效,未复制到从库的数据会丢失 。
半同步复制:一个从库是同步,其它的从库未异步,保证主库和同步从库为最新数据 。
2.根据数据复制的变更算法分类
同时根据数据的变更算法可以分为基于节点的复制与无节点复制两类 。基于节点的复制
基于节点的复制也称“主从”复制,分为单主复制与多主复制 。
单主复制:客户端将数据写入命令发送给单个领导节点,领导节点接收命令,再将数据写入跟随节点 。
分布式存储技术:数据分布与数据复制


多主复制:客户端将数据写入命令发送给多个领导节点,领导节点接收命令,再将数据写入跟随节点 。
分布式存储技术:数据分布与数据复制

推荐阅读