一种NVMe网络化存储的实现方法、终端、服务器及系统与流程

文档序号:12462573阅读:524来源:国知局
一种NVMe网络化存储的实现方法、终端、服务器及系统与流程

本发明涉及数据传输领域,具体涉及一种NVMe网络化存储的实现方法、终端、及服务器及系统。



背景技术:

传统的存储架构里,由于硬盘访问速度的局限,以往通用的串行接口(Serial Advanced Technology Attachment,SATA)和串行连接小型计算机系统接口(Serial Attached Small Computer System Interface,SAS)接口完全能够满足硬盘的带宽需求,而面对闪存速度上百倍的提升,接口的带宽成为了输入输出端口(Input/Output,I/O)的最大瓶颈。AMD公司的Fusion-io的成功就直接源于其开发的专利PCIe(Peripheral Component Interconnect Express,PCIe)闪存卡,可以加入到服务器中进而实现对应用的加速,并达到微秒级的低访问延迟,而SATA/SAS则无论如何无法达到这个水平。

因此在闪存时代,接口规范需要重大变革。从而针对PCIe接口制定的非易失性存储器(Non-volatile Memory Express,NVMe)标准由此应运而生。目前的NVMe是一个针对使用PCIe固态硬盘(Solid State Drives,SSD)的企业和普通客户端系统开发的可扩展的主机控制芯片接口标准。

由于基于本地存储的NVMe技术扩展比较困难,应用场景十分有限,无法发挥NVMe的高并发的优势。随着NVMe技术的进一步发展,出现了一些基于NVMe的网络化存储(NVMe over Fabric,NOF),例如将远程直接数据存取(Remote Direct Memory Access,RDMA)协议与NVMe协议相结合的方式实现NOF。

但是,由于仅仅将NVMe协议与RDMA协议简单进行结合,完成一次NVMe需要进行复杂的交互过程和处理过程,导致NOF的性能较差。



技术实现要素:

本发明实施例提供了一种NVMe网络化存储的实现方法、终端、及服务器及系统,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理过程复杂度,从而提高NOF的性能。

有鉴于此,本发明实施例第一方面提供一种NVMe网络化存储的实现方法,可包括:

终端生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;

终端通过RDMA将NVMe指令发送至设置于服务器内的SQ;

当NVMe指令中指示读取数据操作时,终端通过RDMA接收服务器发送的待读取数据;

或,

当NVMe指令中指示写入数据操作时,终端通过RDMA向服务器发送待写入数据;

终端接收服务器通过RDMA发送的NVMe完成指令;

终端将NVMe完成指令写入设置于终端内的CQ。

结合第一方面,在第一方面的第一种可能的实现方式中,终端通过RDMA将NVMe指令发送至服务器的SQ可包括:

终端将NVMe指令转换成RDMA支持的第一工作队列元素(Work Queue Element,WQE);

终端的第一RDMA收发模块将第一WQE发送至服务器的第二RDMA收发模块,以使得第二RDMA收发模块将第一WQE解析成NVMe指令并写入SQ。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,若NVMe指令中指示写入数据操作,在终端通过RDMA向服务器发送待写入数据之前,该方法还可包括:

终端接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。

结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,终端接收服务器通过RDMA发送的NVMe完成指令可包括:

第一RDMA收发模块接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE;

第一RDMA收发模块将第二WQE解析成NVMe完成指令。

结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,若NVMe指令中指示读取数据操作,终端通过RDMA接收服务器发送的待读取数据具体为:

第一RDMA收发模块接收第二RDMA收发模块发出的待读取数据。

结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述方法还包括:

所述服务器从所述SQ中读取所述NVMe指令。

本发明实施例第二方面还提供一种NVMe网络化存储的实现方法,可包括:

服务器接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,所述NVMe指令中指示读取数据操作或写入数据操作;

服务器从SQ中读取该NVMe指令;

当根据NVMe指令确定为读取数据操作时,服务器通过RDMA将待读取数据发送至终端;

或,

当根据NVMe指令确定为写入数据操作时,服务器通过RDMA接收终端发送的待写入数据;

服务器生成NVMe完成指令;

服务器将NVMe完成指令通过RDMA发送至终端。

结合第二方面,在第二方面的第一种可能的实现方式中,服务器接收终端通过RDMA发送的NVMe指令可包括:

服务器通过服务器的第二RDMA收发模块接收终端的第一RDMA收发模块发送的第一WQE;

服务器将第一WQE解析成NVMe指令。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,若根据NVMe指令确定为读取数据操作时,服务器通过RDMA将待读取数据发送至终端具体为:

服务器通过第二RDMA收发模块向第一RDMA收发模块发送待读取数据。

结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,若根据NVMe指令确定为读取数据操作时,在服务器通过RDMA接收终端发送的待写入数据之前,方法还可包括:

服务器通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作。

结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,服务器将NVMe完成指令通过RDMA发送至终端可包括:

服务器将NVMe完成指令转换成RDMA支持的第二WQE;

服务器通过第二RDMA收发模块将第二WQE发送至第一RDMA收发模块。

本发明实施例第三方面还提供一种服务器,可包括:

第一处理模块,用于生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;

第一RDMA收发模块,用于通过RDMA将NVMe指令发送至设置于服务器内的SQ;

