存储器、报文处理方法及分布式存储系统与流程

文档序号:11778318阅读:178来源:国知局
存储器、报文处理方法及分布式存储系统与流程

本发明实施例涉及数据存储领域,特别涉及一种存储器、报文处理方法及分布式存储系统。



背景技术:

分布式存储系统采用非关系型数据库(notonlysql,nosql)时,通常采用键-值(key-value,kv)存储作为数据存储机制。

参考图1,目前的分布式存储系统通常包括两层:应用层10和存储层20。其中,应用层10包括多个分布式部署的应用节点12,每个应用节点12中设置有用于对数据进行处理的计算模块;存储层20包括多个分布式部署的存储器22,每个存储器22用于存储数据。各个应用节点12和各个存储器22通过有线网络或光纤相连。存储器22向应用节点12提供有kv接口,kv接口是一种软件接口。应用节点12可以通过kv接口向存储器22发送kv报文,kv报文中主要包括key字段和value字段,key字段用于指示数据在存储器中的位置信息,value字段用于指示数据的取值或属性,通过kv接口和kv报文可以实现应用节点12与存储器22之间的交互。

目前的kv报文主要支持读取数据和写入数据,实现对数据的增删查改。当需要对存储器22中的数据进行计算操作时,应用节点12先通过kv接口向存储器22发送用于读取目标数据的kv报文,存储器22将读取到的目标数据携带在另一kv报文中通过kv接口传输给应用节点12,应用节点12对目标数据进行计算处理。

由于一些计算处理所对应的目标数据是大量的,比如,要对十万条目标数据进行排序,得出排名最前的10个数据,此时需要存储器22将十万条目标数据全部传输给应用节点12,由应用节点12对这十万条目标数据进行排序计算。显然,将存储器22中的数据汇聚至应用节点时的网络开销很大,特别是目标数据分散存储在多个存储器22时,所需要的网络开销更大。



技术实现要素:

为了解决存储器需要将目标数据汇聚到有计算能力的应用节点进行计算处理所导致的网络开销较大的问题,本发明实施例提供了一种存储器、报文处理方法及分布式存储系统。所述技术方案如下:

第一方面,提供了存储器,该存储器包括计算芯片和存储介质;计算芯片,用于通过键-值(key-value,kv)接口接收第一kv报文,对第一kv报文进行解析,获得目标数据的key和操作信息;计算芯片,用于根据key从存储介质读取目标数据;计算芯片,用于根据操作信息对目标数据进行计算处理,得到处理后的目标数据;计算芯片,用于以处理后的目标数据作为value生成第二kv报文,通过kv接口发送第二kv报文。

在该存储器中,计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,需要将大量数据都汇聚到具有计算能力的应用节点来完成计算处理而导致的网络开销大的问题,达到了通过存储器对目标数据进行计算处理,直接向应用节点返回处理后的目标数据,降低了网络开销的效果。

结合第一方面,在第一方面的第一种可能的实施方式中,计算芯片,用于对第一kv报文进行解析,获得key字段和context字段,从key字段获得目标数据的key,从context字段获取操作信息。

结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,操作信息包括:操作类型,或,操作类型和操作参数;操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种;操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

第二方面,提供一种存储器,存储器包括:计算芯片和存储介质;计算芯片,用于通过kv接口接收kv报文,对kv报文进行解析,获得目标数据的key、目标数据和操作信息;计算芯片,用于按照操作信息对目标数据进行计算 处理,得到处理后的目标数据;计算芯片,用于根据key将处理后的目标数据写入存储介质。

在该存储器中,计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,应用节点需要先将大量数据都汇聚到其他具有计算能力的应用节点来完成计算处理,再将处理后的数据发送至存储器进行存储,即需要将大量数据在多个应用节点间进行传输而导致的网络开销大的问题,达到了应用节点可以直接将目标数据发送给存储器,通过存储器对目标数据进行计算处理并存储至存储介质中,降低了网络开销的效果。

结合第二方面,在第二方面的第一种可能的实施方式中,计算芯片,用于对kv报文进行解析得到key字段、value字段和context字段,从key字段获得目标数据的key,从value字段获得目标数据,从context字段获取操作信息。

结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,操作信息包括:操作类型,或,操作类型和操作参数;操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种;操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

第三方面,提供一种报文处理方法,该报文处理方法应用于具有计算芯片和存储介质的存储器中,该方法包括:通过kv接口接收第一kv报文;对第一kv报文进行解析,获得目标数据的key和操作信息;根据key从存储介质读取目标数据;根据操作信息对目标数据进行计算处理,得到处理后的目标数据;以处理后的目标数据作为value生成第二kv报文,通过kv接口发送第二kv报文。

在报文处理方法中,存储器的计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,需要将大量数据都汇聚到具有计算能力的应用节点来完成计算处理而导致的网络开销大的问题,达到了通过存储器对目标数据进行计算处理,直接向应用节点返回处理后的目标数据,降低 了网络开销的效果。

结合第三方面,在第三方面的第一种可能的实施方式中,对第一kv报文进行解析,获得目标数据的键key和操作信息,包括:对第一kv报文进行解析得到key字段和context字段;从key字段获得目标数据的key;从context字段获取操作信息。

