一种存储系统的调用方法及装置与流程

文档序号:11930698阅读:193来源:国知局
一种存储系统的调用方法及装置与流程

本发明涉及数据处理领域,尤其涉及一种存储系统的调用方法及装置。



背景技术:

随着互联网的爆炸式发展,目前电子商务,系统运行日志,web应用等都积累了大量的数据,其规模巨大,即使是小型企业也收集了上TB的数据量,对于这种大数据集的应用背景,传统的数据库已经无法适用。目前针对该类场景,成功的解决方案是利用分布式键值(key-value)存储系统数据库通过建立列存结构,结合压缩、分块等技术提高数据的压缩效率和存储规模。

key-value存储中,数据被称作值(value),每个数据对应着一个唯一的标识(key),根据唯一标识(key)可以直接定位到值(value)的位置,因此,键值存储不再有类似文件系统的目录层级结构,而是完全扁平化存储,这样,相比文件存储,键值存储更容易进行容量扩展,并且由于数据读写可以直通对象层,键值存储比目录结构的存储方式的读写效率也更高。

当前常见的开源key-value存储系统包括Redis、Memcached、Tair、Cmem、Dynamo等等,均可以将数据进行缓存或持久存储。目前对key-value存储系统的操作中,主要关注单独存储系统的存储实现,不能同时兼容多个异构类型的key-value存储系统。



技术实现要素:

本发明实施例提供一种存储系统的调用方法及装置,用以兼容多个异构类型的存储系统。

本发明实施例提供的存储系统的调用方法包括:

所述服务器确定收到的调用指令对应的第一存储系统;

所述服务器将所述调用指令的格式转换为所述第一存储系统对应的指令格式;

所述服务器将转换后的调用指令发送给所述第一存储系统。

较佳地,所述服务器确定收到的调用指令对应的第一存储系统之前,还包括:

所述服务器监控每个存储系统的状态,确定所有存储系统中可供调用的存储系统;

所述服务器确定收到的调用指令对应的第一存储系统,包括:

所述服务器从可供调用的存储系统中确定收到的调用指令对应的第一存储系统。

较佳地,所述服务器从可供调用的存储系统中确定收到的调用指令对应的第一存储系统,包括:

所述服务器将可供调用的存储系统进行优先级排序;

所述服务器根据优先级排序,从可供调用的存储系统中确定所述第一存储系统。

较佳地,所述服务器将可供调用的存储系统进行优先级排序之前,还包括:

所述服务器将所有的存储系统进行分组;

所述服务器确定所述调用指令指定的存储系统分组中可供调用的存储系统;

所述服务器将可供调用的存储系统进行优先级排序,包括:

所述服务器将所述调用指令指定的存储系统分组中可供调用的存储系统进行优先级排序;

所述服务器根据优先级排序,从所述调用指令指定的存储系统分组的可供调用的存储系统中确定所述第一存储系统。

较佳地,所述服务器将可供调用的存储系统进行优先级排序,包括:

所述服务器根据存储系统的平均响应时间和调用频率,将可供调用的存储系统进行优先级排序。

较佳地,所述服务器将所述调用指令发送给所述第一存储系统之后,还包括:

若所述调用指令为指定第一存储系统的指令,且所述服务器确定所述第一存储系统不可调用,则向终端反馈用于指示所述调用指令失败的信息。

较佳地,所述服务器将所述调用指令发送给所述第一存储系统,包括:

所述服务器确定所述第一存储系统的通讯方式;

所述服务器按所述第一存储系统的通讯方式,将所述调用指令发送给所述第一存储系统。

一种存储系统的调用装置,包括:

确定模块,用于确定收到的调用指令对应的第一存储系统;

转换模块,用于将所述调用指令的格式转换为所述第一存储系统对应的指令格式;

收发模块,用于将转换后的调用指令发送给所述第一存储系统。

较佳地,还包括监控模块,用于监控每个存储系统的状态,确定所有存储系统中可供调用的存储系统;

所述确定模块,用于从可供调用的存储系统中确定收到的调用指令对应的第一存储系统。

较佳地,所述确定模块,具体用于:

将可供调用的存储系统进行优先级排序;

根据优先级排序,从可供调用的存储系统中确定所述第一存储系统。

较佳地,还包括分组模块,用于将所有的存储系统进行分组;

所述确定模块,具体用于:

确定所述调用指令指定的存储系统分组中可供调用的存储系统;

将所述调用指令指定的存储系统分组中可供调用的存储系统进行优先级排序;

根据优先级排序,从所述调用指令指定的存储系统分组的可供调用的存储系统中确定所述第一存储系统。

较佳地,所述确定模块,具体用于:

根据存储系统的平均响应时间和调用频率,将可供调用的存储系统进行优先级排序。

较佳地,所述收发模块,还用于:

若所述调用指令为指定第一存储系统的指令,且所述第一存储系统不可调用,则向终端反馈用于指示所述调用指令失败的信息。

较佳地,所述收发模块,具体用于:

确定所述第一存储系统的通讯方式;

按所述第一存储系统的通讯方式,将所述调用指令发送给所述第一存储系统。

本发明实施例中,服务器为外部应用提供收发指令的指令接口,外部应用向服务器发送对存储系统的调用指令时,调用指令的格式为与指令接口相应的统一的格式。服务器接收到调用指令后,根据该调用指令确定对应的第一存储系统。由于调用指令的格式与指令接口相适应,而与第一存储系统不兼容,因此,服务器将调用指令的格式转换为与第一存储系统对应的指令格式,以使该调用指令可以被第一存储系统所识别。之后,服务器将转换后的调用指令发送给第一存储系统,这样,外部应用即通过调用指令对调用第一存储系统。现有技术中,不同类型的存储系统具有不同的指令接口,相应的调用指令的格式也不相同,对异构类型的存储系统进行调用时,需根据各个存储系统所对应的指令格式,分别适应性地修改调用指令的格式。本发明实施例屏蔽了不同存储系统的指令格式的差异性,服务器与多个异构类型的存储系统进行连接,外部应用使用统一的指令格式,通过服务器任意调用不同类型的存储系统,解决了不同类型的存储系统不兼容的问题。

附图说明

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

图1为本发明实施例中一种系统架构的示意图;

图2为本发明实施例中一种存储系统的调用方法流程流程图;

图3为本发明实施例中一种存储系统的调用装置的示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例所适用的一种系统架构,如图1所示,包括外部终端101、服务器102和key-value存储系统103。终端101内的应用可以向服务器102发送调用指令,以调用与服务器102相连的key-value存储系统103。key-value存储系统103可以包括一个key-value存储系统,也可以包括多个异构类型的key-value存储系统,如redis、memcached等。key-value存储系统103中缓存或持久存储有数据,可通过服务器102被终端101调用。

具体的,服务器102中包括处理子系统121、监控子系统122和共享数据库123。其中,处理子系统121用于接收终端101发送的调用指令并对其进行解析,确定与调用指令相应的key-value存储系统,适配不同key-value存储系统的接口和通讯,并将调用指令发送给对应的key-value存储系统。监控子系统122用于监控各个key-value存储系统的状态,并更新到共享数据库123中,使得处理子系统121可以根据各个key-value存储系统的状态确定与调用指令对应的key-value存储系统,保证了key-value存储系统的高可用性。共享数据库123中存储了各个key-value存储系统的关键信息和状态,供处理子系统121调用。

本发明实施例提供了一种存储系统的调用方法,流程如图2所示,方法可以包括如下步骤:

S201、服务器确定收到的调用指令对应的第一存储系统。

S202、所述服务器将所述调用指令的格式转换为与所述第一存储系统对应的指令格式。

S203、所述服务器将转换后的调用指令发送给所述第一存储系统。

本发明实施例中,服务器为外部应用提供收发指令的指令接口,外部应用向服务器发送对存储系统的调用指令时,调用指令的格式为与指令接口相应的统一的格式。服务器接收到调用指令后,根据该调用指令确定对应的第一存储系统。由于调用指令的格式与指令接口相适应,而与第一存储系统不兼容,因此,服务器将调用指令的格式转换为与第一存储系统对应的指令格式,以使该调用指令可以被第一存储系统所识别。之后,服务器将转换后的调用指令发送给第一存储系统,这样,外部应用即通过调用指令对调用第一存储系统。现有技术中,不同类型的存储系统具有不同的指令接口,相应的调用指令的格式也不相同,对异构类型的存储系统进行调用时,需根据各个存储系统所对应的指令格式,分别适应性地修改调用指令的格式。本发明实施例屏蔽了不同存储系统的指令格式的差异性,服务器与多个异构类型的存储系统进行连接,外部应用使用统一的指令格式,通过服务器任意调用不同类型的存储系统,解决了不同类型的存储系统不兼容的问题。

可选的,本发明实施例中的第一存储系统可以为key-value存储系统。为了保证对存储系统调用的有效性,所述服务器确定收到的调用指令对应的第一存储系统之前,还包括:

所述服务器监控每个存储系统的状态,确定所有存储系统中可供调用的存储系统。

所述服务器确定收到的调用指令对应的第一存储系统,包括:

所述服务器从可供调用的存储系统中确定所述第一存储系统。

