一种数据节点的随机分配方法及系统的制作方法

文档序号:9249240阅读:387来源:国知局
一种数据节点的随机分配方法及系统的制作方法
【技术领域】
[0001] 本发明涉及云存储技术领域,尤其涉及一种数据节点的随机分配方法及系统。
【背景技术】
[0002] 传统的分布式文件系统随机分配数据节点有两种分配模式;轮询模式和虚拟节点 模式。轮询模式在批量申请节点的情况下,导致数据被固定的分配在相邻的数据节点上,成 为性能瓶颈。虚拟节点模式,一般是采用一致性哈希,它的优点是在增加/删除数据节点时 系统震荡较小,但一致性哈希函数是一个随机性的函数,在存储节点量少的情况下容易造 成数据分配不均匀。
[0003] 具体的,轮询模式是分布式存储系统为了达到极限压测性能的一种常用方式, 实现简单,效率高。客户机向元数据服务器申请一个或多个连续的数据节点,直连数据 节点进行相应的读写操作。在各个同构数据节点被分配次数相等的情况下,数据容量 理应也是均衡的。因此采用轮询模式,分配具有很高的实时性和均衡性。然而,基于纠 删码巧rasureCode,EC)算法的分布式文件系统,一个对象通常会被切割成m份,通过 计算得到n份。m+n份数据被分配到连续的数据节点上,导致单个数据节点k与周围 比-(m+n-l),k+(m+n-l)]个数据节点存在强关联性。当数据节点k下线或者若机时,数据 节点k的磁盘数据恢复时需要从m台节点读取数据,通过EC算法计算得到。该样的设计使 得周围比-(m+n-l),k+(m+n-l)]数据节点成为频繁被读取的对象,不论是内存,中央处理 器CPU,还是网络带宽都将成为该部分节点在数据恢复时的性能瓶颈。
[0004] 虚拟节点模式也是分布式存储系统常用的一种数据分配方式,物理数据节点被抽 象为虚拟的数据节点,依据一致性哈希算法,均匀的分布在哈希环中。相对于轮询,有着数 据被均匀打散的特性,不存在数据热点的问题,但能否达到数据的均匀分布取决于随机算 法的实现。虚拟节点模式,其实是一种一致性哈希的算法实现,并且加入了虚化物理数据节 点的思想。用数学方法产生的随机数列是根据特定的算法推算出来,严格来说并不是随机 的。由于是用算法产生的,因而本质上是决定性的,再加上计算机字长有限,所W无论用什 么算法产生的数列,在统计特征上都不可能完全与均匀分布一致。
[0005] 综上,现有技术并没有既能实现数据节点的随机分配又能保证分配概率更加均衡 的方法。

【发明内容】

[0006] 本发明实施例提供了数据节点的随机分配方法及系统,用W实现数据节点的概率 更加均衡的随机分配。
[0007] 本发明实施例提供的一种数据节点的随机分配方法,包括:
[0008] 当确定需要进行数据节点分配时,按照预设规则,在由数据节点标识组成的分配 表中确定本次需要分配的数据节点标识;
[0009] 将本次需要分配的数据节点标识所对应的数据节点进行分配;
[0010] 其中,所述分配表包括多行数据节点标识,每一行中的多个数据节点标识是随机 分布的,任意两行中的数据节点标识的分布不同;
[0011] 所述预设规则包括;相邻两次从所述分配表的不同行中确定需要分配的数据节点 标识。
[0012] 本发明实施例提供的数据节点的随机分配方法,通过设置由数据节点标识组成的 分配表,该分配表中包括多行数据节点标识,每一行中的多个数据节点标识是随机分布的, 任意两行中的数据节点标识的分布不同;在分配时,相邻两次从所述分配表的不同行中确 定需要分配的数据节点标识,从而实现了数据节点的概率更加均衡的随机分配。
[0013] 较佳的,确定需要进行数据节点分配,可W是接收到客户端发送的申请数据节点 的请求的情况,也可W是系统需要对若机的数据节点进行数据恢复时而申请数据节点的情 况。
[0014] 较佳的,所述按照预设规则,在由数据节点标识组成的分配表中确定本次需要分 配的数据节点标识,包括:
[0015] 根据当前分配表所对应的数据节点的累计分配次数,确定当前分配表中本次需要 分配的数据节点标识所在的行;
[0016] 在当前分配表中本次需要分配的数据节点标识所在的行中,根据本次需要分配的 数据节点数量,确定本次需要分配的数据节点标识。
[0017] 较佳的,所述根据当前分配表所对应的数据节点的累计分配次数,确定当前分配 表中本次需要分配的数据节点标识所在的行,包括:
[0018] 将当前分配表所对应的数据节点的累计分配次数除W分配表的行数求余,根据所 得余数确定当前分配表中本次需要分配的数据节点标识所在的行。
[0019] 较佳的,在当前分配表中本次需要分配的数据节点标识所在的行中,根据本次需 要分配的数据节点数量,确定本次需要分配的数据节点标识,包括:
[0020] 在当前分配表中本次需要分配的数据节点标识所在的行中,根据该行中上一次被 分配的数据节点标识的位置,W及本次需要分配的数据节点数量,确定本次需要分配的数 据节点标识。
[0021] 较佳的,该方法还包括:
[0022] 接收至少一个数据节点的也跳信息;
[0023] 根据数据节点的也跳信息,判断当前数据节点的数量是否有变化;
[0024] 若有,则更新分配表;若没有,则保持当前分配表不变。
[00巧]本发明实施例还提供了一种数据节点的随机分配系统,该系统包括:
[0026] 确定模块,用于当确定需要进行数据节点分配时,按照预设规则,在由数据节点标 识组成的分配表中确定本次需要分配的数据节点标识;
[0027] 分配模块,用于将本次需要分配的数据节点标识所对应的数据节点进行分配;
[0028] 其中,所述分配表包括多行数据节点标识,每一行中的多个数据节点标识是随机 分布的,任意两行中的数据节点标识的分布不同;
[0029] 所述预设规则包括;相邻两次从所述分配表的不同行中确定需要分配的数据节点 标识。
[0030] 本发明实施例提供的数据节点的随机分配系统,通过设置由数据节点标识组成的 分配表,该分配表中包括多行数据节点标识,每一行中的多个数据节点标识是随机分布的, 任意两行中的数据节点标识的分布不同;在分配时,相邻两次从所述分配表的不同行中确 定需要分配的数据节点标识,从而实现了数据节点的概率更加均衡的随机分配。
[0031] 较佳的,确定需要进行数据节点分配,可W是接收到客户端发送的申请数据节点 的请求的情况,也可W是系统需要对若机的数据节点进行数据恢复时而申请数据节点的情 况。
[0032] 较佳的,所述确定模块具体用于:
[0033] 根据当前分配表所对应的数据节点的累计分配次数,确定当前分配表中本次需要 分配的数据节点标识所在的行;
[0034] 在当前分配表中本次需要分配的数据节点标识所在的行中,根据本次需要分配的 数据节点数量,确定本次需要分配的数据节点标识。
[0035] 较佳的,所述确定模块在所述根据当前分配表所对应的数据节点的累计分配次 数,确定当前分配表中本次需要分配的数据节点标识所在的行时,具体用于:
[0036] 将当前分配表所对应的数据节点的累计分配次数除W分配表的行数求余,根据所 得余数确定当前分配表中本次需要分配的数据节点标识所在的行。
[0037] 较佳的,所述确定模块在当前分配表中本次需要分配的数据节点标识所在的行 中,根据本次需要
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1