结合第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,操作信息包括:操作类型,或,操作类型和操作参数;操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种;操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

第四方面,提供一种报文处理方法,该报文处理方法应用于具有计算芯片和存储介质的存储器中,该方法包括:通过kv接口接收kv报文;对kv报文进行解析,获得目标数据的key、目标数据和操作信息;根据操作信息对目标数据进行计算处理,得到处理后的目标数据;根据位置信息将处理后的目标数据写入存储介质。

在报文处理方法中,存储器的计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,应用节点需要先将大量数据都汇聚到其他具有计算能力的应用节点来完成计算处理,再将处理后的数据发送至存储器进行存储,即需要将大量数据在多个应用节点间进行传输而导致的网络开销大的问题,达到了应用节点可以直接将目标数据发送给存储器,通过存储器对目标数据进行计算处理并存储至存储介质中,降低了网络开销的效果。

结合第四方面,在第四方面的第一种可能的实施方式中,对kv报文进行解析,获得目标数据的key、目标数据和操作信息,包括:对kv报文进行解析得到key字段、value字段和context字段;从key字段获得目标数据的key;从value字段获得目标数据;从context字段获取操作信息。

结合第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,操作信息包括:操作类型,或,操作类型和操作参数;操作类型包括: 格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种;操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

第五方面,提供一种分布式存储系统,该系统包括:至少一个应用节点和至少一个存储器,应用节点与存储器通过网络相连;存储器是如上述第一方面或第二方面的存储器;应用节点,用于向存储器发送kv报文;其中,kv报文携带有目标数据的key和操作信息,或,kv报文携带有目标数据的key、目标数据和操作信息。

附图说明

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

图1是非本发明示出的一种传统的分布式存储系统的示意图;

图2a是本发明一示例性实施例提供的存储器的结构示意图;

图2b是本发明一示例性实施例提供的存储器的结构示意图;

图2c是本发明一示例性实施例提供的存储器的结构示意图;

图3是本发明一示例性实施例提供的存储器的结构示意图;

图4是本发明另一示例性实施例提供的存储器的结构示意图;

图5是本发明一示例性实施例提供的分布式存储系统的结构示意图;

图6是本发明另一示例性实施例提供的分布式存储系统的结构示意图;

图7是本发明另一示例性实施例提供的分布式存储系统的结构示意图;

图8是本发明一示例性实施例提供的报文处理方法的流程图;

图9是本发明一示例性实施例提供的报文处理方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施例进行阐述。

请参考图2a、2b和2c,其示出了本发明一个示例性实施例提供的存储器20的结构示意图,该存储器20包括:计算芯片210和存储介质220。

可选的,存储器20是内置有计算芯片210的存储介质220,如图2a所示。

可选的,存储器20是内置有计算芯片210的存储介质220组,如图2b所示。

可选的,存储器20是外置计算芯片210与至少一个存储介质220的组合,如图2c,本实施例对存储介质的数量不作限定。

计算芯片20是具有对数据进行读取,和/或写入,和/或计算能力的芯片。

存储介质220可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,硬盘,快闪存储器,磁盘或光盘。在本发明实施例中,以存储介质220是硬盘或硬盘组来举例说明,计算芯片210可以是具有计算能力的单片机,该计算芯片210集成于硬盘或硬盘组中,或者,该计算芯片210与硬盘或硬盘组电性相连。

请参考图3,其示出了本发明一个示例性实施例提供的存储器30的结构示意图,该存储器30包括:计算芯片310和存储介质320,本实施例以计算芯片310与存储介质320如上图2c所示的电性相连为例进行说明。

其中,计算芯片310包括处理模块330和存储模块340。

处理模块330包括一个或者一个以上处理核心,处理模块330通过运行软件程序以及单元,从而执行各种功能应用以及信息处理。

存储模块340可存储至少一个功能所述的应用程序单元350,应用程序单元350可以包括:第一键-值(key-value,kv)接口351和计算单元352,

第一kv接口351是通过软件编写的应用程序单元,是本实施例中使用的新型kv接口。

处理模块330调用存储模块340中的第一kv接口351接收和/或发送kv报文,kv报文是用于指示对存储介质中的目标数据进行计算处理,并读取处理 后的目标数据,或者,将处理后的目标数据写入存储介质中的新型kv报文。

当kv报文用于指示对存储器中的目标数据进行计算处理,并读取处理后的目标数据时,kv报文包括key字段和context字段,其中,key字段用于指示目标数据的键,context字段用于指示操作信息,目标数据是存储介质中的数据。

当kv报文用于指示对目标数据进行计算处理,并将处理后的目标数据存储至存储器中时,kv报文包括key字段、value字段和context字段,其中,key字段用于指示目标数据的键,context字段用于指示操作信息,value字段用于指示目标数据,目标数据是kv报文中包括的,需要存储至存储器中的数据。

处理模块330调用存储模块340中的计算单元352对目标数据进行计算处理。