服务器周期性地或实时地对所有key-value存储系统的状态进行监控,并将各个key-value存储系统的状态存储到共享数据库中,使得处理子系统可以根据各个key-value存储系统的状态确定调用指令对应的key-value存储系统。其中,key-value存储系统的状态包括每个key-value存储系统的线路状态,以及单个key-value存储系统的各项功能的状态,分为正常和隔离两种状态。隔离状态可以是该key-value存储系统的线路出现故障或功能异常,也可以是需要测试该key-value存储系统或其中的某个功能,或者某key-value存储系统的版本号需要升级等,若出现类似的这些异常状况,则将该key-value存储系统进行隔离,或将key-value存储系统的该功能进行隔离。这样,服务器即根据调用指令,从可供调用的存储系统,即正常状态的key-value存储系统中确定调用的key-value存储系统。

当key-value存储系统的线路已恢复正常,则服务器自动地恢复key-value存储系统的线路状态为正常。或者,当某个key-value存储系统的某项功能恢复正常后,则服务器将该key-value存储系统的该项功能的状态恢复为正常状态。上述各个key-value存储系统的线路状态以及功能状态可以存储在共享数据库中,供服务器的处理子系统或终端查询,以使终端可以依照查询到的各个key-value存储系统的状态向key-value存储系统发起调用指令。

本发明实施例中对存储系统的调用可以分为以下几种情况:

a、指定单个key-value存储系统

所述服务器将所述调用指令发送给所述第一存储系统之后,还包括:

若所述调用指令为指定第一存储系统的指令,且所述服务器确定所述第一存储系统不可调用,则向终端反馈用于指示所述调用指令失败的信息。

终端或服务器可指定某个特定的key-value存储系统,来完成调用指令的要求。在这种情况下,若对该key-value存储系统调用失败,则不再调用其它的key-value存储系统。

b、指定key-value存储系统分组

这种情况下,本发明实施例还包括:所述服务器将所有的存储系统进行分组;

所述服务器确定所述调用指令指定的存储系统分组中可供调用的存储系统。

本发明实施例依照实际需要,将存储系统进行分组,例如可以依据各个key-value存储系统能够提供的功能,将提供相同功能的key-value存储系统分为一组,或者根据key-value存储系统中存储的数据内容,将存储的数据内容相关的key-value存储系统分为一组;特殊地,依据key-value存储系统的类型,将类型相同的key-value存储系统分为一组。

服务器将所有key-value存储系统的分组情况存储在共享数据库中,终端可通过查询共享数据库,从而确定key-value存储系统的分组情况,然后根据需要,指定某个分组向服务器发出调用指令。此时,服务器从指定的分组中调度线路和功能正常的key-value存储系统来完成调用指令的要求。

c、服务器自动调度

在这种情况下,终端向服务器发送的调用指令没有key-value存储系统的限定,服务器考察所有key-value存储系统,从当前线路状态和功能状态均为正常的key-value存储系统中选取key-value存储系统来完成调用指令的要求。

为了保证选取的key-value存储系统性能状态良好,本发明实施例中,服务器将可供调用的存储系统进行优先级排序;所述服务器根据优先级排序,从可供调用的存储系统中确定所述第一存储系统。

上述三种情况中,情况b中指定了分组,则将该分组中的所有key-value存储系统进行优先级排序。所述服务器将可供调用的存储系统进行优先级排序,包括:

所述服务器将所述调用指令指定的存储系统分组中可供调用的存储系统进行优先级排序;

所述服务器根据优先级排序,从所述调用指令指定的存储系统分组的可供调用的存储系统中确定所述第一存储系统。

也就是说,依据各种性能将各个key-value存储系统进行评分,并依据评分结果对各个key-value存储系统的调用顺序进行排序,key-value存储系统的性能越好,则评分越高,在调用次序中排名越靠前,将被有限调用。服务器将排序最靠高的key-value存储系统作为第一存储系统,即调用指令对应的key-value存储系统。评分要素可以包括key-value存储系统的功能列表、线路状态、功能状态、平均响应时间和调用频次等。

具体地,本发明实施例依据存储系统的平均响应时间和调用频率,将可供调用的存储系统进行优先级排序。

对key-value存储系统的评分可为评分要素的加权,其中平均响应时间和调用频率为较重要的影响因素。服务器周期性地遍历所有线路状态为正常的key-value存储系统,向每个key-value存储系统发送用于监测性能的调用指令。获取每个key-value存储系统的响应时间,并利用获取的每个响应时间,更新共享数据库汇中相应的key-value存储系统的平均响应时间。key-value存储系统的平均响应时间越少,该key-value存储系统的评分越高,相应的优先级排序越靠前。另一方面,对key-value存储系统的调用次数过多,容易导致该key-value存储系统的线路拥堵,影响调用的效率。因此,若key-value存储系统的调用次数越多,则该key-value存储系统的评分越低,相应的优先级排序越靠后。

