存储服务器分配方法、装置、管理服务器以及存储系统与流程

文档序号:16608096发布日期:2019-01-14 21:18阅读:241来源:国知局
存储服务器分配方法、装置、管理服务器以及存储系统与流程

本公开涉及数据处理技术领域,尤其涉及一种存储服务器分配方法、装置、管理服务器以及分布式存储系统、存储介质。



背景技术:

分布式存储系统可以由几百、几千甚至上万存储服务器构成,每个存储服务器都作为数据存储的载体。对于大规模的集群来说,存储服务器出现故障的情况经常发生。当前,分布式存储系统的路由策略通常是基于位置的策略或随机策略,基于位置的策略为选择一个离客户端物理位置最近的存储节点。现有的路由策略大多是基于位置的策略,这就导致个别已经处于繁忙状态的存储服务器仍然会等概率的接收到读写请求,因为这些存储服务器已经处于繁忙状态,就导致响应后续的读写请求会有很大的延迟,从而造成一些读写请求非常缓慢,影响客户端访问。



技术实现要素:

有鉴于此,本公开要解决的一个技术问题是提供一种存储服务器分配方法、装置、管理服务器以及分布式存储系统。

根据本公开的一个方面,提供一种存储服务器分配方法,包括:周期性地获取存储服务器发送的系统资源繁忙信息,基于所述系统资源繁忙信息确定与所述存储服务器相对应的系统繁忙度;如果所述系统繁忙度小于系统繁忙阈值,则将此系统繁忙度对应的存储服务器设置为候选存储服务器并加入候选存储服务器集合;当接收到读写请求时,基于分配策略从所述候选存储服务器集合中选取候选存储服务器,用以执行所述读写请求。

可选地,所述基于分配策略从所述候选存储服务器集合中选取候选存储服务器包括:基于所述系统繁忙度对所述候选存储服务器集合中的候选存储服务器设置优先级;基于所述优先级对所述候选存储服务器进行排序;当接收到所述读写请求时,选取排在最前的所述候选存储服务器,用以存储所述存储数据。

可选地,当从所述候选存储服务器集合中选取第一候选存储服务器时,将所述第一候选存储服务器的优先级修改为预设值;其中,当接收到所述读写请求时,不选取优先级为所述预设值的所述第一候选存储服务器;周期性地接收到所述第一候选存储服务器发送的存储处理结果信息,基于所述处理结果信息确定所述第一候选存储服务器是否完成对于所述存储数据的存储处理;如果是,则基于所述系统繁忙度对所述第一候选存储服务器设置优先级。

可选地,如果基于所述处理结果信息确定所述第一候选存储服务器在预设的时长阈值内没有完成所述存储处理,则向所述第一候选存储服务器发送控制指令,用以控制所述第一候选存储服务器停止执行所述存储处理,并且,在所述候选存储服务器集合中选取排在最前的第二候选存储服务器,用以存储与所述存储数据;其中,所述第一候选存储服务器通过心跳报文发送所述存储处理结果信息。

可选地,所述基于所述系统资源繁忙信息确定与所述存储服务器相对应的系统繁忙度包括:确定所述系统繁忙度为:

其中,所述系统繁忙度为a,r_i为第i个系统资源繁忙信息,ci为第i个系统资源繁忙信息的权值,n为所述系统资源繁忙信息的数量。

可选地,接收到所述存储服务器发送的心跳报文,从所述心跳报文中提取所述系统资源繁忙信息;其中,通过所述心跳报文中的至少一个字节携带所述系统资源繁忙信息,所述系统资源繁忙信息包括:cpu繁忙信息、内存繁忙信息、磁盘繁忙信息、网卡繁忙信息。

可选地,所述存储服务器从操作系统的文件系统中获取资源信息,基于所述资源信息获得所述系统资源繁忙信息;其中,所述资源信息包括:cpu占用时间、内存占用信息、磁盘i/o的占用时间、网卡发送和接收的数据量。