基于上述图3所示的存储器,在本实施例中,以第一kv报文用于指示对存储器中的目标数据进行计算处理,并读取处理后的目标数据为例进行说明。

计算芯片,用于通过第一kv接口接收第一kv报文,对第一kv报文进行解析,获得目标数据的key和操作信息。

可选的,第一kv报文包括key字段和context字段。

计算芯片,用于对第一kv报文进行解析,获得key字段和context字段,从key字段获得目标数据的key,从context字段获取操作信息。

在一个示例性的例子中,计算芯片通过第一kv接口接收到的第一kv报文的数据结构如下:

第一kv报文的数据结构中包括pool_id_s、vol_key_s和context_s,其中,当存储器30中包括多个存储介质320时,pool_id_s用于指示目标数 据所在的存储介质,比如,用pool_id_s中不同的值表示不同的存储介质,计算芯片根据从pool_id_s中解析得到的值确定目标数据所在存储介质,例如,存储器30中包括存储介质1和存储介质2,则当计算芯片从pool_id_s解析得到的值是1时,表示目标数据在存储介质1中;当计算芯片从pool_id_s解析得到的值是2时,表示目标数据在存储介质2中。

vol_key_s用于指示目标数据的key,context_s用于指示操作参数,计算芯片从vol_key_s中解析得到key字段,从context_s中解析得到context字段。

可选的,第一kv报文中还可以包括vol_value_s,vol_value_s用于指示目标数据,计算芯片可以从vol_value_s中解析得到value字段,在本实施例中,value字段为空。

在第一kv报文中,context_s的示意性数据结构如下所示:

structcontext_s{

uint16opcode;

void*kv_private;

}

其中,opcode字段用于指示操作类型,*kv_private字段用于指示操作参数,*kv_private字段是可选的。

在上述示例性实施例中,计算芯片通过对context字段中的opcode字段进行解析得到操作类型,对context字段中的*kv_private字段进行解析得到操作参数。

可选的,操作信息包括:操作类型,或,操作类型和操作参数。

可选的,操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种;

可选的,操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

当操作类型是格式转换时,可以是货币转换,例如将人民币转换成美元,格式转换规则是汇率,例如,按照1人民币=0.1544美元进行转换;格式转换还 可以是将10进制数值转换成16进制数值等。

当操作类型是排序时,可以对数值进行排序,排序规则可以是按照数值由大到小排列、按照数据由小到大排列等;可以是对时间进行排序,排序规则可以是按照时间由近及远、按照时间由远及近等。

计算芯片,用于根据key从存储介质读取目标数据。

可选的,存储器中采用kv存储作为数据存储机制,key用于指示目标数据存储的位置信息,key与目标数据对应存储,则计算芯片从存储介质中获取key对应的目标数据。

计算芯片,用于根据操作信息对目标数据进行计算处理,得到处理后的目标数据。

可选的,计算芯片调用计算单元320对目标数据进行计算处理。

在一个示例性的例子中,第一kv报文中包括的key字段是“andy’stradingrecords”,用于指示用户andy的消费记录,context字段中的opcode字段是“sorting”,用于指示操作类型是排序操作,*kv_private字段是“sortingaccordingtothetimesequencefromtheneartothedistant,top(10)”,用于指示排序规则是按照时间由近及远排序取前10个数据。则第一kv报文用于指示“搜索用户andy最近的10次消费记录”。计算芯片根据第一kv报文中的key字段从存储介质中获取key对应的数据,即为用户andy的所有消费记录,对所有消费记录按照时间由近及远的规则进行排序,取前10个数据作为处理后的目标数据,即为用户andy最近10次的消费记录。

计算芯片,用于以处理后的目标数据作为value生成第二kv报文,通过第一kv接口发送第二kv报文。

可选的,第二kv报文包括value字段,或者,包括key字段和value字段,其中value字段的值为处理后的目标数据。

在上述示例性实施例中,将处理后的目标数据包括的10个数据作为第二kv报文的value值,发送第二kv报文,即实现了从存储器中读取用户andy最近10次消费记录。

综上所述,本公开实施例提供的存储器,计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,需要将大量数据都汇 聚到具有计算能力的应用节点来完成计算处理而导致的网络开销大的问题,达到了通过存储器对目标数据进行计算处理,直接向应用节点返回处理后的目标数据,降低了网络开销的效果。

基于上述图3所示的存储器,在本实施例中,以第三kv报文用于指示对目标数据进行计算处理,并将处理后的目标数据写入存储器中为例进行说明。

计算芯片,用于通过第一kv接口接收第三kv报文,对第三kv报文进行解析,获得目标数据的key、目标数据和操作信息。

在本实施例中,第三kv报文包括key字段、value字段和context字段。

计算芯片,用于对第三kv报文进行解析得到key字段、value字段和context字段,从key字段获得目标数据的key,从value字段获得目标数据,从context字段获取操作信息。

在一个示例性的例子中,计算芯片通过第一kv接口接收到的第三kv报文的数据结构如下:

第三kv报文中包括pool_id_s、vol_key_s、vol_value_s和context_s,具体含义可以结合上述实施例,context_s的数结结构与上述实施例示出的context_s的数结结构相同。

