掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法、系统、设备以及存储介质

文献发布时间:2023-06-19 19:33:46


一种数据处理方法、系统、设备以及存储介质

技术领域

本发明涉及存储领域,具体涉及一种数据处理方法、系统、设备以及存储介质。

背景技术

随着固态存储技术的发展,固态存储设备(如NVMe、SSD等)作为下一代存储设备进入了存储市场。但是受限于设备成本,固态存储设备无法全部替代传统的机械存储设备(HDD),只能作为小容量的高速缓存设备存在于存储系统中。根据存储服务器中的存储设备分类,当前的存储服务器一般可以分成三类:全闪(全部为高速设备如SSD、NVMe等)、混闪(由高速设备SSD或NVMe、低速设备HDD混合组成)、全HDD(全部为低速设备HDD)。

在采用混闪服务器的分布式存储系统中,在成本有限及系统安全可靠的前提下,大家往往通过“数据分层存储”,用高速设备存储用户高频访问的热点数据,且要在有限的存储空间内尽可能多的存储高频数据,降低用户的读取时延;使用性能较低的HDD盘存储用户低频访问的数据,充分发挥HDD盘容量大、价格低的优势,最大限度的利用硬件资源。对于混闪服务器,目前主流的厂商一般用三种方式去管理闪存设备:1)采用双存储池方案,利用闪存盘创建高速缓存池,HDD盘创建慢速池;2)不单独划分存储池,缓存盘划分分区后做XFS文件系统;3)不单独划分存储池,OSD进程同时管理NVMe盘和HDD盘。方案一中采用的双存储池方案,可以使用不同的OSD进程分别管理缓存盘和低速盘,即使用Cache Pool管理缓存盘,存储热点数据;使用Storage Pool管理低速盘,存储非热点数据。但是双存储池意味着更多的PG、需要双池绑定,业务IO因存在代理转发使得IO路径变长,降低存储性能。方案二不划分存储池,在把NVMe盘划分分区后做XFS文件系统,把热点对象以文件的方式写入XFS文件系统,虽然以文件的方式管理热数据对象较为简单,但是引入了XFS文件系统,存储的IO路径变长,XFS文件系统的稳定性也面临挑战。方案三不需要双存储池方案,也不需要引入XFS文件系统,将NVMe分区与存储节点上的HDD盘相对应,用同一个OSD进程管理HDD盘和对应的NVMe分区,将热点数据写入NVMe分区,非热点数据写入管理的HDD盘,数据读取时可以先判断要读取的数据是否存在于NVMe分区,如果存在则从NVMe分区读取,可以极大提升读性能,提升客户体验。

虽然方案三较前两个方案来说稳定性和性能都有一定的优势,但是也存在一定问题。由于数据的写入具有随机性,当缓存数据的量足够大时,NVMe盘会因为被写的很散而触发GC机制而导致较多的GC数据搬移,性能大为降低。

发明内容

有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种数据处理方法,包括以下步骤:

响应于接收到写IO,判断与所述写IO对应的对象是否为热数据对象;

响应于所述对应的对象是热数据对象,判断当前是否存在热点对象;

响应于当前不存在所述热点对象,申请热点对象并在缓存空间中申请与所述热点对象对应的存储空间;

将所述写IO中的数据写入底层存储并写入到所述热点对象对应的存储空间中,并在所述写IO对应的对象的元数据中记录映射关系,其中所述映射关系包括所述热点对象的ID以及在所述热点对象上的存储位置。

在一些实施例中,还包括:

响应于当前存在所述热点对象,根据所述热点对象对应的存储空间中剩余存储空间的大小与所述写IO的大小确定是否重新申请新的热点对象。

在一些实施例中,还包括:

响应于所述热点对象对应的存储空间中剩余存储空间的大小大于所述写IO的大小,不申请新的热点对象,将所述写IO中的数据写入底层存储并顺序写入所述热点对象对应的存储空间中。

在一些实施例中,还包括:

在所述写IO对应的对象的元数据中记录所述热点对象的ID以及在所述热点对象上的存储位置。

在一些实施例中,还包括:

响应于所述热点对象对应的存储空间中剩余存储空间的大小小于所述写IO的大小,申请新的热点对象并在缓存空间中申请与所述新的热点对象对应的存储空间。

在一些实施例中,还包括:

将所述写IO中的数据写入底层存储并写到所述新的热点对象对应的存储空间中。

在一些实施例中,还包括:

在所述写IO对应的对象的元数据中记录所述新的热点对象的ID以及在所述新的热点对象上的存储位置。

在一些实施例中,响应于接收到写IO,判断与所述写IO对应的对象是否为热数据对象,进一步包括:

设定时间周期以及统计周期数;

在每一个时间周期内创建并维护一个新的热数据对象表,其中所述热数据对象表用于记录在该时间周期内被读取的对象的ID;

在所述统计周期数内,统计多个所述热数据对象表,并将被读取次数达到阈值的对象确定为热数据对象。

在一些实施例中,还包括:

响应于检测到所述热数据对象删除或发生覆盖写,将对应的所述热点对象中相应的数据段置为失效;

响应于检测到对应的所述热点对象中所有的数据段均为失效状态,将所述热点对象对应的存储空间进行回收并删除所述热点对象。

在一些实施例中,还包括:

响应于检测到对应的所述热点对象中有效空间低于阈值,将对应的所述热点对象加入回收队列;

将所述回收队列中的多个所述热点对象进行数据聚合并将聚合后的数据写入到新的热点对象中并删除多个所述热点对象。

在一些实施例中,还包括:

更新对应的热数据对象的元数据中的映射关系。

在一些实施例中,还包括:

响应于检测到所述缓存空间利用率达到阈值,根据LRU算法删除热点对象。

在一些实施例中,响应于检测到所述缓存空间利用率达到阈值,根据LRU算法删除热点对象,进一步包括:

响应于所述缓存空间的利用率大于第一阈值小于第二阈值,根据LRU算法以第一速度删除热点对象。

在一些实施例中,还包括:

响应于所述缓存空间的利用率大于第二阈值小于第三阈值,根据LRU算法以大于所述第一速度的第二速度删除热点对象。

在一些实施例中,还包括:

响应于所述缓存空间的利用率大于第三阈值,根据LRU算法以大于所述第二速度的第三速度删除热点对象。

在一些实施例中,还包括:

响应于检测到主归置组发出主备切换,将所述主归置组对应的所有热点对象加入删除队列;

响应于重新上电,在上电流程中对所述删除队列中的热点对象进行清理。

在一些实施例中,还包括:

响应于接收到读IO,根据所述读IO对应的对象对应的元数据判断是否能够在缓存空间中命中所述读IO对应的数据;

响应于能够命中,则从所述缓存空间中读取对应的数据并返回。

在一些实施例中,响应于能够命中,则从所述缓存空间中读取对应的数据并返回,进一步包括:

判断是否全部命中;

响应于全部命中,从所述缓存空间中读取对应的数据并返回。

在一些实施例中,还包括:

响应于部分命中,从所述缓存空间中读取命中的部分数据并从底层存储读取未命中的部分数据;

将所述命中的部分数据与所述未命中的部分数据进行拼接后返回。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据处理系统,包括:

第一判断模块,配置为响应于接收到写IO,判断与所述写IO对应的对象是否为热数据对象;

第二判断模块,配置为响应于所述对应的对象是热数据对象,判断当前是否存在热点对象;

申请模块,配置为响应于当前不存在所述热点对象,申请热点对象并在缓存空间中申请与所述热点对象对应的存储空间;

写模块,配置为将所述写IO中的数据写入底层存储并写入到所述热点对象对应的存储空间中,并在所述写IO对应的对象的元数据中记录映射关系,其中所述映射关系包括所述热点对象的ID以及在所述热点对象上的存储位置。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时执行如上所述的任一种数据处理方法的步骤。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种数据处理方法的步骤。

