发明内容
本申请所要解决的技术问题在于,提供一种数据迁移方法及装置,能够将不同存储集群的云盘分别挂载给同一云主机,通过数据在云盘之间的迁移,实现数据的在线异地存储迁移。
为了解决上述技术问题,本申请实施例提供了一种数据迁移方法,可应用于云主机侧,所述方法包括:
预先挂载第一云盘,将数据存储在所述第一云盘中,其中,所述第一云盘与第一存储集群相对应;
响应于云盘挂载请求,挂载第二云盘;其中,所述第二云盘与第二存储集群相对应,所述第一存储集群和所述第二存储集群处于不同的局域网中;
对存储在所述第一云盘中的数据进行第一次数据重平衡,将所述第一云盘中的数据均匀存储在所述第一云盘和所述第二云盘中;
响应于第一云盘删除请求,进行第二次数据重平衡,将经过第一次数据重平衡之后的所述第一云盘中的数据迁移到所述第二云盘中。
本申请实施例还提供了另一种数据迁移方法,可应用于存储集群管理侧,所述方法包括:
根据预设集群框架,创建第二存储集群,所述第二存储集群与预设的第一存储集群处于不同的局域网中;其中,所述第一存储集群对应第一云盘;
创建与所述第二存储集群相对应的第二云盘;
将所述第二存储集群的集群配置文件和密钥文件发送至云主机,以使得所述云主机根据所述集群配置文件和所述密钥文件挂载所述第二云盘;
当检测到所述第一云盘中的数据迁移到所述第二云盘时,将所述第一存储集群的相应数据迁移到所述第二存储集群中。
本申请实施例还提供了一种数据迁移装置,所述装置包括:
预处理模块,用于预先挂载第一云盘,将数据存储在所述第一云盘中,其中,所述第一云盘与第一存储集群相对应;
挂载请求响应模块,用于响应于云盘挂载请求,挂载第二云盘;其中,所述第二云盘与第二存储集群相对应,所述第一存储集群和所述第二存储集群处于不同的局域网中;
第一重平衡模块,用于对存储在所述第一云盘中的数据进行第一次数据重平衡,将所述第一云盘中的数据均匀存储在所述第一云盘和所述第二云盘中;
第二重平衡模块,用于响应于第一云盘删除请求,进行第二次数据重平衡,将经过第一次数据重平衡之后的所述第一云盘中的数据迁移到所述第二云盘中。
本申请实施例还提供了另外一种数据迁移装置,所述装置包括:
第二集群创建模块,用于根据预设集群框架,创建第二存储集群,所述第二存储集群与预设的第一存储集群处于不同的局域网中;其中,所述第一存储集群对应第一云盘;
第二云盘创建模块,用于创建与所述第二存储集群相对应的第二云盘;
文件发送模块,用于将所述第二存储集群的集群配置文件和密钥文件发送至云主机,以使得所述云主机根据所述集群配置文件和所述密钥文件挂载所述第二云盘;
数据迁移模块,用于当检测到所述第一云盘中的数据迁移到所述第二云盘时,将所述第一存储集群的相应数据迁移到所述第二存储集群中。
本申请实施例还提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的数据迁移方法。
本申请实施例还提供了一种计算机存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述的数据迁移方法。
本申请实施例通过预先挂载第一云盘,并将数据存储在第一云盘上,其中第一云盘与第一存储集群相对应;在接收到云盘挂载请求时,挂载第二云盘,其中第二云盘与第二存储集群相对应,第一存储集群和第二存储集群处于不同的局域网中;进行第一次数据重平衡,将第一云盘中的数据均匀存储在第一云盘和第二云盘中;在接收到第一云盘删除请求后,进行第二次数据重平衡,将第一云盘中的数据全部迁移到第二云盘中。由于不同的云盘可通过网络挂载给同一云主机,与地理位置无关,可实现跨机房、跨城市的异地存储迁移;可以在数据库不停机、应用正常访问的情况下,完成存储的异地迁移。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。而且,术语“第一”、“第二”等适用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
请参见图1,其示出了本申请的应用场景示意图,该场景中包括云主机110和至少两个存储集群:第一存储集群120和第二存储集群130,其中,第一存储集群120和第二存储集群130可分别通过网络与云主机110进行通信,第一存储集群120和第二存储集群130之间也可通过网络进行通信。
其中,所述云主机110可以为计算节点、物理机或者虚拟机等,所述云主机110中安装有与存储集群相关的客户端,以便于通过客户端对后端的存储集群进行相关操作。所述云主机110上运行的操作系统可以包括但不限于linux、windows等。所述云主机110中的数据可存储在存储集群中。
所述第一存储集群120和所述第二存储集群130可分别由服务器组成,这里的服务器可以是一个独立运行的服务器,也可以是由多个服务器组成的服务器集群,其中服务器可以是云端服务器。
在图1所示的应用场景中,当需要对存储在存储集群中的数据进行数据迁移时,可通过云主机110中安装的相关客户端进行数据迁移操作,从而实现数据在存储集群之间进行迁移。
对于数据存储迁移问题,现有的技术方案中一般将数据库部署在传统的集中式存储上,无法实现数据的异地迁移;另外相关数据库在使用镜像拷贝迁移存储时,数据库需要停机,会影响业务的正常运行。
为此,本申请实施例提供了一种数据迁移方法,请参见图2,该方法可应用于云主机侧,本实施例中的云主机是通过计算资源池创建的,创建好的云主机上会安装相关的管理客户端。具体地,所述数据迁移方法包括:
S210.预先挂载第一云盘,将数据存储在所述第一云盘中,其中,所述第一云盘与第一存储集群相对应。
对于在云主机上处理生成的相关数据需要进行存储,此时云主机可通过挂载云盘的方式,将数据存储到后端的存储集群中。需要说明的是,这里实际存储数据的存储集群并不是直接的与云主机相连,而是通过存储集群创建的云盘挂载给云主机,云主机通过管理客户端可实现将数据存储到云盘的操作,从而对应到后端是将数据存储在存储集群中;即可以理解为对于云主机来说,通过操作管理客户端,云盘是可见的并且可操作的,而真正存储数据的存储集群是不可见的。
本实施例中,云主机通过挂载第一云盘,第一云盘是根据第一存储集群创建的,从而实现了数据在第一存储集群中的存储。
S220.响应于云盘挂载请求,挂载第二云盘;其中,所述第二云盘与第二存储集群相对应,所述第一存储集群和所述第二存储集群处于不同的局域网中。
对于云主机来说,在只挂载第一云盘的情况下,其数据只能存储在第一云盘中,即对应存储在第一存储集群中,当出现第一存储集群出现故障需要维修,或者第一存储集群容量不够,或者需要进行数据的异地迁移等情况时,需要对已存储在第一存储集群中的数据进行迁移。此时云主机需要挂载新的云盘,以便于数据从旧云盘迁移到新云盘。
在默认方式下,云主机只能挂载来自同一个存储集群的云盘,但是通过将其他集群的配置文件和密钥文件重命名后,并使用新的配置和密钥文件挂载云盘,可以使云主机挂载来自多个不同集群的云盘,支持多个后端集群。
本实施例中,第一存储集群和第二存储集群分别处于异地的不同局域网中。
具体地,请参见图3,其示出了一种云盘挂载方法,包括:
S310.接收所述第二存储集群发送的集群配置文件和密钥文件,对所述集群配置文件和所述密钥文件进行重命名。
为了避免与已有的第一存储集群的配置文件以及密钥文件冲突,这里云主机可以通过对第二存储集群发送的集群配置文件和密钥文件进行重命名,例如命名前的集群配置文件名称和密钥文件名称分别为:ceph.conf和keyring,则可以将其重命名为:ceph.conf.B和keyring.B。
S320.根据重命名的集群配置文件和重命名的密钥文件,挂载所述第二云盘。
云主机读取到与第二存储集群对应的重命名后的配置文件和重命名后的密钥文件后,挂载第二云盘。
本实施例中,在需要挂载新云盘时,云主机会收到云盘挂载请求,云盘挂载请求中可以包括云盘标识以及相关的文件,从而云主机可以根据云盘标识以及相关文件,挂载当前的云盘。
S230.对存储在所述第一云盘中的数据进行第一次数据重平衡,将所述第一云盘中的数据均匀存储在所述第一云盘和所述第二云盘中。
请参见图4,其示出了一种数据重平衡方法,所述方法包括:
S410.设置数据重平衡的速度参数。
本实施例中的数据重平衡可以看成是一种数据迁移方法,涉及到数据的迁移,就会关系到当前正在运行的业务,因为数据的迁移可能会影响到当前业务的正常运行,此时云主机可设置数据重平衡的参数,以实现数据的平稳迁移且不影响正常业务的运行。
S420.根据所述速度参数,在所述第一云盘和所述第二云盘之间进行数据迁移,其中,所述数据迁移的方向为从所述第一云盘到所述第二云盘。
根据所述速度参数,云主机会在第一云盘和第二云盘之间进行数据的重平衡,在本实施例中,由于原来的数据是存储在第一云盘上的,而第二云盘是新挂载的空云盘,所以第一次数据重平衡的数据迁移方向为从第一云盘到第二云盘。
S430.当所述第一云盘中的数据和所述第二云盘中的数据均匀分布时,停止数据重平衡。
第一次数据重平衡的目的就是为了实现数据在第一云盘和第二云盘之间均匀分布,当云主机检测到数据在两个云盘上均匀分布时,就会停止数据重平衡。
需要说明的是,这里的数据均匀分布并不是关于数据量的绝对均匀分布,只是一个概念性的描述。
S240.响应于第一云盘删除请求,进行第二次数据重平衡,将经过第一次数据重平衡之后的所述第一云盘中的数据迁移到所述第二云盘中。
本实施例中,由于最终目的是实现将第一云盘中的数据全部迁移到第二云盘中,并将第一云盘从云主机中去除,所以在经过第一次数据重平衡之后,云主机在接收到第一云盘删除请求时,会触发第二次数据重平衡,经过第二次数据重平衡之后,第一云盘中的数据被全部迁移到第二云盘中。
需要说明的是,在云主机接收到第一云盘删除请求时,此时并没有真正执行第一云盘的相关删除操作,只是响应了第一云盘删除请求,提前将第一云盘上的数据迁移掉,以便于后续第一云盘的删除,从而避免了数据的丢失。
本实施例中在进行数据迁移时,通过云主机作为中间转接节点,具体地,当需要将第一存储集群中的数据迁移到第二存储集群中时,云主机可通过操作将数据从第一存储集群对应的第一云盘迁移到第二存储集群对应的第二云盘,从而实现了数据从第一存储集群到第二存储集群的迁移。
上述方法中,云主机挂载第二云盘之后,还需要对新挂载的第二云盘进行处理,具体可参见图5,所述处理方法可以包括:
S510.将挂载的所述第二云盘处理为裸设备,并修改所述裸设备的权限。
S520.将所述裸设备加入到磁盘组中。
云主机挂载第二云盘之后,只是形式上的挂载,要使第二云盘能够被云主机中的操作系统以及存储系统操作调用,需要对其进行进一步处理,将其注册配置到系统中。
图5所示的云盘处理方法是在云盘被挂载给云主机之后,需要对其进行配置添加到系统的过程;相应地,在云盘需要被删除时,其删除过程应该与图5相反,具体地,可参见图6,其示出了一种云盘删除方法,包括:
S610.删除与所述第一云盘对应的裸设备。
S620.卸载所述第一云盘。
通过图6所示的方法删除了云盘,也从云主机系统中彻底删除了第一云盘的相关配置文件。
请参见图7,其示出了本申请实施例提供的另一种数据迁移方法,可应用于存储集群管理侧,所述方法包括:
S710.根据预设集群框架,创建第二存储集群,所述第二存储集群与预设的第一存储集群处于不同的局域网中;其中,所述第一存储集群对应第一云盘。
S720.创建与所述第二存储集群相对应的第二云盘。
存储集群管理端可以根据现有的云主机需要存储的数据量大小来创建与第二存储集群对应的第二云盘。
S730.将所述第二存储集群的集群配置文件和密钥文件发送至云主机,以使得所述云主机根据所述集群配置文件和所述密钥文件挂载所述第二云盘。
所述云主机中安装有与所述第二存储集群相应的客户端,云主机通过该客户端可以实现对第二存储集群对应的第二云盘进行操作,具体地,请参见图8,其示出了另一种云盘挂载方法,包括:
S810.对所述第二存储集群的所述集群配置文件和所述密钥文件进行拷贝。
存储集群管理端找到与第二存储集群对应的集群配置文件和配置文件,并对其进行复制。
S820.将拷贝的集群配置文件和拷贝的密钥文件发送至所述云主机,以使得所述云主机根据拷贝的集群配置文件和拷贝的密钥文件将所述第二云盘挂载给所述客户端。
根据拷贝的集群配置文件和拷贝文件,最终是将第二云盘挂载给云主机的客户端,以使得通过该客户端可以实现对云盘的直接操作,比如云盘数据迁移操作、云盘删除操作等。
S740.当检测到所述第一云盘中的数据迁移到所述第二云盘时,将所述第一存储集群的相应数据迁移到所述第二存储集群中。
数据从第一云盘向第二云盘迁移,对应到后端集群就是存储集群管理端将数据从第一存储集群向第二存储集群迁移。
具体地,为了清楚地说明本申请的具体实施过程,以下将以一具体示例来进行说明。
请参见图9,其示出了本申请实施例提供的一种部署结构示意图,具体是基于Ceph的Oracle云存储异地迁移部署结构示意图,从图9中可以看出:
1.A城市和B城市两地的机房,均由多台x86服务器部署相同版本的Ceph软件,通过以太网组成两个分布式存储集群。
2.通过计算资源池创建Oracle云主机(计算节点,物理或虚拟机),Oracle云主机上安装有Ceph客户端和Oracle数据库软件;其中,通过Ceph客户端可以使得挂载的Ceph可作为文件系统来使用。
3.A城市云存储集群为Oracle云主机创建块存储设备(Pool A/ImageA),通过IP网络挂载给云主机中的Ceph客户端,作为云主机的云盘;并将A城市云存储集群对应的云盘处理为云盘裸设备,并将云盘裸设备加入到数据库的磁盘组中。
4.云主机使用Oracle ASM(Automatic Storage Management,自动存储管理)将云盘块设备组成Oracle文件系统,创建并运行Oracle数据库。
5.B城市机房的云存储集群作为待迁移的目的存储集群。
结合图9所示的部署结构图,具体来说明一下本申请的具体实施过程。请参见图10和图11,其分别示出了Oracle云存储异地迁移过程中存储集群的加入方法,以及Oracle云存储异地迁移过程中存储集群的裁撤方法,现结合图10和图11中的步骤标号来进行说明。
从图10中可以看出:
1.存储集群管理端将B城市Ceph集群monitor节点的集群配置文件(ceph.conf)和密钥文件(keyring)拷贝并发送至云主机(Ceph客户端),为了避免与已有的A集群配置文件冲突,云主机将其重命名为ceph.conf.B和keyring.B;
2.在B城市Ceph集群,存储集群管理端根据现有Oracle数据库大小,创建对应大小、副本数的Ceph块存储云盘(Pool B/Image B);
3.Oracle云主机(计算节点)上,使用从B集群拷贝来的配置和密钥文件(ceph.conf.B,keyring.B),挂载B城市集群的云盘块设备;
4.Oracle云主机通过raw命令处理新挂载的OS块设备为裸设备(rawdevices),并修改裸设备权限;
5.Oracle云主机将B城市集群的云盘裸设备加入数据库ASM磁盘组,根据业务繁忙程度,设置数据重平衡速度参数rebalance power;这里的数据重平衡参数的一般取值范围为1~11,可根据具体情况进行设定;
6.Oracle云主机中的ASM根据数据重平衡参数开始第一次数据重平衡,将Oracle数据均匀分布在新、老两个云盘块设备中(其后端对应A、B两地的Ceph存储集群)。
从图11中可以看出:
7.可通过观察云主机中的Oracle自带的v$asm_operation视图,来查看数据重平衡的过程,待重平衡完成后,从ASM磁盘组中删除A城市Ceph存储集群对应的云盘(DATA_0000);
8.ASM再次进行数据重平衡,通过IP网络,Oracle云主机将数据全部移至B城市Ceph存储集群对应的云盘(/dev/raw/raw2);
9.观察v$asm_operation视图,待第二次数据重平衡完成后,使用raw命令删除Oracle云主机上的旧云盘裸设备(/dev/raw/raw1),并相应修改udev配置文件;
10.在Oracle云主机上使用ceph rbd命令卸载A城市集群的云盘块设备;
11.对迁移之后B城市存储集群中的数据进行验证,验证无问题后,删除A城市Ceph集群的块存储云盘(Pool A/Image A)。
在本申请中,通过配置云主机的多后端存储集群,将多套异地存储集群的云盘块设备挂载给云主机,加入已有Oracle数据库的ASM磁盘组,利用Oracle ASM(AutomaticStorage Management)数据重平衡的机制,将Oracle数据均匀分布在新老云盘块设备上(对应后端A,B两地的Ceph集群),再从ASM磁盘组中删除旧存储集群的云盘块设备,ASM数据再次重平衡后,达到将Oracle数据迁移到异地存储集群的目的。
在基于SAN(存储区域网络)的Oracle环境中,由于计算与存储的分离,经常有计算节点不变,将数据迁移到其他存储的需求。在传统的FC-SAN中,由于光纤交换网络的覆盖距离限制,无法实现跨机房/城市的存储迁移。而在本申请中,由于Ceph的软件定义存储、通过IP网络挂载云盘等特性,Ceph存储集群云盘可通过IP网络挂载给同一计算节点,使得计算节点与存储集群的地理位置无关,并支持计算节点和云盘的多对多映射(一块云盘可以挂载给多个计算节点,一个计算节点可以挂载多块云盘),可实现跨机房/城市的异地Oracle存储迁移;利用Oracle ASM的在线数据重平衡特性,可以在数据库不停机,应用正常访问的情况下,完成存储的异地迁移;解决了现有技术中由于数据库一般部署在传统的集中式存储设备中,无法进行异地迁移存储的问题,以及在使用镜像拷贝迁移存储时,数据库需要停机的问题。
本实施例还提供了一种数据迁移装置,请参见图12,所述装置包括:
预处理模块1210,用于预先挂载第一云盘,将数据存储在所述第一云盘中,其中,所述第一云盘与第一存储集群相对应。
挂载请求响应模块1220,用于响应于云盘挂载请求,挂载第二云盘;其中,所述第二云盘与第二存储集群相对应,所述第一存储集群和所述第二存储集群处于不同的局域网中。
第一重平衡模块1230,用于对存储在所述第一云盘中的数据进行第一次数据重平衡,将所述第一云盘中的数据均匀存储在所述第一云盘和所述第二云盘中。
第二重平衡模块1240,用于响应于第一云盘删除请求,进行第二次数据重平衡,将经过第一次数据重平衡之后的所述第一云盘中的数据迁移到所述第二云盘中。
请参见图13,所述挂载请求响应模块1220包括:
文件接收模块1310,用于接收所述第二存储集群发送的集群配置文件和密钥文件,对所述集群配置文件和所述密钥文件进行重命名。
第一挂载模块1320,用于根据重命名的集群配置文件和重命名的密钥文件,挂载所述第二云盘。
请参见图14,所述第一重平衡模块1230包括:
参数设置模块1410,用于设置数据重平衡的速度参数。
第一迁移模块1420,用于根据所述速度参数,在所述第一云盘和所述第二云盘之间进行数据迁移,其中,所述数据迁移的方向为从所述第一云盘到所述第二云盘。
重平衡停止模块1430,用于当所述第一云盘中的数据和所述第二云盘中的数据均匀分布时,停止数据重平衡。
请参见图15,所述装置还包括云盘加入模块,所述云盘加入模块包括:
第一处理模块1510,用于将挂载的所述第二云盘处理为裸设备,并修改所述裸设备的权限。
第一加入模块1520,用于将所述裸设备加入到磁盘组中。
请参见图16,所述装置还包括云盘删除模块,所述云盘删除模块包括:
第一删除模块1610,用于删除与所述第一云盘对应的裸设备。
第一卸载模块1620,用于卸载所述第一云盘。
请参见图17,本申请实施例还提供了另一种数据迁移装置,所述装置包括:
第二集群创建模块1710,用于根据预设集群框架,创建第二存储集群,所述第二存储集群与预设的第一存储集群处于不同的局域网中;其中,所述第一存储集群对应第一云盘。
第二云盘创建模块1720,用于创建与所述第二存储集群相对应的第二云盘;具体地,可根据所述云主机中的数据量,创建所述第二云盘。
文件发送模块1730,用于将所述第二存储集群的集群配置文件和密钥文件发送至云主机,以使得所述云主机根据所述集群配置文件和所述密钥文件挂载所述第二云盘。
数据迁移模块1740,用于当检测到所述第一云盘中的数据迁移到所述第二云盘时,将所述第一存储集群的相应数据迁移到所述第二存储集群中。
请参见图18,所述文件发送模块1730包括:
拷贝模块1810,用于对所述第二存储集群的所述集群配置文件和所述密钥文件进行拷贝。
第一发送模块1820,用于将拷贝的集群配置文件和拷贝的密钥文件发送至所述云主机,以使得所述云主机根据拷贝的集群配置文件和拷贝的密钥文件将所述第二云盘挂载给所述客户端。
上述实施例中提供的装置可执行本申请任意实施例所提供方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的方法。
本实施例还提供了一种计算机可读存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令由处理器加载并本实施例上述的任一方法。
本实施例还提供了一种设备,其结构图请参见图19,该设备1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对设备中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在设备1900上执行存储介质1930中的一系列指令操作。设备1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。本实施例上述的任一方法均可基于图19所示的设备进行实施。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤和顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或中断产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。应当理解到,本实施例中所揭露的方法、装置等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元模块的间接耦合或通信连接。
基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。