在本实施例中,计算芯片通过对context字段中的opcode字段进行解析的到操作类型,对context字段中的*kv_private字段进行解析得到操作参数。

可选的,操作信息包括:操作类型,或,操作类型和操作参数。

可选的,操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种。

可选的,操作类型和操作参数包括如下信息中的至少一种:格式转换和格 式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

计算芯片,用于按照操作信息对目标数据进行计算处理,得到处理后的目标数据。

可选的,计算芯片对目标数据进行计算处理,得到处理后的目标数据。

在一个示例性的例子中,第三kv报文中的key字段是“andy’stradingrecords”,用于指示用户andy的消费记录,value字段是“200rmb”,用于指示人民币200元,context字段中的opcode字段是“rmbtousd”,用于指示操作类型是将人民币转换为美元,*kv_private字段是“1rmb=0.1544usd”,用于指示汇率是1人民币=0.1544美元,则第三kv报文用于指示“将人民币200元按照1人民币=0.1544美元的汇率转换成美元,并存储为用户andy的消费记录”。计算芯片根据第三kv报文对目标数据进行格式转换,将目标数据“200rmb”转换为处理后的目标数据“3.088usd”。

计算芯片,用于根据key将处理后的目标数据写入存储介质。

可选的,存储器中的数据采用kv存储作为数据存储机制,key用于指示处理后的目标数据的存储位置信息,计算芯片将处理后的目标数据与key对应存储

在上述示例性实施例中,计算芯片将处理后的目标数据3.088usd在存储介质中与key对应存储,即实现了将处理后的目标数据3.088美元存储为用户andy的消费记录。

综上所述,本公开实施例提供的存储器,计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,应用节点需要先将大量数据都汇聚到其他具有计算能力的应用节点来完成计算处理,再将处理后的数据发送至存储器进行存储,即需要将大量数据在多个应用节点间进行传输而导致的网络开销大的问题,达到了应用节点可以直接将目标数据发送给存储器,通过存储器对目标数据进行计算处理并存储至存储介质中,降低了网络开销的效果。

在基于上述实施例的其他可选实施例中,如图4所示,存储模块340中的应用程序单元350还包括:分发单元353和第二kv接口354。

第二kv接口354是通过软件编写的应用程序单元,第二kv接口是传统kv接口。

处理模块330通过调用存储模块340中的分发单元353对接收到的kv报文进行解析。

在一个示例性的例子中,计算芯片接收到的kv报文中包括的context_s的示意性数据结构如下所示:

其中,opcode字段和*kv_private字段的含义可以参考上述实施例,sig字段用于指示接收该kv报文的接口类型,比如,sig=1时,指示使用第一kv接口接收kv报文;sig=2时,指示使用第二kv接口接收kv报文。

type字段用于指示kv报文的类型,比如,type=1时,指示该kv报文用于读取目标数据;type=2时,指示该kv报文用于写入数据。

version字段用于指示该存储器的版本号,比如,version=1.0,version=2.0等。

reserve字段是保留字段,可以对其自定义成为新增字段。

可选的,version字段和reserve字段都是可选的。

处理模块330通过调用分发单元353对kv报文进行解析后,根据kv报文中的预定字段,通过第一kv接口或者第二kv接口接收该kv报文,在上述示例性例子中,预定字段是sig字段,当解析得到sig=1时,通过第一kv接口接收kv报文;当解析得到sig=2时,通过第二kv接口接收kv报文,预定字段还可以是type字段、opcode字段等,本实施例对此不作限定。

当处理模块使用第一kv接口接收用于指示对目标数据进行计算处理并读取处理后的目标数据,或将处理后的目标数据存储值存储器中的新型kv报文时,计算芯片根据新型kv报文对目标数据进行计算处理并读取处理后的目标数据,或将处理后的目标数据存储至存储介质中的方法可以参考上述示例性实施例。

当处理模块调用第二kv接口接收用于指示对目标数据进行读取,或者用于指示将目标数据写入存储器中的传统kv报文时,方法如下:

在一种可能的实施方式中,计算芯片通过第二kv接口接收第一传统kv报文,第一传统kv报文用于指示从存储器中读取数据。

计算芯片,用于对第一传统kv报文进行解析,获得key字段,从key字段中获得目标数据的key。

在一个示例性的例子中,计算芯片通过第二kv接口接收到的第一传统kv报文的数据结构如下:

第一传统kv报文中包括pool_id_s和vol_key_s,可选的,第一传统kv报文还包括vol_value_s,各字段的具体含义可以结合上述实施例。

计算芯片,用于根据key获取目标数据,将目标数据作为value生成第二传统kv报文,通过第二kv接口发送第二传统kv报文。

可选的,第二传统kv报文包括value字段,或者,包括key字段和value字段。

在一个示例性的例子中,第一传统kv报文中的key字段是“andy’stradingrecords”,用于指示用户andy的消费记录,则第一传统kv报文用于指示“搜索用户andy最近的消费记录”,计算芯片从存储介质中获取key对应的目标数据即为用户andy的消费记录,将获取到的目标数据作为第二传统kv报文的value值,发送第二传统kv报文,即实现了从存储器中读取用户andy的消费 记录。