可选地,所述存储服务器基于预设的时间间隔获得两个cpu占用时间,将所述两个cpu占用时间的差值除以所述时间间隔,获得所述cpu繁忙信息;所述存储服务器获得内存占用信息,将所述内存占用信息除以总内存信息,获得所述内存繁忙信息;所述存储服务器基于预设的时间间隔获得两个磁盘i/o的占用时间,将所述两个磁盘i/o的占用时间的差值除以所述时间间隔,获得所述磁盘繁忙信息;所述存储服务器获得网卡发送数据量和网卡接收数据量,将所述网卡发送数据量和所述网卡接收数据量的和除以网卡额定带宽,获得所述网卡繁忙信息。

可选地,建立线程池,从所述线程池中选取与第一数据源相对应的第一线程;接收到来自所述第一数据源的所述存储数据,如果所述第一线程处于繁忙状态,则将所述存储数据加入到与所述第一线程池对应的队列中;如果所述第一线程处于空闲状态时,则将接收的所述存储数据或从所述队列中读取的所述存储数据传输给所述第一线程,并将选取的候选存储服务器的路径信息传输给所述第一线程,以使所述第一线程对所述存储数据进行存储处理。

根据本公开的另一方面,提供一种存储服务器分配装置,包括:信息获取模块,用于周期性地获取存储服务器发送的系统资源繁忙信息;繁忙度获得模块,用于基于所述系统资源繁忙信息确定与所述存储服务器相对应的系统繁忙度;候选节点确定模块,用于如果所述系统繁忙度小于系统繁忙阈值,则将此系统繁忙度对应的存储服务器设置为候选存储服务器并加入候选存储服务器集合;存储节点分配模块,用于当接收到读写请求时,基于分配策略从所述候选存储服务器集合中选取候选存储服务器,用以执行所述读写请求。

可选地,所述存储节点分配模块,包括:设置单元,用于基于所述系统繁忙度对所述候选存储服务器集合中的候选存储服务器设置优先级;选取单元,用于基于所述优先级对所述候选存储服务器进行排序;当接收到所述读写请求时,选取排在最前的所述候选存储服务器,用以存储所述存储数据。

可选地,所述设置单元,用于当从所述候选存储服务器集合中选取第一候选存储服务器时,将所述第一候选存储服务器的优先级修改为预设值;周期性地接收到所述第一候选存储服务器发送的存储处理结果信息,基于所述处理结果信息确定所述第一候选存储服务器是否完成对于所述存储数据的存储处理;如果是,则基于所述系统繁忙度对所述第一候选存储服务器设置优先级;所述选取单元,用于当接收到所述读写请求时,不选取优先级为所述预设值的所述第一候选存储服务器;

可选地,所述选取单元,用于如果基于所述处理结果信息确定所述第一候选存储服务器在预设的时长阈值内没有完成所述存储处理,则向所述第一候选存储服务器发送控制指令,用以控制所述第一候选存储服务器停止执行所述存储处理,并且,在所述候选存储服务器集合中选取排在最前的第二候选存储服务器,用以存储与所述存储数据;其中,所述第一候选存储服务器通过心跳报文发送所述存储处理结果信息。

可选地,所述繁忙度获得模块,用于确定所述系统繁忙度为:

其中,所述系统繁忙度为a,r_i为第i个系统资源繁忙信息,ci为第i个系统资源繁忙信息的权值,n为所述系统资源繁忙信息的数量。

可选地,所述信息获取模块,用于接收到所述存储服务器发送的心跳报文,从所述心跳报文中提取所述系统资源繁忙信息;其中,通过所述心跳报文中的至少一个字节携带所述系统资源繁忙信息,所述系统资源繁忙信息包括:cpu繁忙信息、内存繁忙信息、磁盘繁忙信息、网卡繁忙信息。