本发明具有以下有益技术效果之一:本发明提出的方案在管理热点数据写入时,不以业务对象为单位去管理,而是构造新的热点对象,把业务对象的热点数据追加写入到热点对象,减少对NVMe盘的随机写造成的大量GC,提升存储系统性能。而且通过建立业务对象到热点对象的正向映射关系,对热点数据的读取可以直接从NVMe盘读取,进一步提升存储系统的读性能。

附图说明

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

图1为本发明的实施例提供的数据处理方法的流程示意图;

图2为本发明的实施例提供的热点数据在NVMe盘的追加写示意图;

图3为本发明的实施例提供的热点数据处理方法的流程框图;

图4为本发明的实施例提供的热点数据对象判定的流程框图;

图5为本发明的实施例提供的数据处理系统的结构示意图;

图6为本发明的实施例提供的计算机设备的结构示意图;

图7为本发明的实施例提供的计算机可读存储介质的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

在本发明的实施例中,OSD(Object Storage Device):对象存储资源

Object:对象,即数据保存的最小单位,分布在各个PG中,一个PG中保存着大量对象;

Oid:即Object id,对象的id;

PG(PlacementGroup):归置组,用于放置Object的载体;

Cache Pool:高速缓存池,由固态存储设备如NVMe等组成;

StoragePool:数据存储池,由低速存储设备如HDD盘组成;

GC(GarbageCollection):垃圾回收。

根据本发明的一个方面,本发明的实施例提出一种数据处理方法,如图1所示,其可以包括步骤:

S1,响应于接收到写IO,判断与所述写IO对应的对象是否为热数据对象;

S2,响应于所述对应的对象是热数据对象,判断当前是否存在热点对象;

S3,响应于当前不存在所述热点对象,申请热点对象并在缓存空间中申请与所述热点对象对应的存储空间;

S4,将所述写IO中的数据写入底层存储并写入到所述热点对象对应的存储空间中,并在所述写IO对应的对象的元数据中记录映射关系,其中所述映射关系包括所述热点对象的ID以及在所述热点对象上的存储位置。

本发明提出的方案通过对热数据追加写到缓存中,实现了对缓存的顺序写,从而减少因小块随机写产生的大量回收数据搬移,提升存储系统性能。

在一些实施例中,还包括:

响应于当前存在所述热点对象,根据所述热点对象对应的存储空间中剩余存储空间的大小与所述写IO的大小确定是否重新申请新的热点对象。

在一些实施例中,还包括:

响应于所述热点对象对应的存储空间中剩余存储空间的大小大于所述写IO的大小,不申请新的热点对象,将所述写IO中的数据写入底层存储并顺序写入所述热点对象对应的存储空间中。

在一些实施例中,还包括:

在所述写IO对应的对象的元数据中记录所述热点对象的ID以及在所述热点对象上的存储位置。

在一些实施例中,还包括:

响应于所述热点对象对应的存储空间中剩余存储空间的大小小于所述写IO的大小,申请新的热点对象并在缓存空间中申请与所述新的热点对象对应的存储空间。

在一些实施例中,还包括:

将所述写IO中的数据写入底层存储并写到所述新的热点对象对应的存储空间中。

在一些实施例中,还包括:

在所述写IO对应的对象的元数据中记录所述新的热点对象的ID以及在所述新的热点对象上的存储位置。

具体的,当发生数据写入时,如果对应的对象被判定为热数据对象,则在IO写入底层存储(例如HDD盘)之后,还要将数据写入NVMe盘的缓存;这样在读取对象时如果缓存命中,则优先读取缓存。