在另一种可能的实施方式中,计算芯片通过第二kv接口接收第三传统kv报文,第三传统kv报文用于指示将数据写入存储器中。

计算芯片,用于对第三传统kv报文进行解析,获得key字段和value字段,从key字段中获得目标数据的key,从value字段中获得目标数据。

在一个示例性的例子中,计算芯片接收到的第三传统kv报文的数据结构如下:

第三传统kv报文中包括pool_id_s、vol_key_s和vol_value_s,各字段的具体含义可以结合上述实施例。

计算芯片,用于根据key将目标数据写入存储介质。

综上所述,本公开实施例提供的存储器还包括传统kv接口,计算芯片还可以通过传统kv接口接收传统kv报文,根据传统kv报文对目标数据进行读取和/或写入,达到了新型kv接口与传统的kv接口兼容的效果。

请参考图5,其示出了本发明一个示例性实施例提供的分布式存储系统的结构示意图。该分布式存储系统包括:至少一个应用节点510和至少一个第一存储器520。

其中,第一存储器520是包括第一kv接口的存储器,第一存储器520可以如上述图3所示的存储器,或者,是上述图4所示的存储器,本实施例以第一存储器520如上图4所示为例进行说明。

可选的,本公开实施例提供的分布式存储系统是hadoop、mongodb、membase、cassandra、beansdb、redis等架构的非关系型数据库。

可选的,在该分布式存储系统中,还包括至少一个第二存储器530,第二存储器530是仅包括第二kv接口,不包括第一kv接口的存储器。

应用节点510是分布式存储系统中用于提供数据库业务的节点,在一个分布式存储系统中,可以包括一个或多个应用节点510,不同的应用节点510的作用相同或者不同,例如,应用节点510具有发送数据库业务请求的能力,或者,应用节点510具有计算能力。不同的分布式架构中应用节点的含义可以不同,例如,在mongodb场景中,应用节点是:主接入请求单元(master)、从请求接入单元(slaver)或从事务处理单元(executor);而在hadoop场景中,应用节点是:主接入请求单元(master)、从请求接入单元(slaver)、从事务处理单元(executor)或存储管理单元(storage),本实施例对应用节点的具体含义不作限定。

可选的,一个应用节点510与一个或多个第一存储器520和/或第二存储器530相连,一个第一存储器520或一个第二存储器530与一个或多个应用节点510相连,本实施例对此不作限定。

应用节点510,用于向与该应用节点相连的第一存储器520发送新型kv报文,其中,新型kv报文携带有目标数据的key和操作信息,或,新型kv报文携带有目标数据的key、目标数据和操作信息。

应用节点510,还用于向该应用节点相连的第一存储器520发送传统kv报文,其中,传统kv报文携带有目标数据的key,或,传统kv报文携带有目标数据的key和目标数据。

应用节点510,还用于向该应用节点相连的第二存储器530发送传统kv报文,传统kv报文携带有目标数据的key,或者,传统kv报文携带有目标数据的key和目标数据。

请参考图6,其示出了本发明另一个示例性实施例提供的分布式存储系统在mongodb场景时的结构示意图。

该分布式存储系统包括:用户单元(userprogram)610、主请求接入单元(master)620、从请求接入单元(slaver)630、从事务处理单元(executor)640、第一存储器650和第二存储器660。

其中,从请求接入单元630包括n个,图6示出了从请求接入单元1631、从请求接入单元2632和从请求接入单元n633,n为正整数,本实施例对n的取值不作限定。

可选的,第一存储器650是包括第一kv接口的存储器,可以是如上图3或上图4所示的存储器,第二存储器660是仅包括第二kv接口、不包括第一kv接口的存储器。

需要说明的是,该分布式存储系统中可以包括多个主请求接入单元620,每一个主请求接入单元可以与一个或多个从请求接入单元相连,图6示例性的示出了包括一个主请求接入单元620的情况,本实施例对此不作限定。

可选的,主请求接入单元620与至少一个用户单元610相连,用于接收并处理用户单元610发送的业务指令,用户单元610可以是应用程序,业务指令用于指示对目标数据进行读取和/或写入和/或计算处理。

可选的,主请求接入单元620与至少一个从请求接入单元相连,主请求接入单元620根据预定规则将接收到的业务指令分发至从请求接入单元,预定规则可以是年龄、性别、地区等各类型的规则,本实施例对预定规则不作限定。

在一个示例性的例子中,主请求接入单元620与从请求接入单元1631、从请求接入单元2632和从请求接入单元n633相连,主请求接入单元620接收到的业务指令是“搜索用户andy最近的10次消费记录”:

当预定规则是按照年龄进行分发时,则将“搜索用户andy最近的10次消费记录,且用户andy的年龄小于10岁”的业务指令分发至从请求接入单元1、将“搜索用户andy最近的10次消费记录,且用户andy的年龄大于等于10岁、小于20岁”的业务指令分发至从请求接入单元2、将“搜索用户andy最近的10次消费记录,且用户andy的年龄大于等于50岁、小于60岁”分发给从请求接入单元3。