第一RDMA收发模块还用于当NVMe指令中指示读取数据操作时,通过RDMA接收服务器发送的待读取数据;

或,

当NVMe指令中指示写入数据操作时,通过RDMA向服务器发送待写入数据;

第一RDMA收发模块还用于接收服务器通过RDMA发送的NVMe完成指令;

第一处理模块还用于将NVMe完成指令写入设置于终端内的CQ。

结合第三方面,在第三方面的第一种可能的实现方式中,第一RDMA收发模块包括:

第一转换单元,用于将NVMe指令转换成RDMA支持的第一工作队列元素WQE;

第一收发单元,用于将第一WQE发送至服务器的第二RDMA收发模块,以第二RDMA收发模块将第一WQE解析成NVMe指令并写入SQ。

结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,第一收发单元还用于:

接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。

结合第三方面的第一种可能的实现方式,在第三方面的第三种可能的实现方式中,第一收发单元还用于:

接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE;

所述第一转换单元还用于:

将第二WQE解析成NVMe完成指令。

结合第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,第一收发单元还具体用于:

接收第二RDMA收发模块发出的待读取数据。

本发明实施例第四方面还提供一种服务器,该服务器用作服务器,该服务器可包括:

第二RDMA收发模块,用于接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,所述NVMe指令中指示读取数据操作或写入数据操作;

第二处理模块,用于从所述SQ中读取所述NVMe指令;

第二RDMA收发模块还用于,

当根据NVMe指令确定为读取数据操作时,通过RDMA将待读取数据发送至终端;

或,

当根据NVMe指令确定为写入数据操作时,通过RDMA接收终端发送的待写入数据;

第二处理模块用于生成NVMe完成指令;

第二RDMA收发模块还用于,

将NVMe完成指令通过RDMA发送至终端。

结合第四方面,在第四方面的第一种可能的实现方式中,第二RDMA收发模块包括:

第二收发单元,用于接收终端的第一RDMA收发模块发送的第一WQE;

第二转换单元,用于将第一WQE解析成NVMe指令。

结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,第二收发单元还具体用于:

向第一RDMA收发模块发送待读取数据。

结合第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,第二收发单元还用于:

向第一RDMA收发模块发起RDMA读取操作。

结合第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式或第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,第二转换单元还用于:

将NVMe完成指令转换成RDMA支持的第二WQE;

第二收发单元还用于:

将第二WQE发送至第一RDMA收发模块。

本发明第五方面还提供一种NVMe网络化存储系统,可包括:

终端,用于生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;

终端还用于通过远程直接数据存取RDMA将NVMe指令发送至设置于服务器内的请求队列SQ;

服务器,用于从SQ中读取NVMe指令;

当NVMe指令中指示读取数据操作时,服务器通过RDMA将待读取数据发送至终端;

或,

当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据;

服务器还用于接收待写入数据;

当服务器完成NVMe指令指示的读取数据操作或写入数据操作时,服务器还用于生成NVMe完成指令;

服务器还用于将NVMe完成指令通过RDMA发送至设于终端的CQ。

结合第五方面,在第五方面的第一种可能的实现方式中,当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据包括:

当NVMe指令确定为写入数据操作时,服务器向终端发起RDMA读取请求;

终端接收RDMA读取请求;

根据RDMA读取请求终端通过RMDA向服务器发送待写入数。

从以上技术方案可以看出,本发明实施例具有以下优点:将NVMe中的完成队列(Completion Queue,CQ)布置在终端内,将NVMe中的请求队列(Submission Queue,SQ)布置在服务器内,终端与服务器之间通过远程直接数据存取(Remote Direct Memory Access,RDMA)进行通信,即终端生成的NVMe指令会由终端通过RDMA发送至服务器内的SQ,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则终端通过RDMA接收服务器发送的待读取数据,若NVMe指令中指示写入数据操作,则终端通过RDMA向服务器发送待写入数据,而后,终端会通过RDMA接收到服务器发送的NVMe完成指令,并写入终端中的CQ,将NVMe完成指令写入CQ中表示一次读数据操作或是写数据操作已经完成,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。

附图说明

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

图1a是现有NVMe工作流程示意图;

图1b是现有NVMe网络化存储的一种结构示意图;

图1c是现有NVMe网络化存储的另一种结构示意图;

图2是本发明实施例的NVMe网络化存储的实现方法的一个实施例图;

图3是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图;

图4是本发明实施例的NVMe网络化存储的实现方法的一个实施例图;

图5是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图;

图6是本发明实施例的NVMe网络化存储的系统的一个实施例图;

图7是本发明实施例的NVMe网络化存储的系统的另一个实施例图;

图8是本发明实施例的服务器的一个实施例图;

图9是本发明实施例的服务器中的第一RDMA收发模块的一个实施例图;

图10是本发明实施例的服务器的一个实施例图;

图11是本发明实施例的服务器中的第二RDMA收发模块的一个实施例图。

具体实施方式

本发明实施例提供了一种NVMe网络化存储的实现方法、终端、服务器及系统,能够使NVMe技术基于本地存储的变为基于网络化存储,从而增大NVMe技术的适用范围,从而发挥NVMe的高并发的优势。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

以下分别进行详细说明。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。