可选地,所述存储服务器从操作系统的文件系统中获取资源信息,基于所述资源信息获得所述系统资源繁忙信息;其中,所述资源信息包括:cpu占用时间、内存占用信息、磁盘i/o的占用时间、网卡发送和接收的数据量。

可选地,所述存储服务器基于预设的时间间隔获得两个cpu占用时间,将所述两个cpu占用时间的差值除以所述时间间隔,获得所述cpu繁忙信息;所述存储服务器获得内存占用信息,将所述内存占用信息除以总内存信息,获得所述内存繁忙信息;所述存储服务器基于预设的时间间隔获得两个磁盘i/o的占用时间,将所述两个磁盘i/o的占用时间的差值除以所述时间间隔,获得所述磁盘繁忙信息;所述存储服务器获得网卡发送数据量和网卡接收数据量,将所述网卡发送数据量和所述网卡接收数据量的和除以网卡额定带宽,获得所述网卡繁忙信息。

可选地,数据存储处理模块,用于建立线程池,从所述线程池中选取与第一数据源相对应的第一线程;接收到来自所述第一数据源的所述存储数据,如果所述第一线程处于繁忙状态,则将所述存储数据加入到与所述第一线程池对应的队列中;如果所述第一线程处于空闲状态时,则将接收的所述存储数据或从所述队列中读取的所述存储数据传输给所述第一线程,并将选取的候选存储服务器的路径信息传输给所述第一线程,以使所述第一线程对所述存储数据进行存储处理。

根据本公开的又一方面,提供一种管理服务器,包括:如上所述的存储服务器分配装置。

根据本公开的又一方面,提供一种分布式存储系统,包括:如上所述的管理服务器、存储服务器。

根据本公开的又一方面,提供一种存储服务器分配装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的方法。

根据本公开的再一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如上所述的方法。

本公开的存储服务器分配方法、装置、管理服务器以及分布式存储系统、存储介质,基于存储服务器发送的系统资源繁忙信息确定系统繁忙度;如果系统繁忙度小于系统繁忙阈值,则将此系统繁忙度对应的存储服务器设置为候选存储服务器,选取候选存储服务器执行读写请求;可以实时平衡分布式集群的压力,减少繁忙存储服务器,从整体上提升整个集群的吞吐量,极大地减少长延时的请求,使集群在提高服务能力的基础上提高服务质量,提升了用户的使用体验。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为根据本公开的存储服务器分配方法的一个实施例的流程示意图;

图2为根据本公开的存储服务器分配方法的一个实施例中的分配处理流程示意图;

图3为根据本公开的存储服务器分配方法的一个实施例中的优先级处理流程示意图;

图4为根据本公开的存储服务器分配方法的一个实施例中的进行存储处理的流程示意图;

图5为根据本公开的存储服务器分配装置的一个实施例的模块示意图;

图6为根据本公开的存储服务器分配装置的一个实施例的候选节点确定模块的模块示意图;

图7为根据本公开的分布式存储系统的一个实施例的示意图;

图8为根据本公开的存储服务器分配装置的另一个实施例的模块示意图。

具体实施方式

下面参照附图对本公开进行更全面的描述,其中说明本公开的示例性实施例。下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。下面结合各个图和实施例对本公开的技术方案进行多方面的描述。

图1为根据本公开的存储服务器分配方法的一个实施例的流程示意图,如图1所示:

步骤101,周期性地获取存储服务器发送的系统资源繁忙信息,基于系统资源繁忙信息确定与存储服务器相对应的系统繁忙度。

存储服务器可以为分布式存储系统的存储节点,例如为hdfs的datanode等。存储服务器可以通过心跳报文等以预设的时间间隔为周期发送系统资源繁忙信息,时间间隔可以为3、5、10秒等。

步骤102,如果系统繁忙度小于系统繁忙阈值,则将此系统繁忙度对应的存储服务器设置为候选存储服务器并加入候选存储服务器集合。