从请求接入单元与一个或多个存储资源池相连,一个存储资源池中包括一个或多个第一存储器和/或第二存储器,从请求接入单元根据接收到的业务指令搜索与该从请求接入单元相连的存储资源池中的第一存储器和/或第二存储器。

当从请求接入单元搜索的存储资源池中包括的是第一存储器时,从请求接入单元直接与存储资源池相连;当从请求接入单元搜索的存储资源池中包括的是第二存储器时,从请求接入单元与从事务处理单元相连,从事务处理单元再与存储资源池相连,从事务处理单元是具有对数据进行计算处理能力的单元。

如图6所示,其示例性的示出了从请求接入单元1与存储资源池1相连,搜索存储资源池1中包括的第一存储器650;从请求接入单元2与存储资源池2 相连,搜索存储资源池2中包括的第一存储器650;从请求接入单元n与从事物处理单元n相连,搜索与从事物处理单元n相连的存储资源池n中的第二存储器660。

在本实施例中,主请求接入单元620、从请求接入单元1631、从请求接入单元2632、从请求接入单元n633和从事务处理单元n640都是应用节点。

从请求接入单元在接收到主请求接入单元发送的业务指令后,根据搜索的存储资源池中包括的是第一存储器650和第二存储器660,有两种可能的实现方式:

在第一种可能的实现方式中,从请求接入单元搜索存储资源池中的第一存储器,如图6所示的从请求接入单元1631搜索的存储资源池1和从请求接入单元2632搜索的存储资源池2包括第一存储器650。

从请求接入单元将接收到的主请求接入单元发送的业务指令生成kv报文发送给存储资源池中的第一存储器,第一存储器中计算芯片通过分发单元接收kv报文,根据接收到的kv报文是新型kv报文或传统kv报文的不同,有两种不同的处理方式:

在第一种处理方式中,从请求接入节点发送的kv报文是新型kv报文,计算芯片通过第一kv接口接收新型kv报文,根据新型kv报文对目标数据进行计算处理后,将处理后的目标数据存储至存储介质中,或者,返回给从请求接入节点,具体实现方式可以结合上述实施例。

在第二种处理方式中,从请求接入节点发送的kv报文是传统kv报文,计算芯片通过第二kv接口接收该传统kv报文,根据该传统kv报文将目标数据写入存储介质中,或者,返回给从请求接入节点,具体实现方式可以结合上述实施例。

在第二种可能的实现方式中,从请求接入单元搜索存储资源池中的第二存储器,如图6所示的从请求接入单元n633搜索的存储资源池n包括第二存储器660。

从请求接入单元接收到主请求接入单元发送的业务指令后,根据mongodb场景中的通信规则将业务指令传输给从事务处理单元,有两种不同的处理方式:

在第一种处理方式中,从事务处理单元根据业务指令生成传统kv报文和操作信息,从事务处理单元将传统kv报文发送给第二存储器,第二存储器根 据传统kv报文从存储介质中读取目标数据返回给从事务处理单元,从事务处理单元根据操作信息对目标数据进行计算处理,并将处理后的目标数据返回给从请求接入单元或者发送给第二存储器进行存储;或者,从事务处理单元根据操作信息对传统kv报文中的目标数据进行处理,并将处理后的目标数据发送给第二存储器进行存储。

在第二种处理方式中,从事务处理单元根据业务指令生成传统kv报文,则从事务处理单元将传统kv报文转发给第二存储器,第二存储器根据传统kv报文从存储介质中读取目标数据,并将目标数据返回给从事务处理单元,由从事务处理单元转发给从请求接入单元;或者,将目标数据存储到存储介质中。

当分布式存储系统包括至少两个从请求接入单元时,从请求接入单元根据接收到的第一存储器或者从事务处理单元返回的访问结果,并将访问结果反馈给主请求接入单元,主请求接入单元在接收到每一个从请求接入单元反馈的访问结果后,对所有访问结果进行处理并汇总,得到最终结果。

请参考图7,其示出了本发明另一个示例性实施例提供的分布式存储系统在hadoop场景时的结构示意图。

该分布式存储系统包括:用户单元(userprogram)710、主请求接入单元(master)720、从请求接入单元(slaver)730、从事务处理单元(executor)740、存储管理单元(storage)750、第一存储器760和第二存储器770。

其中,从请求接入单元720和存储管理单元750都包括m个,图6示出了从请求接入单元1631、从请求接入单元2632和从请求接入单元m633,以及存储管理单元1751、存储管理单元2752和存储管理单元m753,m为正整数,本实施例对m的取值不作限定。

可选的,第一存储器760是包括第一kv接口的存储器,可以是如上图3或上图4所示的存储器,第二存储器770是仅包括第二kv接口、不包括第一kv接口的存储器。

需要说明的是,该分布式存储系统中可以包括多个主请求接入单元720,每一个主请求接入单元可以与一个或多个从请求接入单元相连,图7示例性的示出了包括一个主请求接入单元720的情况,本实施例对此不作限定。