现有的NVMe协议主要应用本地,请参阅图1a,图1a是现有NVMe工作流程示意图,其中主要分为主端和控制端,NVMe的队列分为管理队列和I/O队列,控制端与主端的以讯息式中断(Message Signaled Interrupts,MSI)-X的中断方式进行通信,主端通过SQ下发命令给控制端,控制端完成命令后将命令完成状态通过CQ返回给主端;以管理队列为例,由主端的管理控制器通过管理类的SQ向控制端下发管理命令,当控制端完成该管理命令后,会向主端的管理控制器发送一个管理类的CQ,表示已完成主端下发的管理指令;再以I/O队列为例,由主端的某一核心通过I/O类的SQ向控制端下发I/O命令,当控制端完成I/O命令后,会向主端的下发I/O命令的核心发送一个I/O类的CQ,表示已完成主端下发的I/O命令。

由上可见,该NVMe协议的主要适用范围是本地端,因此其应用场景有限,从而扩展比较困难,无法发挥NVMe的高并发的优势,如当遇到需要一些类似RDMA的远程网络化数据存储时是无能为力的,然而网络化存储在现今的存储领域中运用的越来越广泛,因此有必要在该NVMe协议上进行改进,使得其能够进行网络化存储,从而大大扩展该NVMe协议的应用场景,并且发挥出该NVMe的高并发的优势。

除了上述NVMe协议本地化运用外,也有一些将NVMe协议搭载在其他网络化协议上实现NVMe网络化存储的方法,例如,将NVMe协议搭载在RDMA协议上来实现NOF,此时,本地化NVMe协议中的终端和服务器分别在NOF中作为终端和服务器,终端与服务器之间可采用RDMA协议传输数据,按照NVMe标准协议,该NOF的实现方式中NVMe协议中SQ和CQ布置在终端内,或者也SQ和CQ可布置在服务器内,下面分别进行介绍:

一、SQ和CQ布置在终端内。

请参阅图1b,图1b是现有技术NOF的一种结构示意图,其中,终端包括终端处理模块、RDMA模块、SQ和CQ,服务器包括RDMA模块、控制模块和磁盘阵列,其中,所有针对磁盘阵列的操作,如读操作和写操作都由控制模块来完成。在此布置方式的情形下,终端从服务器中读取数据的过程可包括:

步骤a、终端通过终端处理模块在终端的内存中的SQE中构建一个NVMe写指令,该SQE实际是一个NVMe的指令,并将该SQE写指令写入SQ中;

步骤b、当终端的RDMA模块发现NVMe的SQ中有SQE时,会向服务器的RDMA模块发送一个通知消息,以使得服务器获知需要处理SQE;

步骤c、服务器在接收到该通知消息后,会通过服务器的RDMA模块发起RDMA的read操作以从终端读取该SQE;

步骤d、终端将该SQE通过RDMA回复给服务器;

步骤e、服务器接收到该SQE后,通过对该SQE识别发现其中构建的是NVMe写指令,则服务器的控制模块通过该NVMe写指令从磁盘阵列中读出数据,并通过服务器的RDMA模块执行RDMA的write操作将取出的数据写入终端;

步骤f、服务器在完成数据写入终端的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE通过RDMA的send操作将该CQE发送至终端;

步骤g、终端的RDMA模块在接收到该CQE后,会将该CQE写入终端的CQ内。

终端向服务器写数据的过程中前四个步骤是相同的,只不过步骤a中的SQE中构建的是NVMe读指令,此时,步骤e变为,服务器接收到该SQE后,通过对该SQE识别发现其中构建的是NVMe读指令,则服务器的RDMA模块向终端发起RDMA的read操作;

步骤f、终端将要写入的数据通过RDMA回复给服务器,服务器的控制模块将该数据写入磁盘阵列中;

步骤g、服务器在完成数据写入磁盘阵列的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE通过RDMA的send操作将该CQE发送至终端;

步骤h、终端将该CQE写入终端的CQ内。

可以理解的是,由于将CQ和SQ均布置在终端内,不论是NVMe的写操作还是读操作均需要与服务器进行多次消息交互,其中,一次消息交互为从终端向服务器发送一次消息或者服务器向终端发送的一次消息,例如终端发送通知消息,终端发送SQE等,执行NVMe读操作或是写操作需要多次消息交互,在读操作或者写操作完成之后,服务器端会发送一个CQE给终端,完成一次NVMe指令的执行过程,可以看出,除开执行NVMe读操作或是写操作需要的消息交互次数外,将CQ和SQ均布置在终端内的方式完成一次NVMe操作还需要进行四次消息交互,信息交互次数较多,从而会造成NOF的性能比较差。

二、SQ和CQ布置在服务器内。

请参阅图1c,图1c是现有技术NOF的另一种结构示意图,其中,终端包括终端处理模块和RDMA模块,服务器包括RDMA模块、控制模块、SQ、CQ和磁盘阵列,其中,所有针对磁盘阵列的操作,如读操作和写操作都由控制模块来完成。在此布置方式的情形下,终端从服务器中读取数据的过程可包括:

步骤a、终端通过终端处理模块在终端的内存中的SQE中构建一个NVMe写指令,该SQE实际是一个NVMe的指令;

步骤b、终端将该SQE通过终端的RDMA模块执行RDMA的send操作发送至服务器;

步骤c、服务器在接收到该SQE后,会将该SQE写入到服务器的SQ中;