系统繁忙阈值可以根据需求进行设置。候选存储服务器为系统繁忙度小于系统繁忙阈值的存储服务器,可以定时获取系统繁忙度并确定候选存储服务器。

步骤103,当接收到读写请求时,基于分配策略从候选存储服务器集合中选取候选存储服务器,用以执行读写请求。

例如,计算存储服务器a、b、c、d的系统繁忙度,只有存储服务器a、b、c的系统繁忙度小于系统繁忙阈值,则将存储服务器a、b、c设置为候选存储服务器并加入候选存储服务器集合。当接收到对于副本文件a的读请求时,存储服务器a、d存储有副本文件a,由于只有存储服务器a为候选存储服务器,则选取存储服务器a执行对于副本文件a的读请求。当接收到对于副本文件b的写请求时,选取存储服务器a、b、c的一个或多个存储服务器执行对于副本文件b的写请求。

上述实施例中的存储服务器分配方法,可以定时获取存储服务器的繁忙状态,根据繁忙状态选择存储服务器进行数据存储操作,能够规避处于繁忙状态的存储服务器,提高系统的运行效率。

在一个实施例中,对一个文件需要存储多个副本,可以从候选服务器集合中随机选取与副本数量相同的多个存储服务器,多个存储服务器分别存储一个副本,以此保证不会丢失。当读取副本时,从候选服务器集合中随机选取一个存储有副本的存储服务器,用于读取副本。

在一个实施例中,分配策略可以有多种,图2为根据本公开的存储服务器分配方法的一个实施例中的分配处理流程示意图,如图2所示:

步骤201,基于系统繁忙度对候选存储服务器集合中的候选存储服务器设置优先级。

步骤202,基于优先级对候选存储服务器进行排序。

步骤203,当接收到存储请求时,选取排在最前的候选存储服务器,用以存储数据。

例如,分布式存储系统的存储节点有存储服务器a、b、c、d。存储服务器a、b、c、d分别每隔3秒发送心跳报文,携带有各自的系统资源繁忙信息。计算存储服务器a、b、c、d的系统繁忙度,确定存储服务器a、b、c、d的系统繁忙度都小于系统繁忙阈值,则将存储服务器a、b、c、d设置为候选存储服务器并加入候选存储服务器集合。

基于存储服务器a、b、c、d的系统繁忙度对存储服务器a、b、c、d的系统繁忙度设置优先级。设置优先级可以有多种方式,例如,系统繁忙度越高,则优先级越低。基于优先级对存储服务器a、b、c、d进行排序,排序规则可以为优先级越高排位越靠前,排序结果为存储服务器b、c、a、d。当接收到存储请求时,选取排在最前的存储服务器b,用以存储数据。如果需要存储一个文件的两个副本,则选取排在最前的存储服务器b、c,存储服务器b、c分别存储一个副本。

图3为根据本公开的存储服务器分配方法的一个实施例中的优先级处理流程示意图,如图3所示:

步骤301,当从候选存储服务器集合中选取第一候选存储服务器时,将第一候选存储服务器的优先级修改为预设值,其中,当接收到存储请求时,不选取优先级为预设值的第一候选存储服务器。

步骤302,周期性地接收到第一候选存储服务器发送的存储处理结果信息,基于处理结果信息确定第一候选存储服务器是否完成对于存储数据的存储处理。第一候选存储服务器可以通过心跳报文等周期性地发送的存储处理结果信息。

步骤303,如果是,则基于系统繁忙度对第一候选存储服务器设置优先级。

如果基于处理结果信息确定第一候选存储服务器在预设的时长阈值内没有完成存储处理,则向第一候选存储服务器发送控制指令,用以控制第一候选存储服务器停止执行存储处理,并且,在候选存储服务器集合中选取排在最前的第二候选存储服务器,用以存储与存储数据;其中,第一候选存储服务器可以通过心跳报文等发送存储处理结果信息。

