这个算法的问题在于,一个实际存储节点的参加或退出,会影响多个虚拟节点的从新分派,进而影响很多节点介入到数据迁徙中来;别的,实践中将一个虚拟节点从新分派给新的实际节点时须要将这部分数据遍历出来发送给新节点。我们须要一个跟合适的虚拟节点切分和分派方法,那就是分片。
5,分片
分片将哈希环切割为雷同大年夜小的分片,然后将这些分片交给不合的节点负责。留意这里跟膳绫擎提到的虚拟节点有着很本质的差别,分片的划分和分片的分派被解耦,一个节点退出时,其所负责的分片并不须要顺时针归并给之后节点,而是可以更灵活的将全部分片作为一个整体交给随便率性节点,实践中,一个分片多作为最小的数据迁徙和备份单位。
6,CRUSH算法
CRUSH算法本质上也是一种分片的数据分布方法,其试图在以下几个方面进行优化:
分片映射信息量:避免中间目次办事和存储节点及客户端之间须要交互大年夜量的分片映射信息,而改由存储节点或客户端本身根据少量且稳定的集群节点拓扑和肯定的规矩本身计算分片映射。
完美的故障域划分:支撑层级的故障域控制,将同一分片的不合副本按照设备划分到不合层级的故障域中。
客户端或存储节点应用key、存储节点的拓扑构造和分派算法,自力进行分片地位的计算,获得一组负责对应分片及副本的存储地位。如下图所示是一次定位的过程,最终选择了一个记下row下的cab21,cab23,cab24三个机柜下的三个存储节点。
当节点变更时,因为节点拓扑的变更,会影响少量分片数据进行迁徙,如下图新节点参加是引起的数据迁徙,经由过程优胜的分派算法,可以获得很好的负载均衡和稳定性。
应用
常见的存储体系大年夜多采取类似与分片的数据分布和定位方法。Dynamo及Cassandra采取分片的方法并经由过程gossip在对等节点间同步;Redis Cluster将key space划分为slots,同样应用gossip通信;Zeppelin将数据分片为Partition,经由过程Meta集群供给中间目次办事;Bigtable将数据切割为Tablet,类似于可变的分片,Tablet Server可以进行分片的切割,最终分片信息记录在Chubby中;Ceph采取CRUSH方法,由中间集群Monitor保护并供给集群拓扑的变更。
【编辑推荐】
- 分布式高并发缓存设计体系
- 高容量的硬盘驱动器仍是存储技巧的将来
- 海量非构造数据存储技巧路线选型:对象存储与块存储、文件存储等比较
- 大年夜一块硬盘坏了正儿八经地进修全套存储常识
- 2017年存储业界的10大年夜动态
推荐阅读
玩脱了,Firefox停止推送引发争议的Mr. Robot扩展
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 近日,Mozilla 向 Firefox 用户推送了一个名为 Looking Glass 的浏览器扩大插件,这个插件其实是 Mozilla 和 Mr. Robot(黑客军团>>>详细阅读
本文标题:浅谈分布式存储系统数据分布方法
地址:http://www.17bianji.com/lsqh/39872.html
1/2 1