一种数据回滚方法、装置、及终端
技术领域
本说明书实施例涉及数据处理技术领域,尤其涉及一种数据回滚方法、装置、及。
背景技术
数据回滚是指,当数据处理错误时,将数据恢复到上一次正确状态。现有技术中,为了实现数据回滚,在线上存储介质中建立两个线上存储数据表,例如数据表A与数据表B,其中,在离线数据同步过程中,将离线存储介质中所存储的,最近一个时间周期内产生的数据同步至数据表A,将该最近一个时间周期的前一个时间周期内产生的数据同步至数据表B,后续,在从线上存储介质中读取数据的过程中,若检测到数据表A中的数据错误,则切换至数据表B进行数据读取,当数据表A中的数据修复之后,再切换回数据表A进行数据读取。
由上述描述可知,为了实现上述数据回滚过程,需要预先针对两个线上存储数据表配置两套离线数据同步流程以及两套线上数据读取策略,由此可见,现有技术的预配置过程十分繁琐。
发明内容
针对上述技术问题,本说明书实施例提供一种数据回滚方法、装置、及。
根据本说明书实施例的第一方面,提供一种数据回滚方法,所述方法包括:
在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表;
所述离线存储数据表包括至少一个数据分区,每一所述数据分区存储一个时间周期内产生的数据;
所述线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据;
针对每一所述数据分区,将所述数据分区中的数据同步至所述线上存储数据表中,并根据所述数据分区对应的时间周期为所同步的数据设置版本号,其中,所述版本号随着所述时间周期的推移而逐步递增;
在从所述线上存储数据表中读取数据的过程中,判断所述线上存储数据表中具有最高版本号的数据是否错误;
若是,则读取具有除所述最高版本号以外的指定版本号的数据;否则,读取具有所述最高版本号的数据。
根据本申请实施例的第二方面,提供一种数据回滚装置,所述装置包括:
配置模块,用于在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表;
所述离线存储数据表包括至少一个数据分区,每一所述数据分区存储一个时间周期内产生的数据;
所述线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据;
同步模块,用于针对每一所述数据分区,将所述数据分区中的数据同步至所述线上存储数据表中,并根据所述数据分区对应的时间周期为所同步的数据设置版本号,其中,所述版本号随着所述时间周期的推移而逐步递增;
判断模块,用于在从所述线上存储数据表中读取数据的过程中,判断所述线上存储数据表中具有最高版本号的数据是否错误;
第一读取模块,用于若所述线上存储数据表中具有最高版本号的数据错误,则读取具有除所述最高版本号以外的指定版本号的数据;
第二读取模块,用于若所述线上存储数据表中具有最高版本号的数据正确,则读取具有所述最高版本号的数据。
根据本申请实施例的第三方面,提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现本说明书实施例提供的任一项数据回滚的方法。
本说明书实施例所提供的技术方案,通过在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表,且该离线存储数据表包括至少一个数据分区,每一数据分区存储一个时间周期内产生的数据,该线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据,针对每一数据分区,将数据分区中的数据同步至线上存储数据表中,并根据数据分区对应的时间周期为同步的数据设置版本号,其中,版本号随着时间周期的推移而逐步递增,后续,在从线上存储数据表中读取数据的过程中,判断线上存储数据表中具有最高版本号的数据是否错误,若是,则读取具有除最高版本号以外的指定版本号的数据,否则,则读取具有最高版本号的数据。通过该技术方案,由于将不同时间周期内产生的数据存储至同一线上存储数据表中,并以版本号进行时间周期的区分,从而可以实现配置一套数据读取策略,一套离线数据同步流程,即可实现数据回滚,预配置过程较为简便,同时,通过一个线上存储数据表可为多个业务应用提供数据服务,适用性较好。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术中分布式存储架构的示意图;
图2为本说明书实施例中分布式存储架构的示意图;
图3为本说明书一示例性实施例提供的数据回滚方法的实施例流程图;
图4为本说明书一示例性实施例中配置界面的一种示例;
图5为本说明书一示例性实施例提供的数据回滚装置的实施例框图;
图6示出了本说明书实施例所提供的一种更为具体的终端硬件结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
在基于大数据的人工智能、机器学习、决策服务等技术领域中,可以采用分布式计算机架构搜集数据,这些数据可以来自社交网络、电子商务网站、顾客来访记录、顾客消费记录等诸多来源,且这些数据往往具有实时性,即每隔一个预设时间周期,参与业务系统运行的数据可以更新一次。
通常情况下,在诸如此类的分布式计算机架构中,首先将搜集到的数据存储在稳定性较高的离线存储介质中,但是,离线存储介质的读取速度较低,从而为了满足业务系统对数据的访问需求,可以进一步将离线存储介质中的数据按照一定策略,例如每隔预设时间周期,即同步至线上存储介质中,以供业务系统随意访问,该线上存储介质可以为磁盘、磁盘阵列等。
然而,离线存储介质中存储的数据难免出错,从而从离线存储介质同步至线上存储介质中的数据也将存在错误,业务系统读取到这些错误数据,并基于这些错误数据运行时,将出现异常情况,此时,为了保障业务系统的正常运行,可以在线上存储介质中进行数据回滚,即将业务系统所读取的数据恢复到上一次正确数据。
现有技术中,为了实现数据回滚,可以在线上存储介质中建立两个线上存储数据表,在离线数据同步过程中,将离线存储介质中所存储的,最近一个时间周期内产生的数据同步至其中一个线上存储数据表,将该最近一个时间周期的前一个时间周期内产生的数据同步至另一个线上存储数据表,例如,如图1所示,为现有技术中分布式存储架构的示意图,在图1所示例的离线存储介质中包括离线存储数据表,该离线存储数据表包括多个数据分区,图1中以三个数据分区为例,每一数据分区可存储一个时间周期内产生的数据,例如,如图1所示,数据分区“Partition#1”中存储“20171212”这一时间周期内产生的数据,数据分区“Partition#2”中存储“20171213”这一时间周期内产生的数据,数据分区“Partition#3”中存储“20171214”这一时间周期内产生的数据。
具体的,假设首次向离线存储数据表的数据分区“Partition#1”中写入“20171212”这一时间周期内所产生的数据后,可以按照预先设置的时间策略,例如在指定时刻将数据分区“Partition#1”中的数据同步至线上存储介质中的线上存储数据表“TableA”中,后续,在向数据分区“Partition#2”写入“20171213”这一时间周期内所产生的数据后,可以将数据分区“Partition#2”中的数据同步至线上存储介质中的线上存储数据表“Table B”中,再后续,在向数据分区“Partition#3”写入“20171214”这一时间周期内所产生的数据之后,将数据分区“Partition#3”中的数据同步至线上存储数据表“Table A”中,本领域技术人员可以理解的是,如此操作将覆盖“20171212”这一时间周期内所产生的数据。此时,如图1所示,线上存储数据表“Table A”中存储最近一个时间周期,即“20171214”这一时间周期内产生的数据,线上存储数据表“Table B”中存储前一个时间周期,即“20171213”这一时间周期内产生的数据。
后续,业务系统在从线上存储介质中读取数据的过程中,默认读取“Table A”中的数据,但倘若检测到“Table A”中的数据错误,则切换至“Table B”中进行数据读取,后续,“Table A”中的数据修复之后,再切换回“Table A”中进行数据读取。
通过上述描述的数据回滚过程可知,在现有技术中,由于线上存储数据表“TableA”与“Table B”的表名不相同,从而需要预先配置两套离线数据同步流程,以及两套线上数据读取策略,由此可见,现有技术的预配置过程十分繁琐。
为了解决上述问题,本说明书实施例提供一种数据回滚方法,在该方法中,在线上存储介质中配置一个采用Hbase表结构的线上存储数据表,例如,如图2所示,为本说明书实施例中分布式存储架构的示意图,图2所示例的线上存储数据表“Hbase Table”可支持存储至少两个版本的数据,从而,如图2所示,“20171214”与“20171213”这两个时间周期内所产生的数据可同时存储在同一线上存储数据表“Hbase Table”中。通过将不同时间周期内产生的数据存储在同一线上存储数据表中,可解决现有技术中需要预先配置两套离线数据同步流程,以及两套线上数据读取策略,导致预配置过程繁杂的问题,并且,还可以通过一个线上存储数据表为多个业务应用提供数据服务。
本领域技术人员可以理解的是,本说明书实施例中是基于Hbase的多版本特性将至少两个时间周期内产生的数据同时存储在同一线上存储数据表“Hbase Table”中的。
如下,示出下述实施例对本说明书提供的数据回滚方法进行说明。
请参见图3,为本说明书一示例性实施例提供的数据回滚方法的实施例流程图,该方法可以包括以下步骤:
步骤302:针对每一数据分区,将数据分区中的数据同步至线上存储数据表中,并根据数据分区对应的时间周期为同步的数据设置版本号,其中,版本号随着时间周期的推移而逐步递增。
在本说明书实施例中,可以每隔预设时间周期,即将最新的时间周期所对应的数据分区中的数据同步至线上存储数据表“Hbase Table”中,由上述描述可知,该“HbaseTable”可支持存储至少两个版本的数据,由此,在本说明书实施例中,可以根据数据分区对应的时间周期为所同步的数据设置一个版本号。
在一实施例中,版本号的初始值为1,且不同时间周期所对应的版本号随着时间周期的推移而逐步递增,例如,第一个时间周期所对应的版本号为version1,第二个时间周期所对应的版本号为version2,第三个时间周期所对应的版本号为version3。
举例来说,假设“Hbase Table”可支持存储两个版本的数据,并假设离线存储数据表如下述表1所示:
表1
在本说明书实施例中,将上述表1所示例的数据分区“Partition#1”中的数据同步至线上存储数据表“Hbase Table”中,此时的线上存储数据表“Hbase Table”可以如下述表2所示:
表2
后续,将上述表1所示例的数据分区“Partition#2”中的数据同步至线上存储数据表“Hbase Table”中,此时的线上存储数据表“Hbase Table”可以如下述表3所示:
表3
如上述表3所示,在线上存储数据表“Hbase Table”中,同一维度,即同一行同一列的数据可存储有两个版本。
再后续,将上述表1所示例的数据分区“Partition#3”中的数据同步至线上存储数据表“Hbase Table”中,由于上述已假设线上存储数据表“Hbase Table”可存储两个版本的数据,那么,若直接将数据分区“Partition#3”中的数据同步至线上存储数据表“HbaseTable”中,则该线上存储数据表“Partition#3”中将存储3个版本的数据,不符合上述假设,在该情形下,则可以将距离当前时间最久远的时间周期内的数据,例如数据分区“Partition#1”中的数据从上述表3中删除,删除之后,再将数据分区“Partition#3”中的数据写入,此时的线上存储数据表“Hbase Table”可以如下述表4所示:
表4
如上述表4所示,在线上存储数据表“Hbase Table”支持存储两个版本的数据时,该数据表中可同时存储最新时间周期内产生的数据,与该最新时间周期的前一个时间周期内产生的数据。
本领域技术人员可以理解的是,上述所描述的线上存储数据表中可支持存储两个版本的数据仅仅作为举例,在实际应用中,线上存储数据表中可支持存储两个以上版本的数据即可,本说明书实施例对此并不作限制。
此外,在本说明书实施例中,在线上存储数据表中可支持存储的版本数量多于两个,例如为三个时,当将新一个时间周期,例如第四个时间周期内产生的数据同步至线上存储数据表时,可以不限于在线上存储数据表中删除距离当前时间最久远的时间周期内,例如第一个时间周期内所产生的数据,还可以根据预先指定的删除策略,删除其他时间周期,例如第二个时间周期内所产生的数据。
在一实施例中,该删除策略可以为:根据版本优先级,优先删除优先级较低版本的数据,本领域技术人员可以理解的是,该版本优先级可以根据多种因素,例如回滚次数、数据容量等自动设置,例如,某版本数据的回滚次数越低,该版本数据的优先级将越高,本说明书实施例对具体的删除策略并不作限制。
步骤304:在从线上存储数据表中读取数据的过程中,判断线上存储数据表中具有最高版本号的数据是否错误,若是,则执行步骤306;否则,执行步骤308。
步骤306:读取具有出最高版本号以外的指定版本号的数据,结束流程。
步骤308:读取具有最高版本号的数据。
如下,对上述步骤304至步骤308进行说明:
在本说明书实施例中,业务系统可预先设置有监控线程,用于监控业务应用是否正常运行,若监控到业务应用运行异常,则可以向用户返回用于指示业务应用运行异常的提示消息,进一步,用户可以根据该提示消息,通过终端提供的配置界面进行线上数据的配置,例如,如图4所示,为本说明书一示例性实施例中配置界面的一种示例。
如图4(a)所示,默认情况下,具有最高版本号的数据处于勾选状态,也即,在默认情况下,业务系统将从线上存储数据表“Hbase Table”中读取具有最高版本号的数据,当用户接收到上述提示消息后,可以取消具有最高版本号的数据的勾选状态,并将具有除最高版本号以外的其他一个指定版本号的数据置于勾选状态,例如,如图4(b)所示,用户将具有“version2”,也即最高版本号的前一个版本号的数据置于勾选状态,若执行完上述操作后,用户点击“确定”按钮,可以表示用户确定执行当前操作,相应地,若用户点击“取消”按钮,那么,配置界面可以恢复至图4(a)所示。
在本说明书实施例中,当用户点击“确定”按钮后,终端相当于接收到用于指示线上存储数据表“Hbase Table”中具有最高版本号的数据错误的指示消息,为了描述方便,将该指示消息称为第一指示消息,此时,终端可以根据该第一指示消息,将用于指示线上存储数据表““Hbase Table”中具有最高版本号的数据错误的配置信息设置为生效状态。通过该种处理,当业务系统从线上存储数据表“Hbase Table”中读取数据时,则可以根据该配置信息处于生效状态,判断得出线上存储数据表“Hbase Table”中具有最高版本号的数据错误。
进一步,通过上述描述可知,用户在图4所示例的配置界面上重新勾选了具有“version2”这一版本号的数据,此时,终端可以根据用户的勾选情况构造一条数据读取指令,该数据读取指令携带指定版本号,即用户勾选的版本号,例如最高版本号的前一个版本号,后续业务系统在从线上存储数据表“Hbase Table”中读取数据时,则可以执行该数据读取指令,从线上存储数据表“Hbase Table”中读取具有该指定版本号的数据。如下所示,为该数据读取指令的一种示例:
hbase(main):016:0>get'Hbase Table','1',{COLUMN=>'v:c1',VERSIONS=2};
相应的,本领域技术人员可以理解的是,若判断得出线上存储数据表中具有最高版本号的数据正确,例如,判断得出上述配置信息处于失效状态,那么,业务系统则可以从线上存储数据表“Hbase Table”中读取具有最高版本号的数据。
此外,在本说明书实施例中,当用户接收到上述提示消息后,可以将具有最高版本号的数据从线上存储数据表“Hbase Table”中删除,并进一步对该具有最高版本号的数据进行恢复,例如进行数据清洗,并将恢复后的数据再同步至线上存储数据表“Hbase Table”中。后续,当用户确定正确数据已同步至线上存储数据表“Hbase Table”之后,用户还可以通过图4所示例的配置界面重新进行线上数据的配置,例如,用户可以点击图4所示例的配置界面中的“恢复默认配置”这一元素,在该类清洗下终端相当于接收到用于指示线上存储数据表中具有最高版本号的数据已恢复正确的指示消息,为了描述方便,将该指示消息称为第二指示消息,进一步,终端则可以根据该第二指示消息,将上述配置信息从生效状态切换为失效状态,相应的,图4所示例的配置界面将如图4(a)所示。
通过上述描述可知,若上述配置信息处于失效状态,则业务系统将根据该配置信息从线上存储数据表“Hbase Table”中再次读取具有最高版本号的数据。
本说明书实施例所提供的技术方案,通过在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表,且该离线存储数据表包括至少一个数据分区,每一数据分区存储一个时间周期内产生的数据,该线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据,针对每一数据分区,将数据分区中的数据同步至线上存储数据表中,并根据数据分区对应的时间周期为同步的数据设置版本号,其中,版本号随着时间周期的推移而逐步递增,后续,在从线上存储数据表中读取数据的过程中,判断线上存储数据表中具有最高版本号的数据是否错误,若是,则读取具有除最高版本号以外的指定版本号的数据,否则,则读取具有最高版本号的数据。通过该技术方案,由于将不同时间周期内产生的数据存储至同一线上存储数据表中,并以版本号进行时间周期的区分,从而可以实现配置一套数据读取策略,一套离线数据同步流程,即可实现数据回滚,预配置过程较为简便,同时,通过一个线上存储数据表可为多个业务应用提供数据服务,适用性较好。
相应于上述方法实施例,本说明书实施例还提供一种数据回滚装置,参见图5所示,为本说明书一示例性实施例提供的数据回滚装置的实施例框图,该装置可以包括:配置模块51、同步模块52、判断模块53、第一读取模块54,以及第二读取模块55。
其中,配置模块51,可以用于在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表;
所述离线存储数据表包括至少一个数据分区,每一所述数据分区存储一个时间周期内产生的数据;
所述线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据;
同步模块52,可以用于针对每一所述数据分区,将所述数据分区中的数据同步至所述线上存储数据表中,并根据所述数据分区对应的时间周期为所同步的数据设置版本号,其中,所述版本号随着所述时间周期的推移而逐步递增;
判断模块53,可以用于在从所述线上存储数据表中读取数据的过程中,判断所述线上存储数据表中具有最高版本号的数据是否错误;
第一读取模块54,可以用于若所述线上存储数据表中具有最高版本号的数据错误,则读取具有除所述最高版本号以外的指定版本号的数据;
第二读取模块55,可以用于若所述线上存储数据表中具有最高版本号的数据正确,则读取具有所述最高版本号的数据。
在一实施例中,所述指定版本号为所述最高版本号的前一个版本号。
在一实施例中,所述装置还可以包括(图5中未示出):
第一接收模块,用于接收用于指示所述线上存储数据表中具有最高版本号的数据错误的第一指示消息;
第一设置模块,用于根据所述第一指示消息,将用于指示所述线上存储数据表中具有最高版本号的数据错误的配置信息设置为生效状态;
所述判断模块具体用于:判断所述配置信息是否处于生效状态;
若是,则判断得出所述线上存储数据表中具有最高版本号的数据错误;否则,则判断得出所述线上存储数据表中具有最高版本号的数据正确。
在一实施例中,所述第一读取模块54可以包括(图5中未示出):
构造子模块,用于构造一条数据读取指令,所述数据读取指令中携带指定版本号;
读取子模块,用于根据所述数据读取指令,读取具有所述指定版本号的数据。
在一实施例中,所述装置还可以包括(图5中未示出):
第二接收模块,用于接收用于指示所述线上存储数据表中具有最高版本号的数据已恢复正确的第二指示消息;
第二设置模块,用于根据所述第二指示消息,将所述配置信息从所述生效状态切换为失效状态。
可以理解的是,配置模块51、同步模块52、判断模块53、第一读取模块54,以及第二读取模块55与作为五种功能独立的模块,既可以如图5所示同时配置在装置中,也可以分别单独配置在装置中,因此图5所示的结构不应理解为对本说明书实施例方案的限定。
此外,上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本说明书实施例还提供一种终端,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的数据回滚方法。该方法至少包括:在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表;所述离线存储数据表包括至少一个数据分区,每一所述数据分区存储一个时间周期内产生的数据;所述线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据;针对每一所述数据分区,将所述数据分区中的数据同步至所述线上存储数据表中,并根据所述数据分区对应的时间周期为所同步的数据设置版本号,其中,所述版本号随着所述时间周期的推移而逐步递增;在从所述线上存储数据表中读取数据的过程中,判断所述线上存储数据表中具有最高版本号的数据是否错误;若是,则读取具有除所述最高版本号以外的指定版本号的数据;否则,读取具有所述最高版本号的数据。
图6示出了本说明书实施例所提供的一种更为具体的终端硬件结构示意图,该设备可以包括:处理器610、存储器620、输入/输出接口630、通信接口640和总线650。其中处理器610、存储器620、输入/输出接口630和通信接口640通过总线650实现彼此之间在设备内部的通信连接。
处理器610可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器620可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器620可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器620中,并由处理器610来调用执行。
输入/输出接口630用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图6中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口640用于连接通信模块(图6中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线650包括一通路,在设备的各个组件(例如处理器610、存储器620、输入/输出接口630和通信接口640)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器610、存储器620、输入/输出接口630、通信接口640以及总线650,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的数据回滚方法。该方法至少包括:在离线存储介质中配置离线存储数据表,在线上存储介质中配置线上存储数据表;所述离线存储数据表包括至少一个数据分区,每一所述数据分区存储一个时间周期内产生的数据;所述线上存储数据表采用Hbase表结构,其支持存储至少两个版本的数据;针对每一所述数据分区,将所述数据分区中的数据同步至所述线上存储数据表中,并根据所述数据分区对应的时间周期为所同步的数据设置版本号,其中,所述版本号随着所述时间周期的推移而逐步递增;在从所述线上存储数据表中读取数据的过程中,判断所述线上存储数据表中具有最高版本号的数据是否错误;若是,则读取具有除所述最高版本号以外的指定版本号的数据;否则,读取具有所述最高版本号的数据。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。