例如,如图2所示,当业务对象oid_1被判定为热数据对象,其接收到一个写IO(写入长度为8k),若当前没有热点对象,会首先申请一个hot_oid3(热点对象),并向NVMe盘为hot_oid3申请一个4M大小的存储空间,以将该8K数据写入到offset_len为[0,8k]的存储位置,写入完成后,更新oid_1的元数据,记录该数据的offset、length、hot_oid1以及在hot_oid1上的实际存储位置即实际oid到hot_oid的正向映射关系。此时存在热点对象,若其它业务对象oid_2有热数据写入时不再申请空间,直到写入的热数据超过4M时,生成hot_oid4并继续向NVMe盘申请4M空间。若当前的热点对象的剩余空间不足以容纳下一个写IO需要写入的数据,则直接申请下一个hot_oid。这样不同hot_oid申请的4M空间在物理磁盘上是连续的,这样保证每次热数据写入时都是连续写入,实现对NVMe盘的顺序追加写。

在一些实施例中,若缓存空间有限,则可以只将热点数据以单副本的形式保存,即只在主PG处理对应的热点数据读写。

在一些实施例中,响应于接收到写IO,判断与所述写IO对应的对象是否为热数据对象,进一步包括:

设定时间周期以及统计周期数;

在每一个时间周期内创建并维护一个新的热数据对象表,其中所述热数据对象表用于记录在该时间周期内被读取的对象的ID;

在所述统计周期数内,统计多个所述热数据对象表,并将被读取次数达到阈值的对象确定为热数据对象。

具体的,如图3和图4所示,热点数据识别以对象为单位,热度统计方式可以通过布隆过滤器实现,主要功能为判断对象是否为热数据对象。按照设定的时间周期(默认1min,可配置),每个周期维护一个hit_set,用于记录当前周期访问的对象。当前周期结束后,创建新周期对应的hit_set,记录访问的对象。热度信息保留最近5个周期的统计(保留周期数可配置)。热度决策对业务流程可视为黑盒,根据历史热度记录命中情况确定。在进行热点数据识别,可以先申请hit_set_lock,然后在读取hit_set,若当前读取的对象在历史5个热度记录周期内命中3次,则认为是热数据,输入对象引用,输出为该对象是否为热数据对象,结果:true或false。

在一些实施例中,还包括:

响应于检测到所述热数据对象删除或发生覆盖写,将对应的所述热点对象中相应的数据段置为失效;

响应于检测到对应的所述热点对象中所有的数据段均为失效状态,将所述热点对象对应的存储空间进行回收并删除所述热点对象。

具体的,热数据缓存通过追加写实现,意味着一个hot_oid实际上会包含多个业务对象oid,当oid删除或发生热数据覆盖写时(热数据覆盖写也意味着之前的热数据缓存失效,实际上等同于数据删除),因为hot_oid可能还存在着其他对象的热数据引用,并不能删除hot_oid,只有hot_oid上的所有业务oid的数据段都失效时,才可能删除hot_oid,然后回收空间。这些被回收的NVMe盘空间可以在后续的热点对象追加写时被新的热数据对象使用。

在一些实施例中,还包括:

响应于检测到对应的所述热点对象中有效空间低于阈值,将对应的所述热点对象加入回收队列;

将所述回收队列中的多个所述热点对象进行数据聚合并将聚合后的数据写入到新的热点对象中并删除多个所述热点对象。

在一些实施例中,还包括:

更新对应的热数据对象的元数据中的映射关系。

具体的,热数据空间回收还要有热点对象的空间整合回收机制,首先需要正向扫描hot_oid,把有效空间低于阈值(如小于256k)的hot_oid加入垃圾回收队列,将队列中的数据重新聚合成4M大小,写入新的热点对象,然后更新业务对象的映射关系,最后删除原始的hot_oid,释放空间。

在一些实施例中,还包括:

响应于检测到所述缓存空间利用率达到阈值,根据LRU算法删除热点对象。

在一些实施例中,响应于检测到所述缓存空间利用率达到阈值,根据LRU算法删除热点对象,进一步包括:

响应于所述缓存空间的利用率大于第一阈值小于第二阈值,根据LRU算法以第一速度删除热点对象。

在一些实施例中,还包括:

响应于所述缓存空间的利用率大于第二阈值小于第三阈值,根据LRU算法以大于所述第一速度的第二速度删除热点对象。

在一些实施例中,还包括:

响应于所述缓存空间的利用率大于第三阈值,根据LRU算法以大于所述第二速度的第三速度删除热点对象。

具体的,热数据对象的oid要通过LRU管理,当缓存空间不足(缓存空间已达80%)时,需要根据LRU机制,淘汰相对较冷的热点数据,释放缓存空间;释放缓存空间要根据缓存空间已用容量占比,梯度控制淘汰速度。梯度控制淘汰速度可根据缓存空间已用容量控制,当缓存空间在低水位时(大于80%,但小于90%),删除热点对象速度为5/s;当缓存空间在中水位时(大于90%,但小于95%),删除热点对象速度为10/s;当缓存空间在高水位时(大于95),删除热点对象速度为20/s。

在一些实施例中,还包括:

响应于检测到主归置组发出主备切换,将所述主归置组对应的所有热点对象加入删除队列;

响应于重新上电,在上电流程中对所述删除队列中的热点对象进行清理。

具体的,当PG出现主备切换时,识别出发生主备切换的PG对应的hot_oid,将对应所属的hot_oid加入后台热数据删除队列,删除热点数据;当出现OSD上电时,默认之前保留的热数据缓存皆无效,在上电流程中完成对热点数据的清理,相应PG的热点数据全部清理完成后,该PG的热数据缓存功能才可生效。

在一些实施例中,还包括:

响应于接收到读IO,根据所述读IO对应的对象对应的元数据判断是否能够在缓存空间中命中所述读IO对应的数据;

响应于能够命中,则从所述缓存空间中读取对应的数据并返回。

在一些实施例中,响应于能够命中,则从所述缓存空间中读取对应的数据并返回,进一步包括:

判断是否全部命中;

响应于全部命中,从所述缓存空间中读取对应的数据并返回。

在一些实施例中,还包括:

响应于部分命中,从所述缓存空间中读取命中的部分数据并从底层存储读取未命中的部分数据;

将所述命中的部分数据与所述未命中的部分数据进行拼接后返回。

具体的,当数据读取时,需要判断本次读取的数据是否全部命中或者部分命中热数据缓存,如果全部命中,则根据正向关系向hot_oid读取数据,后将数据返回给客户端;如果部分命中缓存,则先根据正向关系读取命中的部分,然后向HDD读取未命中的数据,数据拼接后把完成的数据返回给客户端。

本发明提出的方案在管理热点数据写入时,不以业务对象为单位去管理,而是构造新的热点对象,把业务对象的热点数据追加写入到热点对象,减少对NVMe盘的随机写造成的大量GC,提升存储系统性能。而且通过建立业务对象到热点对象的正向映射关系,对热点数据的读取可以直接从NVMe盘读取,进一步提升存储系统的读性能。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据处理系统400,如图5所示,包括:

第一判断模块401,第一判断模块,配置为响应于接收到写IO,判断与所述写IO对应的对象是否为热数据对象;

第二判断模块402,配置为响应于所述对应的对象是热数据对象,判断当前是否存在热点对象;

申请模块403,配置为响应于当前不存在所述热点对象,申请热点对象并在缓存空间中申请与所述热点对象对应的存储空间;

写模块404,配置为将所述写IO中的数据写入底层存储并写入到所述热点对象对应的存储空间中,并在所述写IO对应的对象的元数据中记录映射关系,其中所述映射关系包括所述热点对象的ID以及在所述热点对象上的存储位置。

在一些实施例中,还包括确定模块,配置为:

响应于当前存在所述热点对象,根据所述热点对象对应的存储空间中剩余存储空间的大小与所述写IO的大小确定是否重新申请新的热点对象。

在一些实施例中,写模块404还配置为:

响应于所述热点对象对应的存储空间中剩余存储空间的大小大于所述写IO的大小,不申请新的热点对象,将所述写IO中的数据写入底层存储并顺序写入所述热点对象对应的存储空间中。

在一些实施例中,写模块404还配置为:

在所述写IO对应的对象的元数据中记录所述热点对象的ID以及在所述热点对象上的存储位置。