可选的,从请求接入单元与存储管理单元相连,通过存储管理单元与一个 或多个存储资源池相连,一个存储资源池中包括一个或多个第一存储器和/或第二存储器,从请求接入单元根据接收到的业务指令搜索与该从请求接入单元相连的存储资源池中的第一存储器和/或第二存储器。

当从请求接入单元搜索的存储资源池中包括的是第一存储器时,从请求接入单元根据业务指令生成分布式文件系统(hadoopdistributedfilesystem,hdfs)信令发送给存储管理单元,存储管理单元根据hdfs信令生成kv报文发送给第一存储器;当从请求接入单元搜索的存储资源池中包括的是第二存储器时,从请求接入单元根据hadoop架构中的传输规则将业务指令传输给从事务处理单元,从事务处理单元根据业务指令生成hdfs信令,将hdfs信令发送给存储管理单元,存储管理单元根据hdfs信令生成kv报文发送给第二存储器,从事务处理单元是具有对数据进行计算处理能力的单元。

如图7所示,其示例性的示出了从请求接入单元1与存储管理单元1相连,存储管理单元1与存储资源池1相连,从请求接入单元1搜索存储资源池1中包括的第一存储器760;从请求接入单元2与从事物处理单元2相连,从事物处理单元2与存储管理单元2相连,存储管理单元2与存储资源池2相连,从请求接入单元2搜索存储资源池2中包括的第二存储器770;从请求接入单元m与从事物处理单元m相连,从事物处理单元m与存储管理单元m相连,存储管理单元m与存储资源池m相连,从请求接入单元m搜索存储资源池m中的第二存储器770。

在本实施例中,主请求接入单元720、从请求接入单元1731、从请求接入单元2732、从请求接入单元m733、从事务处理单元2741、从事务处理单元3742、存储管理单元1、存储管理单元2和存储管理单元m都是应用节点。

存储管理单元生成kv报文,kv报文是用于指示对目标数据进行计算处理并读取处理后的目标数据,或将处理后的目标数据存储值存储器中的新型kv报文;或者,kv报文是仅用于指示对目标数据进行读取或写入的传统kv报文。从请求接入单元搜索的存储资源池中包括的是第一存储器760或第二存储器770,有两种可能的实现方式:

在第一种可能的实现方式中,从请求接入单元搜索存储资源池中的第一存储器,如图7所示的从请求接入单元1731搜索的存储资源池1包括第一存储器760。

存储管理单元将生成的kv报文发送给存储资源池中的第一存储器,第一存储器中的计算芯片根据接收到的kv报文是新型kv报文或传统kv报文的不同,有两种不同的处理方式:

在第一种处理方式中,存储管理单元发送的kv报文是新型kv报文,计算芯片通过第一kv接口接收新型kv报文,根据新型kv报文对目标数据进行计算处理后,写入存储介质中,或者,返回给存储管理单元,由存储管理单元转发给从请求接入节点,具体实现方式可以结合上述实施例。

在第二种处理方式中,从请求接入节点发送的kv报文是传统kv报文,计算芯片通过第二kv接口接收该传统kv报文,根据该传统kv报文将目标数据写入存储介质中,或者,返回给存储管理单元,由存储管理单元转发给从请求接入节点,具体实现方式可以结合上述实施例。

在第二种可能的实现方式中,从请求接入单元搜索存储资源池中的第二存储器,如图7所示的从请求接入单元2732搜索的存储资源池2和从请求接入单元m733搜索的存储资源池m包括第二存储器770。

从请求接入单元将业务指令发送给从事务处理单元,有两种不同的处理方式:

在第一种处理方式中,从请求接入单元发送的业务指令用于指示对目标数据进行计算处理,并读取处理后的目标数据或将处理后的目标数据存储至存储器中,从事务处理单元对业务指令解析得到数据部分和操作部分,将数据读取部分发送给存储管理单元,由存储管理单元根据数据部分生成传统kv报文发送给第二存储器,第二存储器根据传统kv报文从存储介质中读取目标数据返回给存储管理单元,由存储管理单元发送给从事务处理单元,从事务处理单元根据操作部分对目标数据进行计算处理,并将处理后的目标数据返回给从请求接入单元或者由存储管理单元转发给第二存储器进行存储;或者,从事务处理单元根据操作部分对数据部分进行计算处理,并将计算处理后的目标数据发送给存储管理单元生成传统kv报文发送给第二存储器进行存储。

在第二种处理方式中,从请求接入单元发送的业务指令用于指示读取目标数据或将目标数据写入存储器中,从事务处理单元对业务指令解析得到数据部分发送给存储管理单元,由存储管理单元根据数据部分生成传统kv报文发送给第二存储器,第二存储器根据传统kv报文从存储介质中读取目标数据返回 给存储管理单元,由存储管理单元发送给从事务处理单元,再由从事务处理单元返回给从请求接入单元;或者,第二存储器根据传统kv报文将目标数据写入存储介质中。

当分布式存储系统包括至少两个从请求接入单元时,从请求接入单元根据接收到的第一存储器或者从事务处理单元返回的kv报文获取访问结果,并将访问结果反馈给主请求接入单元,主请求接入单元在接收到每一个从请求接入单元反馈的访问结果后,对所有访问结果进行处理并汇总,得到最终结果。