步骤d、服务器从SQ中取出SQE,通过对该SQE识别发现其中构建的是NVMe写指令,则服务器的控制模块通过该NVMe写指令从磁盘阵列中读出数据,并通过服务器的RDMA模块执行RDMA的write操作将取出的数据写入终端;

步骤e、服务器在完成数据写入终端的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE写入终端的CQ内;

步骤f、服务器的RDMA模块从CQ内提取该CQE,并将该CQE通过RDMA的send操作发送至终端。

步骤g、终端的RDMA模块在接收到该CQE之后,向终端的终端处理模块发送完成消息,表示该次NVMe的操作已完成。

终端向服务器写数据的过程中前三个步骤是相同的,只不过步骤a中的SQE中构建的是NVMe读指令,此时,步骤d变为,服务器接收到该SQE后,通过对该SQE识别发现其中构建的是NVMe读指令,则服务器的RDMA模块向终端发起RDMA的read操作;

步骤e、终端将要写入的数据通过RDMA回复给服务器,服务器的控制模块将该数据写入磁盘阵列中;

步骤f、服务器在完成数据写入磁盘阵列的操作后,会生成一个CQE,该CQE表示SQE的处理已完成,并将该CQE写入终端的CQ内;

步骤g、服务器的RDMA模块从CQ内提取该CQE,并将该CQE通过RDMA的send操作发送至终端。

步骤h、终端的RDMA模块在接收到该CQE之后,向终端的终端处理模块发送完成消息,表示该次NVMe的操作已完成。

可以理解的是,由于将CQ和SQ均布置在服务器内,在完成NVMe的写操作还是读操作后不仅需要写入到该终端的CQ内,还需要向终端发出CQE,以使得终端能够获知该消息,而终端为了使得CQE有记录,需要终端处理模块也建立一个类似与服务器端的CQ的队列来保存CQE,从而使得处理CQ十分复杂,此外,服务器端向终端发送CQE时,终端需要通过RDMA模块先收到该CQE,而后再由RDMA模块通知给终端处理模块,进一步加剧了CQ处理的复杂程度。

实施例1

下面将对本发明实施例进行介绍,本发明实施例为解决将CQ和SQ同时布置在终端内或者同时布置在服务器产生的上述问题采取SQ和CQ分离部署在终端和服务器内来提高NOF的性能。具体的,针对终端,请参阅图2,图2是本发明实施例的NVMe网络化存储的实现方法的一个实施例图,如图2所示,本发明实施例提供一种NVMe网络化存储的实现方法,可包括以下内容:

101、终端生成NVMe指令。

其中,NVMe指令中指示读取数据操作或写入数据操作。

可以理解的是,如正常NVMe协议的执行过程,首先会由终端生成一个NVMe指令,该NVMe指令中会指示出具体的读取数据操作或写入数据操作。

102、终端通过RDMA将NVMe指令发送至设置于服务器内的SQ。

其中,当NVMe指令中指示读取数据操作时,会跳转至执行步骤103,当NVMe指令中指示写入数据操作时,会跳转至执行步骤104。

其中,终端可通过RDMA发送NVMe指令至服务器的SQ,相对于现有通过MSI-X的本地传送方式,此处能够通过RDMA传送NVMe指令。

需要说明的是,为了实现RDMA,可在终端内设置第一RDMA收发模块,在服务器内设置第二RDMA收发模块,终端和服务器之间需要传送的信息或指令可通过第一RDMA收发模块和第二RDMA收发模块使得需要传送的信息或指令能承载在RDMA协议上,即能偶实现信息或指令的远程传输。

举例来说,以NVMe指令为例,在第一RDMA收发模块和第二RDMA收发模块内均分别会设置发送队列和接收队列,将NVMe指令加入至第一RDMA收发模块的发送队列中即可通过第一RDMA收发模块发送该信息至第二RDMA收发模块的接收队列中,即可完成NVMe指令通过RDMA从终端发送到服务器。

作为可选的,请参阅图3,图3是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图,图2所示实施例中的步骤102在图3中具体可包括以下步骤:

步骤1021、终端将NVMe指令转换成RDMA支持的第一工作队列元素WQE。

可以理解的是,由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,需要先对NVMe指令进行转换,如此处将NVMe指令转换成RDMA支持的第一WQE,从而使得该第一WQE承载在RDMA协议上进行传输。

步骤1022、终端的第一RDMA收发模块将第一WQE发送至服务器的第二RDMA收发模块。

其中,在将NVMe指令转换成RDMA支持的第一WQE后,会将该第一WQE加入第一RDMA收发模块的发送队列中,以使得第二RDMA收发模块接收到并将该第一WQE解析成NVMe指令并写入SQ。

可以理解是,通过第一RDMA收发模块将终端生成的NVMe指令转换成RDMA支持的第一WQE,再通过第一RDMA收发模块的发送队列将该第一WQE发送至第二RDMA收发模块的接收队列,以使得第二RDMA收发模块接收到并将该第一WQE解析成NVMe指令并写入SQ,即能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。

103、终端通过RDMA接收服务器发送的待读取数据。

其中,当NVMe指令中指示读取数据操作时,终端能够通过RDMA接收到服务器发送的待读取数据。

可以理解的是,当NVMe指令中指示读取数据操作时,即终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过RDMA发送至终端,从而终端能够通过RDMA接收到NVMe指令中指示的待读取数据。

