一种数据节点的分配方法及系统技术方案

技术编号:12177729 阅读:57 留言:0更新日期:2015-10-08 15:34
本发明专利技术公开了一种数据节点的分配方法及系统,用以在云存储系统中进行数据节点分配时,实现快速的达到容量均衡。本发明专利技术提供的一种数据节点的分配方法,包括:接收至少一个数据节点上报的心跳信息;根据每一数据节点的心跳信息,更新预先建立的可用队列的数据节点的负载信息和不可用队列的数据节点的负载信息;当满足预设条件时,确定该可用队列的负载列表和剩余容量列表和不可用队列的负载列表;当可用队列的最大负载大于不可用队列的最小负载时,将可用队列中剩余容量最小的数据节点移入不可用队列,将不可用队列中负载最小的数据节点移入可用队列;当接收到客户端发送的申请数据节点的请求时,在当前可用队列中为该客户端分配数据节点。

【技术实现步骤摘要】

本专利技术涉及云存储
,尤其涉及一种数据节点的分配方法及系统
技术介绍
分布式存储系统作为一种商业系统,核心是管理海量存储资源,提供高速、稳定、 线性扩展的服务。分布式存储系统常用的负载分配方法主要是节点信息权重法,节点信息 权重法的实现流程如下: 通过实时采集各个数据节点的负载信息(中央处理器CPU负载,内存负载,网络输 入输出负载),通过一定的权重算法,例如:负载load=x*A+y*B+z*C,其中A为CPU的当前 负载,B为当前内存的当前负载,C为当前网络输入输出的当前负载,x、y和z为权重因子, 且x+y+z= 1 ;通过该计算方式计算出各个数据节点的负载信息,选出负载最轻的多个数据 节点分配出去。目前,节点信息权重法被作为分布式存储系统中的一种主流的动态负载分配方 式,但该方法也存在一些不足: 分配方式取决于节点负载,对于新加入的数据节点,瞬间会被压到高负载,在后面 的所有时间,后加入的节点和先加入的节点是一致对待的,而先加入的节点已经被使用一 段时间,已经占有一定的磁盘容量,后面加入的节点和原有节点一致对待,导致先加入的节 点容量始终大于后加入的节点的容量,因此容量一直是不均衡的,这对于需要快速达到容 量均衡的分布式存储系统来说是不能接受的。 因此,现有技术中,如何快速协调数据节点的容量和负载一直是分布式存储系统 的设计难点。
技术实现思路
本专利技术实施例提供了数据节点的分配方法,用以在云存储系统中进行数据节点分 配时,实现快速的达到容量均衡。 本专利技术实施例提供的一种数据节点的分配方法,包括: 接收至少一个数据节点上报的心跳信息,其中每一数据节点的心跳信息包括该数 据节点的标识信息和负载信息; 根据每一数据节点的心跳信息,更新预先建立的可用队列的数据节点的负载信息 和不可用队列的数据节点的负载信息; 当满足预设条件时,根据当前可用队列的每一数据节点的负载信息,确定该可用 队列的负载列表和剩余容量列表;根据当前不可用队列的每一数据节点的负载信息,确定 该不可用队列的负载列表; 当可用队列中负载最大的数据节点的负载大于不可用队列中负载最小的数据节 点的负载时,将可用队列中剩余容量最小的数据节点移入不可用队列,将不可用队列中负 载最小的数据节点移入可用队列; 当接收到客户端发送的申请数据节点的请求时,在当前可用队列中为该客户端分 配数据节点。 需要说明的是,当接收到客户端发送的申请数据节点的请求时,在当前可用队列 中为该客户端分配数据节点,是指元数据中心接收到客户端发送的申请数据节点的请求 时,就在当前的可用队列中为该客户端分配数据节点。该过程是随时都可能发生的,不受上 述步骤的顺序的限制。 采用本专利技术实施例提供的上述方法,采用预先建立的可用队列和不可用队列,有 利于数据节点的平滑分配,提供更为稳定的吞吐量,再将可用队列中剩余容量最小的数据 节点移入不可用队列,将不可用队列中负载最小的数据节点移入可用队列,从而能够实现 快速的达到容量均衡。 较佳的,所述根据每一数据节点的心跳信息,更新预先建立的可用队列的数据节 点的负载信息和不可用队列的数据节点的负载信息,包括: 根据每一数据节点的标识信息,判断该数据节点是否属于预先建立的可用队列; 若该数据节点不属于可用队列,则判断该数据节点是否属于预先建立的不可用队 列; 若该数据节点属于可用队列,则根据该数据节点的负载信息更新可用队列中该数 据节点的负载信息; 若该数据节点不属于可用队列也不属于不可用队列,则将该数据节点加入可用队 列中,并更新可用队列中该数据节点的负载信息; 若该数据节点属于不可用队列,则根据该数据节点的负载信息更新不可用队列中 该数据节点的负载信息。 在本专利技术中,当接收到一个新的数据节点的心跳信息时,由于该数据节点是新上 线的,因此将该数据节点默认为低负荷,而将其加入可用队列。 较佳的, 在更新预先建立可用队列的数据节点的负载信息和不可用队列的数据节点的负 载信息之后,该方法还包括: 根据当前可用队列的每一数据节点的负载信息和不可用队列的每一数据节点的 负载信息,更新可用队列的数据节点的数量占当前数据节点总数的比例; 所述当满足预设条件时,根据当前可用队列的每一数据节点的负载信息,确定该 可用队列的负载列表和剩余容量列表;根据当前不可用队列的每一数据节点的负载信息, 确定该不可用队列的负载列表,包括: 当满足预设条件时,判断可用队列的数据节点的数量占当前数据节点总数的比例 是否有变化,如果是,则根据当前可用队列的数据节点的数量占当前数据节点总数的比例, 调整可用队列的数据节点和不可用队列的数据节点;否则,保持可用队列的数据节点和不 可用队列的数据节点不变; 根据当前可用队列的每一数据节点的负载信息,确定该可用队列的负载列表和剩 余容量列表;根据当前不可用队列的每一数据节点的负载信息,确定该不可用队列的负载 列表。 较佳的,所述根据当前可用队列的每一数据节点的负载信息和不可用队列的每 一数据节点的负载信息,更新可用队列的数据节点的数量占当前数据节点总数的比例,包 括: 对于每一数据节点,根据该数据节点的负载信息,确定该数据节点的负载; 若可用队列中所有的数据节点的负载均大于第一阈值,则提高可用队列的数据节 点的数量占当前数据节点总数的比例; 若可用队列中所有的数据节点的负载均小于第二阈值,则降低可用队列的数据节 点的数量占当前数据节点总数的比例。 通过根据当前可用队列的每一数据节点的负载信息和不可用队列的每一数据节 点的负载信息,实时的更新用队列的数据节点的数量占当前数据节点总数的比例,进而在 满足预设条件时,根据该比例调整可用队列的数据节点和不可用队列的数据节点,若当前 可用队列中所有的数据节点的负载均大于第一阈值,则说明当前系统的存储需求较高,则 提高可用队列的数据节点的数量占当前数据节点总数的比例;若当前可用队列中所有的数 据节点的负载均小于第二阈值,则说明当前系统的存储需求较低,则降低可用队列的数据 节点的数量占当前数据节点总数的比例;如此调整,能够进一步使数据节点之间的容量均 衡。 较佳的,所述根据当前可用队列的每一数据节点的负载信息,确定该可用队列的 负载列表和剩余容量列表,根据当前不可用队列的每一数据节点的负载信息,确定该不可 用队列的负载列表,包括: 对于每一数据节点,根据该数据节点的负载信息,确定该数据节点的负载和该数 据节点的剩余容量; 按照可用队列中数据节点的负载由大到小的顺序,确定该可用队列的负载列表; 按照可用队列中数据节点的剩余容量由小到大的顺序,确定该可用队列的剩余容 量列表; 按照不可用队列中数据节点的负载由大到小的顺序,确定该不可用队列的负载列 表。 较佳的,所述数据节点的负载信息包括:剩余空间容量、CPU总赫兹数、使用CPU总 赫兹数、内存总容量、使用内存量、网络输入输出总带宽以及使用网络输入输出总带宽。 较佳的,所述对于每一数据节点,根据该数据节点的负载信息,确定该数据节点的 负载,包括: 根据该数据节点的CPU总赫兹数和使用CPU总赫兹数,计算该数据节点的CPU的 使用率; 根据该数据节点的总内存量和使用内存量,计算该数据节点的内存使用率; 根据该数据节点的网络输本文档来自技高网...

【技术保护点】
一种数据节点的分配方法,其特征在于,该方法包括:接收至少一个数据节点上报的心跳信息,其中每一数据节点的心跳信息包括该数据节点的标识信息和负载信息;根据每一数据节点的心跳信息,更新预先建立的可用队列的数据节点的负载信息和不可用队列的数据节点的负载信息;当满足预设条件时,根据当前可用队列的每一数据节点的负载信息,确定该可用队列的负载列表和剩余容量列表;根据当前不可用队列的每一数据节点的负载信息,确定该不可用队列的负载列表;当可用队列中负载最大的数据节点的负载大于不可用队列中负载最小的数据节点的负载时,将可用队列中剩余容量最小的数据节点移入不可用队列,将不可用队列中负载最小的数据节点移入可用队列;当接收到客户端发送的申请数据节点的请求时,在当前可用队列中为该客户端分配数据节点。

【技术特征摘要】

【专利技术属性】
技术研发人员:翁健许焰周明伟王亮舒添翼陈伟张兴明
申请(专利权)人:浙江大华技术股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1