在一个示例性的例子中,以分布式存储系统在mongodb场景中为例,分布式系统的结构示意图如上图6所示。

假设从事务处理单元n接收到的业务指令是“搜索用户andy最近的10次消费记录”,从事务处理单元n根据该业务指令生成传统kv报文和操作信息,传统kv报文中的key字段是“andy’stradingrecords”,用于指示用户andy的消费记录,操作信息包括操作类型是排序操作,以及排序规则是按照时间由近及远取top(10)。

从事务处理单元n将传统kv报文发送给第二存储器,第二存储器从存储介质中获取key对应的目标数据,即用户andy的消费记录,假设获取到的目标数据有10000个,则传统存储器将10000个目标数据都返回给从事务处理单元n,从事务处理单元n对第二存储器返回的10000个目标数据按照时间由近及远进行排序,获取前10个数据,即为处理后的目标数据,并将这10个数据返回给从请求接入单元。

假设从请求接入单元1接收到的业务指令也是“搜索用户andy最近的10次消费记录”,从请求接入单元1根据该业务指令生成新型kv报文,将该新型kv报文发送给第一存储器,第一存储器中的计算芯片对新型kv报文解析得到目标数据的key是“andy’stradingrecords”,用于指示用户andy的消费记录,context字段中的opcode字段是“sorting”,用于指示操作类型是排序操作,*kv_private字段是“sortingaccordingtothetimesequencefromtheneartothedistant,top(10)”,用于指示排序规则是按照时间由近及远排序取前10个数据。计算芯片根据key从存储介质中获取到的目标数据,即用户andy的消费记录,假设目标数据有10000个,计算芯片对10000个目标数据按照时间由近及远进 行排序,获取前10个数据作为处理后的目标数据,并直接将10个处理后目标数据返回给从请求接入单元即可。

请参考图8,其示出了本发明一个示例性实施例提供的报文处理方法的流程图,本实施例以该方法用于如图3所示的存储器中来举例说明,该方法包括以下几个步骤:

步骤801,计算芯片通过kv接口接收第一kv报文。

可选的,第一kv报文用于对存储介质中的目标数据进行计算处理,并读取处理后的目标数据。

步骤802,计算芯片对第一kv报文进行解析,获得目标数据的key和操作信息。

可选的,计算芯片对第一kv报文进行解析得到key字段和context字段,从key字段获得目标数据的key,从context字段获取操作信息。

可选的,操作信息包括:操作类型,或,操作类型和操作参数。

可选的,操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种。

可选的,操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

步骤803,计算芯片根据key从存储介质读取目标数据。

步骤804,计算芯片根据操作信息对目标数据进行计算处理,得到处理后的目标数据。

步骤805,计算芯片以处理后的目标数据作为value生成的第二kv报文,通过kv接口发送第二kv报文。

综上所述,本公开实施例提供的报文处理方法,存储器的计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,需要将大量数据都汇聚到具有计算能力的应用节点来完成计算处理而导致的网络开销大的问题,达到了通过存储器对目标数据进行计算处理,直接返回处理后的 目标数据,降低了网络开销的效果。

请参考图9,其示出了本发明一个示例性实施例提供的报文处理方法的流程图,本实施例以该方法用于如图3所示的存储器中来举例说明,该方法包括以下几个步骤:

步骤901,计算芯片通过kv接口接收kv报文。

可选的,kv报文用于对目标数据进行计算处理后存储至存储介质中。

步骤902,计算芯片对kv报文进行解析,获得目标数据的key、目标数据和操作信息。

可选的,计算芯片对kv报文进行解析得到key字段、value字段和context字段,从key字段获得目标数据的key,从value字段获得目标数据,从context字段获取操作信息。

可选的,操作信息包括:操作类型,或,操作类型和操作参数。

可选的,操作类型包括:格式转换、加密、解密、压缩、比较、排序和哈希计算中的至少一种。

可选的,操作类型和操作参数包括如下信息中的至少一种:格式转换和格式转换规则、加密和加密密钥、加密和加密算法类型、解密和解密密钥、解密和解密算法类型、压缩和压缩比、压缩和压缩算法类型、比较和比较规则、排序和排序规则、哈希计算和哈希算法类型。

步骤903,计算芯片根据操作信息对目标数据进行计算处理,得到处理后的目标数据。

步骤904,计算芯片根据位置信息将处理后的目标数据写入存储介质。

综上所述,本公开实施例提供的报文处理方法,存储器的计算芯片可以根据操作信息对目标数据进行计算处理,并反馈处理后的目标数据,解决了相关技术中传统存储器只具有存储能力,当需要对目标数据进行计算处理时,应用节点需要先将大量数据都汇聚到其他具有计算能力的应用节点来完成计算处理,再将处理后的数据发送至存储器进行存储,即需要将大量数据在多个应用节点间进行传输而导致的网络开销大的问题,达到了应用节点可以直接将目标数据发送给存储器,通过存储器对目标数据进行计算处理并存储至存储介质中,降低了网络开销的效果。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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