例如,当接收到对于文件a的存储请求时,选取排在最前的存储服务器b存储文件a。将存储服务器b的优先级修改为预设值。例如,预定值为-1。当接收到存储请求时,不选取优先级为-1的存储服务器b。

以3秒为间隔,周期性地接收到存储服务器b发送的心跳报文,从心跳报文中提取存储处理结果信息。基于存储处理结果信息确定存储服务器b是否完成对于文件a的存储处理,如果是,则提取存储服务器b发送的心跳报文携带的系统资源繁忙信息,计算系统繁忙度,基于存储服务器b的系统繁忙度对存储服务器b设置优先级。

如果基于处理结果信息确定存储服务器b在预设的时长阈值内没有完成对于文件a的存储处理,时长阈值可以为60、100秒等,则向存储服务器b发送控制指令,用以控制存储服务器b停止执行存储处理,控制指令可以为现有的多种指令。在候选存储服务器集合中选取当前排在最前的存储服务器a,用以存储文件a。

在一个实施例中,接收到存储服务器发送的心跳报文,从心跳报文中提取系统资源繁忙信息。可以通过心跳报文中的至少一个字节携带系统资源繁忙信息,系统资源繁忙信息包括:cpu繁忙信息、内存繁忙信息、磁盘繁忙信息、网卡繁忙信息等。

例如,存储服务器定时(默认每隔3秒)获取系统cpu、内存、磁盘、网络的繁忙信息,通过心跳将繁忙信息报送给管理节点。管理节点根据将系统cpu、内存、磁盘、网络的繁忙信息进行各自加权计算生成繁忙度值,并对比预设的繁忙阈值,将超过或等于繁忙阈值的存储服务器加入到hashmap中,在进行存储处理时,会规避这些存储服务器。

存储服务器定时通过心跳将繁忙信息报送给管理节点,对于系统繁忙阈值从大于或等于繁忙阈值变为小于繁忙阈值的存储服务器,将会从hashmap中清除此存储服务器并作为候选存储服务器。选取存储服务器进行存储数据的过程基于实时的状态统计,可以对整个集群的负载进行实时平衡。

在一个实施例中,基于系统资源繁忙信息确定与存储服务器相对应的系统繁忙度可以有多种。例如,确定系统繁忙度为:

其中,系统繁忙度为a,ri为第i个系统资源繁忙信息,ci为第i个系统资源繁忙信息的权值,n为系统资源繁忙信息的数量。

存储服务器可以从操作系统的文件系统中获取资源信息,基于资源信息获得系统资源繁忙信息。资源信息包括:cpu占用时间、内存占用信息、磁盘i/o的占用时间、网卡发送和接收的数据量等。

操作系统可以为linux和unix系统等,文件系统可以为proc文件系统等。proc文件系统是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

存储服务器的资源状态采集需要满足:1、状态采集不能对系统产生很大压力;2、采集流程要有非常小的时延,而且不能影响其他业务流程。采用从proc文件系统直接获取资源信息,由于proc文件存储在内存中所以满足快速获取的条件,而且是从内核获取信息,因此具有实时性。可以采用一个单独线程去定时收集proc文件中的资源信息、计算系统资源繁忙信息,由心跳线程获取系统资源繁忙信息并发送。

存储服务器基于预设的时间间隔获得两个cpu占用时间,将两个cpu占用时间的差值除以时间间隔,获得cpu繁忙信息。存储服务器获得内存占用信息,将内存占用信息除以总内存信息,获得内存繁忙信息。存储服务器基于预设的时间间隔获得两个磁盘i/o的占用时间,将两个磁盘i/o的占用时间的差值除以时间间隔,获得磁盘繁忙信息。存储服务器获得网卡发送数据量和网卡接收数据量,将网卡发送数据量和网卡接收数据量的和除以网卡额定带宽,获得网卡繁忙信息。