104、终端通过RDMA向服务器发送待写入数据。

其中,当NVMe指令中指示写入数据操作时,终端能够通过RDMA向服务器发送待写入数据。

可以理解的是,当NVMe指令中指示写入数据操作时,表示终端想要向服务器的SSD写入数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,要求终端写入待写入数据,终端会通过RDMA将待写入数据发送至服务器,以便于服务器将待写入数据存储至SSD中。

作为可选的,当NVMe指令中指示写入数据操作时,请参阅图3,在图3中图2所示实施例中的在步骤104之前,该方法还可包括:

1023、终端接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。

其中,当服务器获知NVMe指令中指示写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,此时终端能够接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。

可以理解的是,若终端发送的是写入数据操作,终端需要接收服务器的一个指示才可进行后续通过RDMA发送待写入数据的步骤,该指示能够告诉终端发送待写入数据的时机,因此当服务器确定NVMe指令为写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,终端在接收到该RDMA读取操作后,会通过RDMA发送待写入数据至服务器。

由此可见,通过终端接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求的方式,使得服务器能够快速获取到待写入数据,进而完成步骤104,能够提高本发明实施例方案的扩展性。

105、终端接收服务器通过RDMA发送的NVMe完成指令。

其中,终端在通过RDMA发送了NVMe指令后,会受到服务器通过RDMA发送的NVMe完成指令。

可以理解的是,在步骤103或是步骤104完成后,即对应NVMe指令的读取操作数据操作或是写入数据操作,在完成步骤103或是步骤104后,服务器会生成NVMe完成指令,并发送至终端,从而使得终端能偶通过RDMA接收到该NVMe完成指令。

作为可选的,请参阅图3,图2所示实施例中的步骤105在图3中具体可包括:

1051、第一RDMA收发模块接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE。

1052、第一RDMA收发模块将第二WQE解析成NVMe完成指令。

可以理解的是,步骤1051和步骤1052与步骤1021和步骤1022类似,终端在接收服务器发送的NVMe完成指令时,并非是直接接收到NVMe完成指令,而是由第一RDMA收发模块首先接收第二WQE,而第二WQE为第二RDMA收发模块转换NVMe完成指令所得到。

106、终端将NVMe完成指令写入终端的CQ。

其中,终端在接收到NVMe完成指令后会将该NVMe完成指令写入到终端的CQ中。

由此可见,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,终端与服务器之间通过RDMA进行通信,即终端生成的NVMe指令会由终端通过RDMA发送至服务器内的SQ,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则终端通过RDMA接收服务器发送的待读取数据,若NVMe指令中指示写入数据操作,则终端通过RDMA向服务器发送待写入数据,而后,终端会通过RDMA接收到服务器发送的NVMe完成指令,并写入终端中的CQ,将NVMe完成指令写入CQ中表示一次读数据操作或是写数据操作已经完成,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。

实施例2

上面针对终端描述了本发明实施例的NVMe网络化存储的实现方法一个实施例,下面针对服务器对本发明实施例的NVMe网络化存储的实现方法进行描述,实施例1结合实施例2可构成NVMe网络化存储系统,针对服务器,请参阅图4,图4是本发明实施例的NVMe网络化存储的实现方法的一个实施例图,如图4所示,本发明实施例提供一种NVMe网络化存储的实现方法,可包括:

201、服务器接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,NVMe指令中指示读取数据操作或写入数据操作。

作为可选的,请参阅5,图5是本发明实施例的NVMe网络化存储的实现方法的另一个实施例图,图4所示的实施例中的步骤202在图5中具体可包括如下步骤:

2011、服务器通过服务器的第二RDMA收发模块接收终端的第一RDMA收发模块发送的第一WQE;

可以理解的是,由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,需要先对NVMe指令进行转换,如此处将NVMe指令转换成RDMA支持的第一WQE,从而使得该第一WQE承载在RDMA协议上进行传输,例如在服务器内设置第二RDMA收发模块,在终端内设置第一RDMA收发模块,第一RDMA收发模块和第二RDMA收发模块之间采用RDMA方式进行通信。

2012、服务器将第一WQE解析成NVMe指令。

其中,服务器的第二RDMA收发模块在接收到第一WQE后,会将该第一WQE解析成NVMe指令,以便于服务器对该NVMe指令进行解析。

可以理解是,采用在服务器内设置第二RDMA收发模块,在终端内设置第一RDMA收发模块,第一RDMA收发模块和第二RDMA收发模块之间采用RDMA方式进行通信,能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。

其中,NVMe指令中指示读取数据操作,则跳转至步骤202,当NVMe指令中指示写入数据操作时,则跳转至步骤203。

202、服务器通过RDMA将待读取数据发送至终端。

其中,当NVMe指令中指示读取数据操作时,服务器通过RDMA将待读取数据发送至终端。

可以理解的是,当NVMe指令中指示读取数据操作时,表示终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过RDMA发送至终端。

需要说明的是,RDMA的实现方式请参见图1所示实施例中对步骤102的补充说明部分,此处不再赘述。

203、服务器通过RDMA接收终端发送的待写入数据。

其中,当NVMe指令中指示写入数据操作时,服务器通过RDMA接收终端发送的待写入数据。

