本发明属于分布式存储
技术领域:
:,更具体地,涉及一种基于配置的自适应分布式存储系统的数据分片方法。
背景技术:
::在现有分布式存储领域的分布式存储系统中,多以固定的大小将数据切分成数据块;根据数据提取特征值,对特征值按照指定的分片算法计算出分片序号,按照分片序号将数据分发到相应的节点上。为保证数据安全,采取数据块的多副本方式,将副本分发到不同节点。在对数据特征值计算分片序号时,采取一致性哈希算法,根据集群节点数目计算得到固定的特征值分段范围,每个特征值落入指定的分段范围内,即为指定的分片序号;或者采取round-robin随机分配算法,近似平衡的随机从集群中取出一个节点指定分片序号;或者采取改进的加权随机分配算法,每个节点拥有一定的权重,加上权重后随机计算获得指定分片序号。采取哈希算法的分片方法需要存储系统集群的节点数目相对稳定,因为每次计算都需要节点数目也即分片数目作为参数,而当节点数目发生变化时,计算参数发生了变化,数据分片的规律也会随之改变,需要将数据切片进行重新分布;在数据重新分布时会在每个分片之间形成数据流动;当数据量较大时,不仅数据重新分布耗时过长,而且内部流量过大,各节点处于频繁的数据读写中,易引起数据震荡,导致系统的整体响应降低;而采取随机算法的分片方法,包括round-robin随机分配算法和改进的加权随机分配算法,均未考虑对分片节点的存储容量的感知,存储系统无法得知分片节点磁盘空间被其他外部数据所占用带来的影响,需要人为或通过外部程序来判断分片节点剩余容量以避免存储发生错误。技术实现要素:针对现有技术的以上缺陷或改进需求,本发明提供了一种基于配置的自适应分布式存储系统的数据分片方法,其目的在于解决分布式存储系统中数据重新分布造成的数据震荡的问题。为实现上述目的,按照本发明的一个方面,提供了一种基于配置的自适应分布式存储系统的数据分片方法,所基于的分布式存储系统包括存储代理服务器、分片集群和配置信息存储模块;所述数据分片方法包括以下步骤:(1)将拟上传到分布式存储系统的数据发送到存储代理服务器;并通过存储代理服务器从配置信息存储模块查询存储节点的配置信息,获取当前所有分片的IP地址、存储容量、最大阈值、已存储数据大小以及是否可写入;(2)通过存储代理服务器找出所有可写入的分片;并根据可写入的分片的已存储数据量、存储容量和阈值,建立可写入分片列表;(3)采用随机算法从可写入分片列表中选取待写入的分片;其中,随机算法可采用round-robin随机分配算法,即轮询调度算法,以循环的方式依次选出列表中不同的分片;(4)通过存储代理服务器根据将拟上传数据写入待写入的分片;(5)当数据写入动作完成后,通过所述分片将存储数据对应的ID、所占用存储空间大小反馈给存储代理服务器;(6)通过存储代理服务器根据所占用存储空间大小更新配置信息存储模块中存储的配置信息;所述配置信息包括分片被占用的存储空间的大小;当分片被占用存储空间的大小超过阈值,则将所述分片设置为不接受写入;其中,阈值根据所述分片的最大容量以及拟预留的冗余容量确定。优选地,上述基于配置的自适应分布式存储系统的数据分片方法,通过如下步骤对分布式存储系统进行扩展:(i)添加新的分片集群,并通过存储代理服务器更新配置信息存储模块所保存的存储节点的配置信息,包括添加的分片的存储容量和阈值;(ii)拟上传数据时,存储代理服务器根据配置信息自适应指定待写入的分片,对系统响应无影响,可持续在线运行;并且,是在选定分片后将拟上传直接写入分片,不存在分片之间的数据块迁移,克服了数据迁移引起数据震荡所导致的系统整体性能下降的缺陷。优选地,上述基于配置的自适应分布式存储系统的数据分片方法,其步骤(3)包括如下子步骤:(3.1)根据可写入的分片列表中各分片的已存储数据量、存储容量和阈值,加上待写入数据的大小,计算各分片所剩余空间的大小;(3.2)按剩余空间大小排序,选取剩余空间最多的前几个分片组成列表;(3.3)采用随机算法在列表中随机选取一个分片作为待写入分片。总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:(1)本发明提供的基于配置的自适应分布式存储系统的数据分片方法,将分片节点IP地址、存储容量、最大阈值、已存储数据大小、是否可写入状态等分片信息作为配置信息保存在配置信息存储模块;拟写入数据时,通过存储代理服务器根据配置信息计算得到指定的分片序号,将数据块分发到指定分片上;而现有技术是使用一致性哈希或随机分配算法计算数据分片,使得各个节点获得数据写入的机会近似相同,然而这种规则在分片节点发生变动时,会将所有数据重新分布到剩余分片上以满足近似平衡的要求,从而导致大量数据在节点间来回迁移,引起系统性能急剧下降;而本发明通过将拟上传数据直接写入指定分片,数据无需在分片之间迁移,由此消除了数据迁移所导致的数据震荡,由此克服据震荡所导致的系统响应性能下降的缺陷;(2)本发明提供的基于配置的自适应分布式存储系统的数据分片方法,在数据写入后将存储数据对应的ID、所占用存储空间大小反馈给存储代理服务器,实现了对分片信息的自动更新;由存储代理服务器根据存储数据消耗的空间更新配置信息,判断是否超过分片的阈值,更新是否可写入状态;由此获取到准确的可写入分片的信息,在可写入分片中采用随机算法指定分片,数据直接写入分片,而无需如在分片之间迁移;(3)本发明提供的基于配置的自适应分布式存储系统的数据分片方法,当存储空间不足时,通过增加分片集群、并根据新增加的分片的信息更新配置信息来进行扩展,实现了在不影响在线服务的情况下对系统的实时扩展;在此过程中,存储代理节点服务器通过实时的查询配置信息,自动发现配置信息的改变并做出适应,新增分片对系统的可持续在线运行没有影响;并且由于存储代理服务器能够自动感知和适应新的配置信息,做到了扩展对应用完全透明;(4)本发明提供的基于配置的自适应分布式存储系统的数据分片方法,通过设置存储容量、阈值和可写入状态,并由存储代理服务器根据上传数据消耗的存储空间对配置信息进行实时更新,消除了因存储节点空间被占满无法写入导致的写入出错,提高了存储效率。附图说明图1是实施例中基于配置进行数据分片的分布式存储系统示意图;图2是实施例提供的基于配置的自适应分布式存储系统的数据分片方法的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本发明实施例提供的基于配置的自适应分布式存储系统的数据分片方法,基于图1所示的分布式存储系统,包括存储代理服务器、分片集群和配置信息存储模块;数字1标识的路径是指在写入数据时,存储代理服务器向配置信息存储模块查询分片相关信息;数字2标识的路径是指配置信息存储模块返回当前所有分片信息;数字3标识的路径是指存储代理服务器根据分片信息计算并选取一个可写入的分片,将数据直接写入该分片;数字4标识的路径是指分片存储数据后向存储代理服务器返回结果;数字5标识的路径是指存储代理服务器根据分片的返回结果主动更新配置信息存储模块中该分片的相关信息。本发明实施例提供的基于配置的自适应分布式存储系统的数据分片方法,将分片相关信息作为配置信息保存在配置信息存储模块;自动对配置信息进行维护和更新;拟上传数据时,根据配置获得当前所有分片的节点状态、磁盘容量、已写入数据量的信息;根据这些信息采用随机算法计算确定最优的分片序号;为保证数据的安全性,每个分片都配置为一个多副本的集群,数据块副本分发到分片内的多个节点上存储。其中,分片相关信息包括:分片的服务器地址,分片可配置为多副本的集群;系统自动维护集群的主从状态信息;可指定一个最大容量值作为分片的存储容量,可采用存储节点磁盘容量大小作为分片的存储容量;可指定最大容量的百分比阈值作为分片的存储上限阈值,为数据安全考虑,当已存储数据量达到最大容量的该百分比阈值时,判定该分片空间已满,通过配置信息将该分片设置为不接受写入,更新分片节点的已存储数据量、是否可写入的状态标签。以下结合实施例,具体阐述本发明提供的这种基于配置的自适应分布式存储系统的数据分片方法;实施例中,实际部署的存储系统实施例包含三个存储代理服务器,同时提供数据读取的服务,存储分片共包含5组分片,每组分片中包含一个主节点和一个备份节点,配置信息存储模块包括一个主节点和一个备份节点组成。应用层需要上传数据到分布式存储系统时,数据先被上传至任意一个存储代理服务器,存储代理服务器随后查询存储节点的配置信息;实施例中,存储节点配置信息将当前所有分片的IP地址、存储容量、最大阈值、已存储数据大小、是否可写入等状态返回存储代理服务器;其中一个分片返回的配置信息如下:{"_id":1,"dataSize":3115868,"diskSize":3200,"hosts":[{"health":true,"host":"172.30.2.1:3000","id":0,"state":"PRIMARY"},{"health":true,"host":"172.30.2.2:3000","id":1,"state":"SECONDARY"}],"percent":95,"syncOk":false,"utime":"2016-05-1111:29:19","writable":true}存储代理服务器根据分片返回的配置信息,获取所有writable标记为true的可写入的分片;根据分片的已存储数据大小dataSize、存储容量diskSize和最大阈值percent,获取可以放入上传文件的分片列表;采用随机算法在可写入列表中选出待写入的存储分片;存储代理服务器根据选出的存储分片和相应的分片IP地址信息,将拟上传数据写入该分片;数据写入分片完成时,分片返回存储数据对应的id、消耗存储空间大小的信息;存储代理服务器根据返回的消耗存储空间信息,更新存储节点配置信息中该分片的已存储数据大小dataSize,并判断是否超过最大阈值,如果超过,则更新配置信息将该分片状态设置为不接受写入;当有新的数据需要上传到分布式存储系统时,重复上述过程。从实施例可以看到,每次写入数据时,存储代理服务器先获取当前最新的分片存储信息,选择适合的分片进行写入;当需要扩展分片时,只需要在配置模块中加入新的分片信息,在下一次数据写入流程时存储代理服务器就会获得新的分片配置,从而自动的向新分片写入数据,完全避免了数据迁移。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3