本发明涉及数据存储领域,尤其涉及一种数据预取方法以及装置。
背景技术:
云计算的飞速发展,其背后离不开虚拟化技术的有力支撑。虚拟化技术一般在主机(英文:host)上部署多个虚拟机(英文:virtualmachine,缩写:vm),并使用超级管理器(英文:hypervisor)将主机的资源分配给各vm,使得每个vm都可以独立行使计算功能。
主机中的vm在启动时,需要从主机相连的存储装置中读取vm的启动镜像数据。不同的vm在启动时,其读取的启动镜像数据有部分数据是重复的。因此,现阶段的技术在启动vm集群时,一般先启动一台vm,并将该vm的启动镜像数据写入主机的缓存中。这样在其它vm启动时,可以直接从本地缓存中获取重复的启动镜像数据数据,并从存储装置中读取少量的非重复数据即可。
但是在实际应用中,一台主机中的不同vm可能具有不同的类型,而不同类型的vm对应的启动镜像数据之间存在较大差别。因此,当主机中存在多种类型的vm时,缓存中保存的启动镜像数据与待启动的vm需要的启动镜像数据重复率不高。为了尽量减少从存储装置中读取的数据,需要将不同类型的vm的启动镜像数据都写入主机的缓存中。这就导致主机的缓存占用率高,且缓存命中率低,进而使得主机业务进程缓慢,性能达不到使用要求。
技术实现要素:
本发明提供了一种数据预取方法,用于提升集群系统中主机的服务性能。
本发明第一方面提供了一种数据预取方法,适用于集群系统。其中,该集群系统中包括多个预取装置,每个预取装置都唯一连接有一个主机,并连接有一个或多个磁盘。各预取装置之间也彼此相连。本发明以连接有第一主机和第一磁盘的第一预取装置为例进行说明。第一预取装置在第一主机启动 虚拟机之前,从第一主机处接收数据预取指令,该数据预取指令用于指示第一主机启动第一主机内的虚拟机所需要使用到的启动数据。第一预取装置根据数据预取指令,确定一个或多个目标数据块。若第一预取装置中没有保存目标数据块,则第一预取装置从第二预取装置处获取目标预取装置的标识信息,该第二预取装置为与保存了目标数据块的目标存储装置相连的预取装置,且该目标预取装置为集群系统的多个预取装置中保存有目标数据块的预取装置。其中,若目标数据块的原始保存位置为集群系统中的目标存储装置,则目标预取装置在获取目标数据块时,与目标存储装置相连的第二预取装置会记录各目标预取装置的标识信息。因此第一预取装置可以从第二预取装置处获取目标预取装置的标识信息。第一预取装置根据目标数据块的标识信息,确定目标数据块的目标存储位置,并从目标存储位置处将目标数据块预取到第一预取装置本地。通过这样的方法,使得原本保存在主机缓存中的启动镜像数据被保存在了主机之外的预取装置上,主机中的vm在启动时直接从预取装置上获取启动镜像数据即可。与现有技术中直接从存储装置中读取启动镜像数据相比,本实施例中重复的数据只需要被写入一次预取装置即可,减少了数据的读写次数和带宽的占用。与现有技术中将启动镜像数据保存在主机缓存中相比,本发明提供的方法中启动镜像数据不会大量占用主机的缓存,因此不会产生主机的缓存命中率低或缓存占用率高的问题,加速了主机业务进程,提升了主机的服务性能。
可选的,第一预取装置可以向第二预取装置请求目标预取装置的地址信息,并接收第二预取装置返回的标识信息列表。标识信息列表中可以记录有一个或多个目标预取装置的标识信息。若第二预取装置返回的标识信息列表为空,则说明没有任何预取装置从第二存储装置中读取了目标数据块,目标数据块仅保存在第二存储装置中。在这种情况下,第一预取装置确定目标数据块的目标存储位置为该第二存储装置。
可选的,若第二预取装置返回的标识信息列表不为空,则说明存在从第二存储装置中读取了目标数据块的目标预取装置。目标数据块不仅仅保存在第二存储装置中,还保存在目标预取装置中。在这种情况下,第一预取装置可以根据标识信息列表中记录的目标预取装置的标识信息,确定获取目标数 据块的目标存储位置。具体的,第一预取装置根据每个目标预取装置的标识信息,确定访问每个目标预取装置的时延中的最短时延,以及该最短时延对应的目标预取装置。若该最短时延小于第一预取装置访问目标存储装置的时延,则确定目标数据块的目标存储位置为最短时延对应的目标预取装置;若该最短时延大于第一预取装置访问目标存储装置的时延,则确定目标数据块的目标存储位置为目标存储装置。通过这样的方法,可以保证从目标存储位置处获取目标数据块的时延尽可能的短。
可选的,第一预取装置可以根据数据预取指令,对启动镜像数据进行对齐切割,得到一个或多个目标数据块。
可选的,在集群系统的初始运行阶段,第一预取装置可以向第一主机中的hypervisor注册虚拟存储盘,以将连接的存储装置以虚拟存储盘的形式呈现给第一主机。第一主机的hypervisor向第一主机中的虚拟存储盘下发数据集管理(英文:datasetmanagement,缩写:dsm)命令形式的数据预取命令,第一预取装置接收该数据预取命令。
可选的,当第一主机中的虚拟机启动时,第一主机会向第一预取装置下发数据读取指令,用于指示读取该目标数据块。第一预取装置根据该数据读取指令,将本地保存的目标数据块发送给第一主机。
本发明的第二方面提供了一种预取装置,用于作为集群系统中的第一预取装置。该预取装置包括:指令接收模块,用于在第一主机启动虚拟机之前,从第一主机处接收数据预取指令,该数据预取指令用于指示第一主机启动第一主机内的虚拟机所需要使用到的启动数据;数据确定模块,用于根据数据预取指令,确定一个或多个目标数据块;信息获取模块,用于在第一预取装置中没有保存目标数据块时,获取从第二预取装置处获取目标预取装置的标识信息,该第二预取装置为与保存了目标数据块的目标存储装置相连的预取装置,且该目标预取装置为集群系统的多个预取装置中保存有目标数据块的预取装置;位置确定模块,用于根据目标数据块的标识信息,确定目标数据块的目标存储位置;数据保存模块,用于从目标存储位置处将目标数据块预取到第一预取装置本地。
可选的,信息获取模块具体用于:向第二预取装置请求目标预取装置的 地址信息,并接收第二预取装置返回的标识信息列表。标识信息列表中可以记录有一个或多个目标预取装置的标识信息。位置确定模块具体用于:若目标预取装置的标识信息列表为空,则确定目标存储位置为目标存储装置。
可选的,位置确定模块还用于:若第二预取装置返回的标识信息列表不为空,则根据标识信息列表中记录的目标预取装置的标识信息,确定获取目标数据块的目标存储位置。具体的,根据每个目标预取装置的标识信息,确定访问每个目标预取装置的时延中的最短时延,以及该最短时延对应的目标预取装置。若该最短时延小于第一预取装置访问目标存储装置的时延,则确定目标数据块的目标存储位置为最短时延对应的目标预取装置;若该最短时延大于第一预取装置访问目标存储装置的时延,则确定目标数据块的目标存储位置为目标存储装置。通过这样的方法,可以保证从目标存储位置处获取目标数据块的时延尽可能的短。
可选的,数据确定模块具体用于:根据数据预取指令,对启动镜像数据进行对齐切割,得到一个或多个目标数据块。
可选的,指令接收模块具体用于:在集群系统的初始运行阶段,向第一主机中的hypervisor注册虚拟存储盘,以将连接的存储装置以虚拟存储盘的形式呈现给第一主机。第一主机的hypervisor向第一主机中的虚拟存储盘下发dsm命令形式的数据预取命令,第一预取装置接收该数据预取命令。
可选的,当第一主机中的虚拟机启动时,第一主机会向第一预取装置下发数据读取指令,用于指示读取该目标数据块。指令接收模块还用于接收该数据读取指令。数据预取装置还可以包括数据发送模块,用于根据该数据读取指令,将本地保存的目标数据块发送给第一主机。
本发明的第三方面提供了一种计算设备,包括处理器、存储器、通信接口以及总线。其中,通过调用存储器中保存的程序代码,处理器用于执行本发明第一方面所提供的数据预取方法。
附图说明
图1为现阶段技术中集群系统的一个架构示意图;
图2为本发明提供的集群系统的一个架构示意图;
图3为本发明提供的计算设备的一个实施例结构图;
图4为本发明提供的数据预取方法的一个实施例流程图;
图5为本发明提供的预取装置的一个实施例结构图。
具体实施方式
本发明提供了一种数据预取方法,用于提升集群系统的主机在启动虚拟机时的缓存命中率。本发明还提供了相关的预取装置装置,以下将分别进行描述。
云计算的飞速发展,其背后离不开虚拟化技术的有力支撑。虚拟化技术中集群系统的基本架构请参阅图1。在集群系统中有多台主机,每台主机中部署有多个vm,还部署有hypervisor用于将主机的资源分配给各vm,使得每个vm都可以独立行使计算功能。每台主机的南向都连接有用于存储数据的存储装置,存储装置具体可以为磁盘、固态硬盘(英文:solidstatedisk,缩写:ssd)。在启动vm时,主机需要从存储装置中读取vm的启动镜像数据供vm使用。
集群系统中,一台主机上往往部署有大量的vm。当集群系统启动大量的vm时,会在短时间内产生巨量的数据读写操作。该巨量的数据读写操作会占用大量的网络带宽,影响服务业务甚至导致vm宕机。
经研究发现,不同的vm在启动时,其读取的启动镜像数据有部分数据是重复的。因此,现阶段的技术在启动vm集群时,一般先启动一台vm,并将该vm的启动镜像数据写入主机的缓存中。这样在其它vm启动时,可以直接从本地缓存中获取重复的启动镜像数据数据,从存储装置中只需要读取少量的非重复数据即可。这样能够减少大量的存储装置读写操作,节省了系统带宽、读写资源和vm启动时间。
但是在实际应用中,一台主机中的不同vm可能具有不同的类型,而不同类型的vm对应的启动镜像数据之间存在较大差别。例如,若vm1为windows系统,而vm2为linux系统,则vm1和vm2的启动镜像数据的重复率并不高。此时,为了仍旧达到节省系统带宽、读写资源和vm启动时间的效果,主机需要将windows系统的启动镜像和linux系统的启动镜像都 保存在缓存中。因此,当主机中vm的类型较多时,保存在主机缓存中的启动镜像数据会大大增加。而增大启动镜像数据在缓存中的保存量会引起一系列的问题,如主机的缓存占用率过高、缓存命中率低、主机业务进程缓慢等,严重影响主机的性能。
针对上述问题,本申请在现阶段技术的基础上提供了一种数据预取方法,用于主机性能。其中,本申请在主机和存储装置之间添加了预取装置,得到了与现阶段技术不同的集群系统,其架构如图2所示。从图2中可以看出,每个预取装置的北向与主机相连,南向与存储装置相连,且不同的预取装置在东西向彼此相连。预取装置用于将启动镜像数据预取(即在虚拟机启动前预先获取)到预取装置本地,并在主机启动vm时将保存的启动镜像数据上发给主机。这样主机就不需要将启动镜像数据保存到本地缓存中。
图2中的预取装置可以通过图3中的计算设备300来实现。计算设备300的组织结构请参阅图3,包括处理器301、存储器302、通信接口303以及总线304。
其中,通信接口303为计算设备300与主机、存储装置以及其他计算设备进行通信的接口的集合,例如,通信接口303可以包括用于与主机相连的快速外部链接标准(英文:peripheralcomponentinterconnectexpress,缩写:pcie)接口、快速非易失性存储器(英文:non-volatilememoryexpress,缩写:nvme)接口、串行连接小型计算机系统接口(英文:serialattachedscsi,缩写:sas)、串行高级技术附件(英文:serialadvancedtechnologyattachment,缩写:sata)或其它接口,计算设备300通过该pcie接口或其它接口接收主机的数据预取指令、数据读取指令或其它指令,并将本地保存的目标数据块发送给主机。通信接口303还可以包括用于与存储装置相连的磁盘控制器或其它接口,计算设备300通过该磁盘控制器或其它接口访问存储装置。此外,通信接口303还可以包括网卡(英文:networkinterfacecard,缩写:nic),用于接入以太网,使得多个计算设备可以通过以太网互相访问。通信接口303还可以为其它形式的接口,此处不做限定。
存储器302可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器也可以包 括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或ssd;存储器202还可以包括上述种类的存储器的组合。其中,计算设备300用于将目标数据块预取到计算设备300本地,预取到的目标数据块保存在存储器302中。在通过软件来实现本发明提供的技术方案时,用于实现本发明图4提供的数据预取方法的程序代码可以保存在存储器302中,并由处理器301来执行。
处理器301可以为中央处理器(英文:centralprocessingunit,简称:cpu),硬件芯片或cpu和硬件芯片的组合。处理器301在运行时,通过调用存储器302的程序代码,可以执行如下步骤:在第一主机启动虚拟机之前,从第一主机处接收数据预取指令;根据数据预取指令,确定目标数据块;从第二预取装置处获取目标预取装置的标识信息;根据目标数据块的标识信息,确定目标数据块的目标存储位置;根据目标数据块的目标存储位置,获取并保存目标数据块;接收数据读取指令,并根据数据读取指令将目标数据块发送给第一主机。
处理器301、存储器302以及通信接口303可以通过总线304来实现彼此之间的通信连接,也可以通过无线传输等其它手段实现通信。
本发明还提供了一种数据预取方法,图2中的预取装置以及图3中的计算设备300在运行时执行该数据预取方法。下面仅以第一预取装置为例对该数据预取方法进行描述,其基本流程请参阅图4,包括:
401、在第一主机启动虚拟机之前,从第一主机处接收数据预取指令;
第一预取装置接收第一主机下发的数据预取指令,该数据预取指令用于指示第一主机启动第一主机内的虚拟机所需要使用到的启动数据。
可选的,在集群系统的初始运行阶段,第一预取装置可以向第一主机中的hypervisor注册虚拟存储盘,以将南向连接的集群系统的存储装置以虚拟存储盘的形式呈现给第一主机。其中,虚拟存储盘具体可以为虚拟nvme盘、虚拟sas盘、虚拟sata盘等虚拟磁盘的形式或其它形式。且第一预取装置的存储器中可以保存有映射表,该映射表用于记录集群系统中的存储装置和主机中的虚拟存储盘的对应关系。第一主机中的vm以及hypervisor并不感知 虚拟存储盘的真实性,将虚拟存储盘当做真实的物理存储器来对待处理。
hypervisor负责管理主机中的vm,故能够检测到vm的启动。可选的,第一主机的hypervisor在第一主机中的vm启动前,向第一主机中的虚拟存储盘下发dsm命令,该dsm命令用于指示第一主机中的vm启动所需要的数据。下发给虚拟存储盘的dsm指令实际被第一预取装置接收。
402、根据数据预取指令,确定目标数据块。
第一预取装置根据数据预取指令,将待预取的启动镜像数据切割为一个或多个目标数据块。可选的,第一预取装置可以按照集群系统的存储粒度,对启动镜像数据进行对齐切割。例如,若集群系统的存储粒度为1mb,待预取的启动镜像数据的逻辑地址为2.5m~4.5mb,则第一预取装置可以将启动镜像数据切割为2.5mb~3mb、3mb~4mb、4mb~4.5mb这三个目标数据块。值得指出的是,若对启动镜像数据的切割方式为按照存储粒度进行对齐切割,则得到的单个目标数据块中的数据都存储于同一个存储装置中,不同的目标数据块中的数据可能存储于不同的存储装置中。
第一预取装置确定了目标数据块后,对于每个数据块,都执行本实施例后续403至406的全部步骤。
第一预取装置确定了目标数据块后,判断目标数据块的数据是否已经保存在了第一预取装置的本地。可选的,第一预取装置可以根据目标数据块对应的虚拟存储盘的全局唯一标识符(英文:globallyuniqueidentifier,缩写:guid)、目标数据块在虚拟存储盘中的逻辑地址、以及保存的映射表,查找目标数据块所位于的存储装置以及在存储装置中的逻辑地址。然后通过在本地的逻辑地址表中检索目标数据块在存储装置中的逻辑地址,来判断目标数据块是否保存在第一预取装置本地。
若目标数据块保存在第一预取装置本地,则无需执行步骤403至405的数据预取操作,直接执行步骤406即可。
若目标数据块没有保存在第一预取装置本地,则第一预取装置需要将目标数据块获取到第一预取装置本地。下面将通过步骤403至405详细介绍第一预取装置预取目标数据块的方法。
403、从第二预取装置处获取目标预取装置的标识信息。
若目标数据块没有保存在第一预取装置本地,则第一预取装置需要获取目标预取装置的标识信息。
步骤402中提到,第一预取装置可以查找到目标数据块所处的存储装置。本实施例中仅以目标数据块保存于集群系统中的第二存储装置为例进行说明。与第一主机、第一预取装置和第一存储装置的连接方式类似的,第二存储装置的北向连接有第二预取装置,第二预取装置的北向连接有第二主机。可以看出,集群系统中其它预取装置在访问第二存储装置时都需要通过第二预取装置。本发明中将保存了目标数据块的预取装置称为目标预取装置,可以理解的,由于第一预取装置中没有保存目标数据块,因此目标预取装置不包括第一预取装置,但可以为存储系中除了第一预取装置以外的任何预取装置(包括第二预取装置)。一般的,目标预取装置通过第二预取装置访问第二存储装置中的目标数据块时,第二预取装置会将目标预取装置的标识信息,如ip地址、设备编号等信息记录下来。因此,,第一预取装置可以从第二预取装置处获取目标预取装置的标识信息。
可选的,为了保证每个预取装置的被访问频率不会过高,可以为每个预取装置都设定一个被访问阈值,只有被其它预取装置访问的次数小于被访问阈值且保存有目标数据块的预取装置,才被认为是目标预取装置。
可选的,第一预取装置可以向第二预取装置请求目标预取装置的地址信息,并接收第二预取装置返回的标识信息列表。标识信息列表中可以记录有一个或多个目标预取装置的标识信息。
值得指出的是,本实施例中仅用第二存储装置来指代保存有目标数据块的存储装置,在实际应用中,第二存储装置也可以与第一存储装置是同一个存储装置。在这种情况下,第二预取装置与第一预取装置实际也为同一个预取装置。
404、根据目标数据块的标识信息,确定目标数据块的目标存储位置。
第一预取装置在获取了目标数据块的标识信息后,根据目标数据块的标识信息,确定目标数据块的目标存储位置。其中,目标存储位置为目标数据块在集群系统中的一个或多个存储位置中的一个。从目标数据块在集群系统中的存储位置内选择目标存储位置的标准有很多,例如可以将目标数据块在 集群系统中的存储位置中,距第一预取装置的网络距离最近的位置确定为目标存储位置、或将第一预取装置访问时延最短的位置确定为目标存储位置。目标存储位置也可以根据其他的标准确定,此处不做限定。
可选的,若第二预取装置返回的标识信息列表为空,则说明没有任何预取装置从第二存储装置中读取了目标数据块,目标数据块仅保存在第二存储装置中。在这种情况下,第一预取装置确定目标数据块的目标存储位置为该第二存储装置。
可选的,若第二预取装置返回的标识信息列表不为空,则说明存在从第二存储装置中读取了目标数据块的目标预取装置。目标数据块不仅仅保存在第二存储装置中,还保存在目标预取装置中。在这种情况下,第一预取装置可以根据标识信息列表中记录的目标预取装置的标识信息,确定获取目标数据块的目标存储位置。具体可以参考(1)~(3)所示的确定方法:
(1)第一预取装置分别确定访问每个目标预取装置的时延,并确定访问每个目标预取装置的时延中的最短时延t1,以及t1对应的目标预取装置。
(2)第一预取装置确定通过第二预取装置访问第二存储装置的时延t2。
(3)若t1小于t2,则第一预取装置确定t1对应的目标预取装置为目标数据块的目标存储位置;
若t1大于t2,则第一预取装置确定第二存储装置为目标数据块的目标存储位置;
若t1等于t2,则第一预取装置既可以确定t1对应的目标预取装置为目标数据块的目标存储位置,也可以确定第二存储装置为目标数据块的目标存储位置。
第一预取装置也可以通过其它方法确定目标数据块的目标存储位置,此处不做限定。
405、根据目标数据块的目标存储位置,获取并保存目标数据块。
第一预取装置在确定了目标数据块的获取路径后,根据该获取路径,将目标数据块预取到第一预取装置本地。
可选的,在步骤405之后,第二预取装置可以记录下第一预取装置的标识信息,以表示第一预取装置中保存了目标数据块。
本发明提供的数据预取方法在主机和存储装置之间添加了预取装置,用于根据主机的数据预取指令,将主机在启动时需要使用的启动镜像数据预先获取到预取装置本地,以供主机使用。通过这样的方法,使得原本保存在主机缓存中的启动镜像数据被保存在了主机之外的预取装置上,主机中的vm在启动时直接从预取装置上获取启动镜像数据即可。与现有技术中直接从存储装置中读取启动镜像数据相比,本实施例中重复的数据只需要被写入一次预取装置即可,减少了数据的读写次数和带宽的占用。与现有技术中将启动镜像数据保存在主机缓存中相比,本发明提供的方法中启动镜像数据不会大量占用主机的缓存,因此不会产生主机的缓存命中率低或缓存占用率高的问题,加速了主机业务进程,提升了主机的服务性能。
可选的,本发明提供的方法在完成了启动镜像数据的预取之后,还可以执行步骤406:
406、接收数据读取指令,并根据数据读取指令将目标数据块发送给第一主机。
第一预取装置在执行完步骤401至405后,就将目标数据块预取到了本地。当第一主机中的虚拟机启动时,第一主机会向第一预取装置下发数据读取指令,用于指示读取该目标数据块。第一预取装置接收该数据读取指令,并根据该数据读取指令将本地保存的目标数据块发送给第一主机。
图5所示的实施例介绍了本发明提供的数据预取方法,下面将介绍用于实现该方法的预取装置,其基本结构请参阅图5,包括:
指令接收模块501,用于执行图4所示的实施例中步骤401中的操作;
数据确定模块502,用于执行图4所示的实施例中步骤402中的操作;
信息获取模块503,用于执行图4所示的实施例中步骤403中的操作;
位置确定模块504,用于执行图4所示的实施例中步骤404中的操作;
数据保存模块505,用于执行图4所示的实施例中步骤405中的操作。
图5所示的装置的相关描述可以对应参阅图4所示的方法实施例部分的相关描述和效果进行理解,本处不做过多赘述。
可选的,指令接收模块501还可以接收第一主机下发的数据读取指令,该数据读取指令用于指示读取该目标数据块。图5所示的预取装置还可以包 括数据发送模块506,用于在指令接收模块501接收到数据读取指令后,将目标数据块发送给第一主机。
图5提供的预取装置位于主机和存储装置之间,其中指令接收模块501接收主机的数据预取指令,数据确定模块502根据主机的数据预取指令确定目标数据块,信息获取模块503获取保存了目标数据块的一个或多个目标预取装置的标识信息;位置确定模块504确定目标数据块的目标存储位置;数据保存模块505从目标存储位置处将目标数据块预取到预取装置本地,以供主机使用。通过这样的方法,使得原本保存在主机缓存中的启动镜像数据被保存在了主机之外的预取装置上,主机中的vm在启动时直接从预取装置上获取启动镜像数据即可。与现有技术中直接从存储装置中读取启动镜像数据相比,本实施例中重复的数据只需要被写入一次预取装置即可,减少了数据的读写次数和带宽的占用。与现有技术中将启动镜像数据保存在主机缓存中相比,本发明提供的方法中启动镜像数据不会大量占用主机的缓存,因此不会产生主机的缓存命中率低或缓存占用率高的问题,加速了主机业务进程,提升了主机的服务性能。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。