此外,由于不同key-value存储系统具有不同的通讯方式,为了保证与不同key-value存储系统的通讯,所述服务器将所述调用指令发送给所述第一存储系统,包括:

所述服务器确定所述第一存储系统的通讯方式;

所述服务器按所述第一存储系统的通讯方式,将所述调用指令发送给所述第一存储系统。

key-value存储系统的通讯方式包括函数调用、TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)等。终端根据统一的通讯方式,向服务器发送调用指令。服务器接受到调用指令后,确定出该调用指令对应的第一存储系统,然后按该第一存储系统可接受的通讯方式,将调用指令发送给第一存储系统,从而,本发明实施例通过服务器屏蔽了不同key-value存储系统的通讯方式的差异。

为了更清楚地理解本发明,下面以具体的实施例对上述流程进行详细描述,实施例一的具体步骤如下所示,包括:

第一步、终端向服务器发送调用指令,第三调用指令的格式为服务器提供的指令接口相应的格式,该调用指令为查询指令,指定查询一个key-value存储系统。

第二步、服务器根据收到的查询指令,确定对应的key-value存储系统。

第三步、服务器将查询指令的格式转换为该key-value存储系统对应的指令格式。

第四步、服务器确定该key-value存储系统所能接受的通讯方式,并将查询指令以该通讯方式发送给key-value存储系统。

第五步、该key-value存储系统是否成功接受查询指令,若是,则执行第六步,否则执行第九步。

第六步、key-value存储系统按照查询指令查询数据。

第七步、判断查询处理是否成功,若是,则执行第八步;否则执行第九步。

第八步、key-value存储系统通过服务器向终端反馈查询结果。

第九步、key-value存储系统通过服务器向终端反馈查询失败消息。

实施例二的具体步骤如下所示,包括:

第一步、终端通过服务器查看各个key-value存储系统的基本信息,基本信息的具体内容如表1所示。

表1

第二步、终端向服务器发送调用指令,该调用指令的格式为服务器提供的指令接口相应的格式,该调用指令指定一个类型的key-value存储系统进行数据存储。

第三步、服务器根据收到的存储指令,确定对应的key-value存储系统分组。

第四步、服务器在该key-value存储系统分组中确定线路状态正常,且存储功能为正常状态的key-value存储系统。

第五步、服务器根据平均响应时间和调用频次,为第四步确定的各个存储系统评分。

第六步、服务器确定评分最高的key-value存储系统,并将存储指令的格式改为该评分最高的key-value存储系统对应的指令格式。

第七步、服务器按照该评分最高的key-value存储系统所能接受的通讯方式,向评分最高的key-value存储系统发送存储指令。

第八步、该key-value存储系统根据存储指令,进行数据存储。

第九步、key-value存储系统通过服务器向终端反馈数据数据存储结果。

基于相同的技术构思,本发明实施例还提供一种存储系统的调用装置,如图3所示,包括:

确定模块501,用于确定收到的调用指令对应的第一存储系统;

转换模块502,用于将所述调用指令的格式转换为所述第一存储系统对应的指令格式;

收发模块503,用于将转换后的调用指令发送给所述第一存储系统。

可选的,还包括监控模块504,用于监控每个存储系统的状态,确定所有存储系统中可供调用的存储系统;

所述确定模块,用于从可供调用的存储系统中确定收到的调用指令对应的第一存储系统。

可选的,所述确定模块501,具体用于:

将可供调用的存储系统进行优先级排序;

根据优先级排序,从可供调用的存储系统中确定所述第一存储系统。

可选的,还包括分组模块505,用于将所有的存储系统进行分组;

所述确定模块501,具体用于:

确定所述调用指令指定的存储系统分组中可供调用的存储系统;

将所述调用指令指定的存储系统分组中可供调用的存储系统进行优先级排序;

根据优先级排序,从所述调用指令指定的存储系统分组的可供调用的存储系统中确定所述第一存储系统。

可选的,所述确定模块501,具体用于:根据存储系统的平均响应时间和调用频率,将可供调用的存储系统进行优先级排序。

所述收发模块503,还用于:若所述调用指令为指定第一存储系统的指令,且所述第一存储系统不可调用,则向终端反馈用于指示所述调用指令失败的信息。

可选的,所述收发模块503,具体用于:

确定所述第一存储系统的通讯方式;

按所述第一存储系统的通讯方式,将所述调用指令发送给所述第一存储系统。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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