在一些实施例中,申请模块403还配置为:

响应于所述热点对象对应的存储空间中剩余存储空间的大小小于所述写IO的大小,申请新的热点对象并在缓存空间中申请与所述新的热点对象对应的存储空间。

在一些实施例中,写模块404还配置为:

将所述写IO中的数据写入底层存储并写到所述新的热点对象对应的存储空间中。

在一些实施例中,写模块404还配置为:

在所述写IO对应的对象的元数据中记录所述新的热点对象的ID以及在所述新的热点对象上的存储位置。

在一些实施例中,第一判断模块401还配置为:

设定时间周期以及统计周期数;

在每一个时间周期内创建并维护一个新的热数据对象表,其中所述热数据对象表用于记录在该时间周期内被读取的对象的ID;

在所述统计周期数内,统计多个所述热数据对象表,并将被读取次数达到阈值的对象确定为热数据对象。

在一些实施例中,还包括回收模块,配置为:

响应于检测到所述热数据对象删除或发生覆盖写,将对应的所述热点对象中相应的数据段置为失效;

响应于检测到对应的所述热点对象中所有的数据段均为失效状态,将所述热点对象对应的存储空间进行回收并删除所述热点对象。

在一些实施例中,回收模块还配置为:

响应于检测到对应的所述热点对象中有效空间低于阈值,将对应的所述热点对象加入回收队列;

将所述回收队列中的多个所述热点对象进行数据聚合并将聚合后的数据写入到新的热点对象中并删除多个所述热点对象。

在一些实施例中,回收模块还配置为:

更新对应的热数据对象的元数据中的映射关系。

在一些实施例中,回收模块还配置为:

响应于检测到所述缓存空间利用率达到阈值,根据LRU算法删除热点对象。

在一些实施例中,回收模块还配置为:

响应于所述缓存空间的利用率大于第一阈值小于第二阈值,根据LRU算法以第一速度删除热点对象。

在一些实施例中,回收模块还配置为:

响应于所述缓存空间的利用率大于第二阈值小于第三阈值,根据LRU算法以大于所述第一速度的第二速度删除热点对象。

在一些实施例中,回收模块还配置为:

响应于所述缓存空间的利用率大于第三阈值,根据LRU算法以大于所述第二速度的第三速度删除热点对象。

在一些实施例中,故障处理模块,配置为:

响应于检测到主归置组发出主备切换,将所述主归置组对应的所有热点对象加入删除队列;

响应于重新上电,在上电流程中对所述删除队列中的热点对象进行清理。

在一些实施例中,读取模块,配置为:

响应于接收到读IO,根据所述读IO对应的对象对应的元数据判断是否能够在缓存空间中命中所述读IO对应的数据;

响应于能够命中,则从所述缓存空间中读取对应的数据并返回。

在一些实施例中,读取模块还配置为:

判断是否全部命中;

响应于全部命中,从所述缓存空间中读取对应的数据并返回。

在一些实施例中,读取模块还配置为:

响应于部分命中,从所述缓存空间中读取命中的部分数据并从底层存储读取未命中的部分数据;

将所述命中的部分数据与所述未命中的部分数据进行拼接后返回。

本发明提出的方案在管理热点数据写入时,不以业务对象为单位去管理,而是构造新的热点对象,把业务对象的热点数据追加写入到热点对象,减少对NVMe盘的随机写造成的大量GC,提升存储系统性能。而且通过建立业务对象到热点对象的正向映射关系,对热点数据的读取可以直接从NVMe盘读取,进一步提升存储系统的读性能。

基于同一发明构思,根据本发明的另一个方面,如图6所示,本发明的实施例还提供了一种计算机设备501,包括:

至少一个处理器520;以及

存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种数据处理方法的步骤。

基于同一发明构思,根据本发明的另一个方面,如图7所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序610,计算机程序610被处理器执行时执行如上的任一种数据处理方法的步骤。

最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。

此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。

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

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

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

技术分类

06120115953303