可以理解的是,当NVMe指令中指示写入数据操作时,表示终端想要向服务器的SSD写入数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,要求终端写入待写入数据,终端会通过RDMA将待写入数据发送至服务器,从而服务器会通过RDMA接收终端发送的待写入数据,以便于将接收的待写入数据存储至SSD中。

作为可选的,当NVMe指令中指示写入数据操作时,请参阅5,在图5中步骤203之前,该方法还可包括:

2013、服务器通过第二RDMA模块向第一RDMA模块发起RDMA读取操作。

其中,当服务器获知NVMe指令中指示写入数据操作时,为了使得终端能够知晓写入待写入数据的时机,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,而使得终端能够根据该RDMA读取操作写入待写入数据。

可以理解是,为了便于终端知晓服务器已准备接受终端写入待读取数据,会通过第二RDMA模块向第一RDMA模块发起RDMA读取操作指示终端,从而增强本发明实施例方案的可实现性。

204、服务器生成NVMe完成指令。

其中,服务器在完成了NVMe指令中指示的操作后,会生成NVMe完成指令。

可以理解的是,在步骤103或是步骤104完成后,即对应NVMe指令的读取操作数据操作或是写入数据操作,在完成步骤103或是步骤104后,服务器会生成NVMe完成指令,并发送至终端,从而使得终端能偶通过RDMA接收到该NVMe完成指令。

205、服务器将NVMe完成指令通过RDMA发送至终端。

其中,服务器在生成NVMe完成指令后,会通过RDMA发送至终端,以便于终端知道服务器已完成由终端发出的NVMe指令。

作为可选的,请参阅5,图4所示的实施例中的步骤205在图5中具体可包括:

2051、服务器将NVMe完成指令转换成RDMA支持的第二WQE;

2052、服务器通过第二RDMA模块将第二WQE发送至所述第一RDMA模块。

可以理解的是,步骤2051和步骤2052与步骤2011和步骤2012类似,服务器在向终端发送NVMe完成指令时,并非是直接发送NVMe完成指令,而是由第二RDMA收发模块首先将NVMe完成指令转换成第二WQE,而通过第二RDMA收发模块将第二WQE发送至第一RDMA收发模块,即发送给终端。

由此可见,服务器会接收终端通过RDMA发送至服务器的SQ的NVMe指令,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则服务器通过RDMA将待读取数据发送至终端,若NVMe指令中指示写入数据操作,则服务器通过RDMA接收终端发送的待写入数据,而后,服务器会生成NVMe完成指令,并通过RDMA将NVMe完成指令发送至终端,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,终端与服务器通过RDMA通信,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。

实施例3

上面对本发明实施例的方法中的终端和服务器分别进行了描述,下面对本发明实施例中包含该终端和该服务器的NVMe网络化存储系统进行介绍,该系统包括读取数据过程和写入数据过程,下面结合读取数据的过程对该系统进行介绍。

该系统可包括:终端,用于生成非易失性存储器NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;

终端还用于通过远程直接数据存取RDMA将NVMe指令发送至设置于服务器内的请求队列SQ;

服务器,用于从SQ中读取NVMe指令;

当NVMe指令中指示读取数据操作时,服务器通过RDMA将待读取数据发送至终端;

或,

当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据;

服务器还用于接收待写入数据;

当服务器完成NVMe指令指示的读取数据操作或写入数据操作时,服务器还用于生成NVMe完成指令;

服务器还用于将NVMe完成指令通过RDMA发送至设于终端的完成队列CQ。

作为可选的,当NVMe指令确定为写入数据操作时,终端通过RDMA向服务器发送待写入数据包括:

当NVMe指令确定为写入数据操作时,服务器向终端发起RDMA读取请求;

终端接收RDMA读取请求;

根据RDMA读取请求终端通过RMDA向服务器发送待写入数。

下面分别对该系统的读取数据和写入数据过程进行说明:

一、该系统读取数据的过程,请参阅图6,图6是本发明实施例的NVMe网络化存储系统一个实施例图。其中,

步骤301、生成NVMe指令。

其中,该NVMe指令由终端生成。如正常NVMe协议的执行过程,首先会由终端生成一个NVMe指令,该NVMe指令中会指示出具体的读取数据操作或写入数据操作。

步骤302、将NVMe指令转换成第一WQE。

其中,终端为了使得NVMe指令能在RDMA上传输,将该NVMe指令转换成第一WQE。由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,需要先对NVMe指令进行转换,如此处将NVMe指令转换成RDMA支持的第一WQE,从而使得该第一WQE承载在RDMA协议上进行传输。

步骤303、通过RDMA发送第一WQE。

其中,在将NVMe指令转换成RDMA支持的第一WQE后,会将该第一WQE加入第一RDMA收发模块的发送队列中。步骤304、将第一WQE解析成NVMe指令。

其中,服务器的第二RDMA收发模块在接收到第一WQE后,会将该第一WQE解析成NVMe指令,以便于服务器对该NVMe指令进行解析。

步骤305、将NVMe指令写入SQ。

其中,服务器在获得NVMe指令后,会将该NVMe指令写入SQ,而后服务器会从SQ中读取该NVMe指令,并执行该指令。

需要说明的是,该指令的执行过程可以是按照SQ的队列顺序执行,即先进先出的方式顺序执行,当然也可采用其他执行方式,具体以系统对数据的需求而定,此处不做限定。

步骤306、通过RDMA发送待读取数据。