例如,从/proc/stat文件中获取cpu当前的运行信息,如:(省去一些不需要信息)

cpu8681551713970895156400132851116805501000;

其中,前三项868155、1713、970895的和为cpu的占用时间,基于预设的时间间隔获得两次cpu的占用时间,两次cpu的占用时间的差值除以预设的时间间隔即为cpu繁忙信息。预设的时间间隔可以为心跳报文发送的时间间隔等。

从/proc/meminfo文件中获取内存当前的运行信息,如:(省略一些不需要信息)

memtotal:65562456kb

memfree:63604124kb

inactive:237116kb

swapfree:16777212kb

计算(memtotal–memfree–inactive–swapfree)/memtotal,计算结果即为内存繁忙度,为内存繁忙信息。

从/proc/diskstats中获取磁盘i/o的占用时间,如:(省去一些不需要信息)

816sdb216302668211128232332048120595711140;

其中,最后一项11140为磁盘io占用时间。基于预设的时间间隔获得两次磁盘i/o的占用时间,两次磁盘i/o的占用时间的差值除以预设的时间间隔即为磁盘繁忙度,即磁盘繁忙信息。预设的时间间隔可以为心跳报文发送的时间间隔。

从/proc/net/dev中获取网卡发送和接收的数据量,如:(省去一些不需要信息)

eth2:834044179146640749000000272684774828415631000000

其中,第一项8340441791为接收数据量,2726847748为发送数据量,两者做和再除以网卡额定带宽即为网卡繁忙信息。

存储服务器采集的系统资源繁忙信息要报告给管理节点,由于存储服务器的数量庞大,心跳包在网络间传输会非常频繁,因此要控制系统资源繁忙信息报送增加的信息量。对于系统资源繁忙信息,比如cpu繁忙信息,在心跳包中只增加两个int来表示类型和cpu繁忙信息。因此整个心跳数据只增加了32个字节(4*8)。

图4为根据本公开的存储服务器分配方法的一个实施例中的进行存储处理的流程示意图,如图4所示:

步骤401,建立线程池,从线程池中选取与第一数据源相对应的第一线程。

步骤402,接收到来自第一数据源的存储数据,如果第一线程处于繁忙状态,则将存储数据加入到与第一线程池对应的队列中。

步骤403,如果第一线程处于空闲状态时,则将接收的存储数据或从队列中读取的存储数据传输给第一线程。

步骤404,将选取的候选存储服务器的路径信息传输给第一线程,以使第一线程对存储数据进行存储处理。

例如,可以采用多线程技术进行存储处理。建立线程池,可以预先设置线程与数据源的对应关系,以及设置与线程对应的队列。从线程池中选取与监控服务器a相对应的第一线程,接收到来自监控服务器a的视频监控数据,如果第一线程处于繁忙状态,则将视频监控数据加入到与第一线程池对应的队列中。

如果第一线程处于空闲状态时,则将接收到来自监控服务器a的视频监控数据或从队列中读取的视频监控数据传输给第一线程,并将选取的候选存储服务器的路径信息传输给第一线程,以使第一线程对存储数据进行存储处理。候选存储服务器的路径信息可以为候选存储服务器的url路由信息等。

在一个实施例中,如图5所示,本公开提供一种存储服务器分配装置50,包括:信息获取模块51、繁忙度获得模块52、候选节点确定模块53、存储节点分配模块54和数据存储处理模块55。

信息获取模块51周期性地获取存储服务器发送的系统资源繁忙信息。繁忙度获得模块52基于系统资源繁忙信息确定与存储服务器相对应的系统繁忙度。如果系统繁忙度小于系统繁忙阈值,则候选节点确定模块53将此系统繁忙度对应的存储服务器设置为候选存储服务器并加入候选存储服务器集合。存储节点分配模块54当接收到读写请求时,基于分配策略从候选存储服务器集合中选取候选存储服务器,用以执行读写请求。

