当前位置: 首页 > 科技观察

分布式存储系统DHT算法改进

时间:2023-03-21 18:12:47 科技观察

1.概述通常,分布式存储系统和分布式缓存系统习惯于使用分布式哈希(DHT)算法来实现数据分区分配(路由)和负载均衡。普通的分布式哈希算法通过增加虚拟节点来划分物理热点区域,将负载分散到其他节点上,从而达到负载均衡的状态,但这并不能保证集群的负载一定很均衡。一种改进的一致性哈希算法,即具有边界因素的一致性哈希算法,严格控制各节点的负载,以获得更好的负载均衡效果[1][2]。2、普通的DHT算法假设有8个Object。通过下图的DHT算法:object0,1,2映射到虚拟节点vNode0:object0,1,2-->vNode0Object3,4,5映射到vNode1:object3,4,5-->vNode1Object6映射到vNode2:object6-->vNode2Object7映射到vNodeN:object7-->vNodeN很明显,vnode0和vNode1都有3个object,而vNode2和vNodeN都只丢了1个object,并且这里DHT算法的债务平衡因子不是很好。3、带负载边界因子的DHT算法假设有8个Object。通过DHTwithboundedloads算法如下图所示:第一轮映射:对象0,1,2需要映射到虚拟节点vNode0,但是vNode0的权重因子为2,所以只有对象0,1-->vNode0完成,对象2无法映射到节点vNode0;object3,4,5需要映射到虚拟节点vNode1:但是vNode1的权重因子为2,所以只完成object3,4-->vNode1,object5无法映射到节点vNode1;Object6映射到vNode2:object6-->vNode2Object7映射到vNodeN:object7-->vNodeN第二轮映射:Object2映射到vNode1,但是vNode1Weightfactor=0,收不到,继续到下一个节点,发现vNode2的权重因子为2,剩下的权重因子为1,可以映射,所以object2-->vNode2Object5映射到vNode2,但是vNode2的当前权重因子=0,接收不到,继续下一个节点,发现vNodeN的权重因子为2,剩下的权重因子为1,可以映射,所以对象5的最终映射结果-->vNodeN是object0,1映射到虚拟节点vNode0:object0,1-->vNode0Object3,4映射到vNode1:object3,4-->vNode1Object2,6映射到vNode2:object2,6-->vNode2Object5,7映射到vNodeN:object5,7-->vNodeN很明显,Vnode0,vNode1,vNode2,vNodeN的每个节点被分成了2个对象。显然,带负载边界因素的DHT算法的债务平衡优于普通DHT算法。这些节点的负载因子可以通过IO、CPU、MEM、Disk、Network等输入因子计算得出。参考文献[1]https://research.googleblog.com/2017/04/consistent-hashing-with-bounded-loads.html[2]https://medium.com/vimeo-engineering-blog/improving-load-平衡新的一致性哈希算法9f1bd75709ed