其中,当服务器获知NVMe指令指示的读取数据操作时,会通过RDMA发送待读取数据。

可以理解的是,当NVMe指令中指示读取数据操作时,表示终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过RDMA发送至终端。

步骤307、生成NVMe完成指令。

其中,服务器在发送完待读取数据后,表示该NVMe指令已执行完成,会生成NVMe完成指令。

步骤308、将NVMe完成指令转换成第二WQE。

其中,服务器会将NVMe完成指令转换成第二WQE,以便于通过RDMA发送。

可以理解的是,服务器在向终端发送NVMe完成指令时,并非是直接发送NVMe完成指令,而是由第二RDMA收发模块首先将NVMe完成指令转换成第二WQE,而通过第二RDMA收发模块将第二WQE发送至第一RDMA收发模块,即发送给终端。

步骤309、通过RDMA发送第二WQE。

其中,服务器在转换完成第二WQE后,会通过RDMA发送第二WQE至终端。

步骤310、将第二WQE解析成NVMe完成指令。

其中,终端在接收到该第二WQE后会首先将其解析成NVMe完成指令。

可以理解的是,终端在接收服务器发送的NVMe完成指令时,并非是直接接收到NVMe完成指令,而是由第一RDMA收发模块首先接收第二WQE,而第二WQE为第二RDMA收发模块转换NVMe完成指令所得到。

步骤311、将NVMe完成指令写入CQ。

其中,终端在解析完成NVMe完成指令后,会将该NVMe完成指令写入CQ表示步骤301发出的NVMe指令已经完成。二、该系统写入数据的过程请参阅图7,图7是本发明实施例的NVMe网络化存储的系统的另一个实施例图。其中,步骤401至步骤405与图6所示实施例中的步骤301至步骤305类似,步骤408至步骤412与图6所示实施例中的步骤307至步骤311类似,此处均不在赘述。其中,图7所示实施例还包括:

步骤406、发起RDMA读取操作。

其中,在服务器从SQ中读取的NVMe指令中获知指示的写入数据操作时,会向终端通过RDMA发起读取操作,从而告知终端写入数据的方式和写入的时机。

可以理解的是,若终端发送的是写入数据操作,终端需要接收服务器的一个指示才可进行后续通过RDMA发送待写入数据的步骤,该指示能够告诉终端发送待写入数据的时机,因此当服务器确定NVMe指令为写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块发起RDMA读取操作,终端在接收到该RDMA读取操作后,会通过RDMA发送待写入数据至服务器。

步骤407、通过RDMA发送待写入数据。

其中,终端在接收到服务器通过RDMA发起读取操作后,会通过RDMA发送待写入数据,以使得服务器能够将该待写入数据写入SSD中的对应处。

可以理解的是,当NVMe指令中指示写入数据操作时,表示终端想要向服务器的SSD写入数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,要求终端写入待写入数据,终端会通过RDMA将待写入数据发送至服务器,从而服务器会通过RDMA接收终端发送的待写入数据,以便于将接收的待写入数据存储至SSD中。

实施例4

上面对本发明实施例的NVMe网络化存储的系统进行了介绍,下面对本发明实施例的服务器进行介绍,请参阅图8,图8是本发明实施例的服务器的一个实施例图,如图8所示,本发明实施例提供一种服务器,该服务器用作终端,可包括:

第一处理模块501,用于生成NVMe指令,NVMe指令中指示读取数据操作或写入数据操作;

第一RDMA收发模块502,用于通过RDMA将NVMe指令发送至设置于服务器内的SQ;

第一RDMA收发模块502还用于当NVMe指令中指示读取数据操作时,通过RDMA接收服务器发送的待读取数据;

或,

当NVMe指令中指示写入数据操作时,还用于通过RDMA向服务器发送待写入数据;

第一RDMA收发模块502还用于接收服务器通过RDMA发送的NVMe完成指令;

第一处理模块501还用于将NVMe完成指令写入设置于终端内的CQ。

由此可见,第一处理模块501生成的NVMe指令会由第一RDMA收发模块502通过RDMA发送至服务器内的SQ,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则第一RDMA收发模块502通过RDMA接收服务器发送的待读取数据,若NVMe指令中指示写入数据操作,则第一RDMA收发模块502通过RDMA向服务器发送待写入数据,而后,第一RDMA收发模块502会通过RDMA接收到服务器发送的NVMe完成指令,并由第一处理模块501写入终端中的CQ,将NVMe完成指令写入CQ中表示一次读数据操作或是写数据操作已经完成,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。

作为可选的,请参阅图9,图9是本发明实施例的服务器中的第一RDMA收发模块的一个实施例图。该第一RDMA收发模块502可包括:

第一转换单元5021,用于将NVMe指令转换成RDMA支持的第一工作队列元素WQE;

第一收发单元5022,用于将第一WQE发送至服务器的第二RDMA收发模块,以第二RDMA收发模块将第一WQE解析成NVMe指令并写入SQ。

可以理解是,通过第一转换单元5021将第一处理模块501生成的NVMe指令转换成RDMA支持的第一WQE,再通过第一收发单元5022的发送队列将该第一WQE发送至第二RDMA收发模块的接收队列,以使得第二RDMA收发模块接收到并将该第一WQE解析成NVMe指令并写入SQ,即能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。

作为可选的,第一收发单元5022还用于:

接收服务器通过第二RDMA收发模块向第一RDMA收发模块发起的RDMA读取请求。

可以理解的是,若终端发送的是写入数据操作,终端需要接收服务器的一个指示才可进行后续通过RDMA发送待写入数据的步骤,该指示能够告诉终端发送待写入数据的时机,因此当服务器确定NVMe指令为写入数据操作时,会通过第二RDMA收发模块向第一RDMA收发模块502发起RDMA读取操作,第一RDMA收发模块中的第一收发单元5022在接收到该RDMA读取操作后,会通过RDMA发送待写入数据至服务器。

作为可选的,第一收发单元5022还用于:

接收服务器通过第二RDMA收发模块发送至第一RDMA收发模块的第二WQE;

第一转换单元5021还用于:

将第二WQE解析成NVMe完成指令。

可以理解的是,与前述针对第一WQE的操作类似,第一收发单元5022在接收服务器发送的NVMe完成指令时,并非是直接接收到NVMe完成指令,而是由第一收发单元5022首先接收第二WQE,而后由第一转换单元5021将该第二WQE转换成NVMe完成指令并进行保存。

作为可选的,第一收发单元5022还具体用于:

接收第二RDMA收发模块发出的待读取数据。

可以理解的是待读取数据实际是由服务器的第二RDMA收发模块发出的,第一收发单元5022也是通过RDMA的方式接收到该待读取数据。

实施例5

下面对本发明实施例的服务器进行介绍,请参阅图10,图10是本发明实施例的服务器的一个实施例图,如图10所示,本发明实施例提供一种服务器,该服务器用作服务器,可包括:

第二RDMA收发模块602,用于接收终端通过RDMA发送的NVMe指令,并将该NVMe指令写入设置于服务器内的SQ,所述NVMe指令中指示读取数据操作或写入数据操作;

第二处理模块601,用于从SQ中读取NVMe指令;

第二RDMA收发模块602还用于,

当根据NVMe指令确定为读取数据操作时,通过RDMA将待读取数据发送至终端;

或,

当根据NVMe指令确定为写入数据操作时,通过RDMA接收终端发送的待写入数据;

第二处理模块601还用于,生成NVMe完成指令;

第二RDMA收发模块602还用于,

将NVMe完成指令通过RDMA发送至终端。

由此可见,第二RDMA收发模块602会接收终端通过RDMA发送的SQ中的NVMe指令,并且可根据NVMe指令的不同执行对应的操作,若NVMe指令中指示读取数据操作,则第二RDMA收发模块602通过RDMA将待读取数据发送至终端,若NVMe指令中指示写入数据操作,则第二RDMA收发模块602通过RDMA接收终端发送的待写入数据,而后,第二处理模块601会生成NVMe完成指令,并由第二RDMA收发模块602将NVMe完成指令发送至终端,本发明实施例方案通过RDMA与NVMe的结合,将NVMe中的CQ布置在终端内,将NVMe中的SQ布置在服务器内,能减少一次NVMe操作中终端与服务器的交互次数以及降低处理CQ的复杂度,从而提高NOF的性能。

作为可选的,请参阅图11,图11是本发明实施例的服务器中的第二RDMA收发模块的一个实施例图。第二RDMA收发模块602可包括:

第二收发单元6021,用于接收终端的第一RDMA收发模块发送的第一WQE;

第二转换单元6022,用于将第一WQE解析成NVMe指令。

同样的,针对在发送NVMe完成指令时,作为可选的,第二转换单元6022还用于:

将NVMe完成指令转换成RDMA支持的第二WQE;

第二收发单元6021还用于:

将第二WQE发送至第一RDMA收发模块。

可以理解的是,由于RDMA协议承载信息的方式与NVMe传输信息的方式是有所不同的,因此若要将NVMe指令承载在RDMA上传输,在第二收发单元6021接收到终端的第一RDMA收发模块发送的第一WQE后,会由第二转换单元6022将该第一WQE解析成NVMe指令,从而第二处理模块601能够识别该NVMe指令并进行对应的操作,能够使得NVMe指令与RDMA支持第一WQE之间相互转换,从而消除NVMe协议和RDMA协议之间的界限,能够使得NVMe协议与RDMA协议能够进行结合,进而拉远NVMe协议的存储距离,实现NVMe协议的网络化存储。

作为可选的,第二收发单元6021还具体用于:

向第一RDMA收发模块发送待读取数据。

可以理解的是,当NVMe指令中指示读取数据操作时,表示终端想要读取服务器控制的存储设备(如SSD)内的数据,服务器的SQ在接收到NVMe指令后,会执行该NVMe指令,将该NVMe指令中指示的待读取数据从SSD中取出,并通过第二收发单元6021发送至终端。

作为可选的,第二收发单元6021还用于:

向第一RDMA收发模块发起RDMA读取操作。

其中,当服务器获知NVMe指令中指示写入数据操作时,为了使得终端能够知晓写入待写入数据的时机,会通过第二收发单元6021向第一RDMA收发模块发起RDMA读取操作,而使得终端能够根据该RDMA读取操作写入待写入数据。

可以理解是,为了便于终端知晓服务器已准备接受终端写入待读取数据,会通过第二RDMA模块向第一RDMA模块发起RDMA读取操作指示终端,从而增强本发明实施例方案的可实现性。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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