如图6所示,存储节点分配模块53包括:设置单元531和选取单元532。设置单元531基于系统繁忙度对候选存储服务器集合中的候选存储服务器设置优先级。选取单元532基于优先级对候选存储服务器进行排序,当接收到存储请求时,选取排在最前的候选存储服务器,用以存储数据。

当从候选存储服务器集合中选取第一候选存储服务器时,设置单元531将第一候选存储服务器的优先级修改为预设值。设置单元531周期性地接收到第一候选存储服务器发送的存储处理结果信息,基于处理结果信息确定第一候选存储服务器是否完成对于存储数据的存储处理;如果是,则设置单元531基于系统繁忙度对第一候选存储服务器设置优先级。选取单元532当接收到存储请求时,不选取优先级为预设值的第一候选存储服务器。

选取单元532如果基于处理结果信息确定第一候选存储服务器在预设的时长阈值内没有完成存储处理,则向第一候选存储服务器发送控制指令,用以控制第一候选存储服务器停止执行存储处理。选取单元532在候选存储服务器集合中选取排在最前的第二候选存储服务器,用以存储与存储数据。

在一个实施例中,繁忙度获得模块52确定系统繁忙度为:

其中,系统繁忙度为a,r_i为第i个系统资源繁忙信息,ci为第i个系统资源繁忙信息的权值,n为系统资源繁忙信息的数量。

信息获取模块51接收到存储服务器发送的心跳报文,从心跳报文中提取系统资源繁忙信息;其中,通过心跳报文中的至少一个字节携带系统资源繁忙信息,系统资源繁忙信息包括:cpu繁忙信息、内存繁忙信息、磁盘繁忙信息、网卡繁忙信息等。

在一个实施例中,数据存储处理模块55建立线程池,从线程池中选取与第一数据源相对应的第一线程。数据存储处理模块55接收到来自第一数据源的存储数据,如果第一线程处于繁忙状态,则将存储数据加入到与第一线程池对应的队列中;如果第一线程处于空闲状态时,则数据存储处理模块55将接收的存储数据或从队列中读取的存储数据传输给第一线程,并将选取的候选存储服务器的路径信息传输给第一线程,以使第一线程对存储数据进行存储处理。

在一个实施例中,本公开提供一种管理服务器,包括如上任一实施例中的存储服务器分配装置。管理服务器可以为分布式存储系统集群的控制节点,例如hdfs的namenode等。

在一个实施例中,如图7所示,本公开提供一种分布式存储系统,包括如上任一实施例中的管理服务器71以及存储服务器72、73、74。分布式存储系统可以是大量普通pc服务器通过网络互联,对外作为一个整体提供存储服务,例如hadoop的hdfs系统等。

图8为根据本公开的存储服务器分配装置的又一个实施例的模块示意图。如图8所示,该装置可包括存储器81、处理器82、通信接口83以及总线84。存储器81用于存储指令,处理器82耦合到存储器81,处理器82被配置为基于存储器81存储的指令执行实现上述的存储服务器分配方法。

存储器81可以为高速ram存储器、非易失性存储器(non-volatilememory)等,存储器81也可以是存储器阵列。存储器81还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器82可以为中央处理器cpu,或专用集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本公开的存储服务器分配方法的一个或多个集成电路。

在一个实施例中,本公开提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上任一个实施例中的存储服务器分配方法。

上述实施例中的存储服务器分配方法、装置、管理服务器以及分布式存储系统、存储介质,基于存储服务器发送的系统资源繁忙信息确定系统繁忙度;如果系统繁忙度小于系统繁忙阈值,则将此系统繁忙度对应的存储服务器设置为候选存储服务器,选取候选存储服务器执行读写请求;可以实时平衡分布式集群的压力,减少繁忙存储服务器,从整体上提升整个集群的吞吐量,极大地减少长延时的请求,使集群在提高服务能力的基础上提高服务质量,提升了用户的使用体验。

可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。

本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1