数据核对方法及装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据核对方法及装置。
背景技术
目前,越来越多的业务的处理需要依赖业务系统来实现。一般的,在使用业务系统进行业务处理时,一般的,业务系统中的业务处理节点通过数据接口与客户端或者其他业务处理节点进行数据的传输,例如通过远程过程调用(Remote Procedure Calls,RPC)接口客户端传输数据等。通常情况下,业务处理节点中所出现的数据可以分为状态型数据和流水型数据,所谓状态型数据一般为一个字段对应一条数据值,但是数据值经常发生变化的数据,比如用户信息、用户账户等,流水行数据则是一个字段对应多条数据值,但是数据值基本上不发生变化,如用户行为数据等。
但是,在某些情况下,由于程序逻辑出现bug、或者数据变更频繁等原因,会导致数据接口所接收到的状态型数据与数据库中实际所存储的数据不一致的情况的发生,从而可能会引发一系列问题,如客户端无法正确处理数据,导致客户端崩溃、用户投诉或者通过数据接口将错误数据传递给其他业务节点所引发的;连锁反应等等。
因此,亟需提出一种技术方案,以实现对数据接口所接收到的数据与数据库中所存储的实际数据的核对,从而减少上述问题的发生。
发明内容
本说明书实施例的目的是提供一种数据核对方法及装置,在业务处理节点通过数据接口向客户端或者其他业务处理节点传输业务处理结果数据时,拦截并采集数据接口所接收到的业务处理节点传输的业务处理结果数据,并将该业务处理结果数据中的状态型数据与目标数据库中所存储的该状态型数据所对应的数据值进行比对,实现了对数据接口所接收到的状态型数据的核对,可以及时发现数据接口所接收到的问题数据,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供了一种数据核对方法,包括:
从数据接口拦截并采集业务处理节点通过所述数据接口发送的业务处理结果数据;其中,所述业务处理结果数据为所述业务处理节点对接收到的业务请求进行处理所得到的结果数据;
从目标数据库中查找所述业务处理结果数据中的状态型数据所对应的第一数据值;其中,所述目标数据库中存储有所述业务处理节点所对应的各状态型数据的数据值;
将所述第一数据值和所述状态型数据在所述业务处理结果数据中所对应的第二数据值进行比较,以核对所述数据接口接收到的所述状态型数据所对应的第二数据值和所述目标数据库中存储的所述状态型数据所对应的所述第一数据值是否一致。
本说明书实施例提供了一种数据核对装置,包括:
第一执行模块,用于从数据接口拦截并采集业务处理节点通过所述数据接口发送的业务处理结果数据;其中,所述业务处理结果数据为所述业务处理节点对接收到的业务请求进行处理所得到的结果数据;
查找模块,用于从目标数据库中查找所述业务处理结果数据中的状态型数据所对应的第一数据值;其中,所述目标数据库中存储有所述业务处理节点所对应的各状态型数据的数据值;
比较模块,用于将所述第一数据值和所述状态型数据在所述业务处理结果数据中所对应的第二数据值进行比较,以核对所述数据接口接收到的所述状态型数据所对应的第二数据值和所述目标数据库中存储的所述状态型数据所对应的所述第一数据值是否一致。
本说明书实施例还提供了一种数据核对设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
从数据接口拦截并采集业务处理节点通过所述数据接口发送的业务处理结果数据;其中,所述业务处理结果数据为所述业务处理节点对接收到的业务请求进行处理所得到的结果数据;
从目标数据库中查找所述业务处理结果数据中的状态型数据所对应的第一数据值;其中,所述目标数据库中存储有所述业务处理节点所对应的各状态型数据的数据值;
将所述第一数据值和所述状态型数据在所述业务处理结果数据中所对应的第二数据值进行比较,以核对所述数据接口接收到的所述状态型数据所对应的第二数据值和所述目标数据库中存储的所述状态型数据所对应的所述第一数据值是否一致。
本说明书实施例还提供了一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:
从数据接口拦截并采集业务处理节点通过所述数据接口发送的业务处理结果数据;其中,所述业务处理结果数据为所述业务处理节点对接收到的业务请求进行处理所得到的结果数据;
从目标数据库中查找所述业务处理结果数据中的状态型数据所对应的第一数据值;其中,所述目标数据库中存储有所述业务处理节点所对应的各状态型数据的数据值;
将所述第一数据值和所述状态型数据在所述业务处理结果数据中所对应的第二数据值进行比较,以核对所述数据接口接收到的所述状态型数据所对应的第二数据值和所述目标数据库中存储的所述状态型数据所对应的所述第一数据值是否一致。
本实施例中的技术方案,在业务处理节点通过数据接口向客户端或者其他业务处理节点传输业务处理结果数据时,拦截并采集数据接口所接收到的业务处理节点传输的业务处理结果数据,并将该业务处理结果数据中的状态型数据与目标数据库中所存储的该状态型数据所对应的数据值进行比对,实现了对数据接口所接收到的状态型数据的核对,可以及时发现数据接口所接收到的问题数据,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的数据核对方法的方法流程图之一;
图2为本说明书实施例提供的数据核对方法的方法流程图之二;
图3为本说明书实施例提供的数据核对方法的方法流程图之三;
图4为本说明书实施例提供的数据核对方法的方法流程图之四;
图5为本说明书实施例提供的数据核对方法的方法流程图之五;
图6为本说明书实施例提供的数据核对方法的方法流程图之六;
图7为本说明书实施例提供的数据核对方法的流程示意图;
图8为本说明书实施例提供的数据核对装置的模块组成示意图;
图9为本说明书实施例提供的数据核对设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本说明书实施例的思想在于,在数据接口拦截业业务处理节点向客户端或者其他业务处理节点所传输的数据,并基于目标数据库中所存储的状态型数据实现对拦截的数据中的状态型数据的核对,实现了对数据接口所接收到的状态型数据的核对,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。基于此思想,本说明书实施例提供了一种数据核对方法、装置、设备及存储介质。下述将一一详细进行介绍。
本说明书实施例提供的数据核对方法,应用于业务处理节点,该业务处理节点可以为业务处理服务器,也可以为业务处理服务器中的某个业务处理模块等等,即本说明书实施例所提供方法的执行主体为业务处理节点,具体的,该执行主体可以为安装在业务处理节点上的数据核对装置。
图1为本说明书实施例提供的数据核对方法的方法流程图之一,图1所示的方法至少包括如下步骤:
步骤102,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据;其中,该业务处理结果数据为业务处理节点对接收到的业务请求进行处理所得到的结果数据。
其中,在本说明书实施例中,上述业务处理节点可以为对任意业务进行处理的节点,例如,可以为支付节点、购物节点等等。
在具体实施时,可以由业务系统中的其他业务节点或者用户通过客户端向上述业务处理节点发送业务处理请求。当上述业务处理节点接收到业务处理请求后,则根据该业务处理请求进行业务处理,并得到业务处理结果,然后,通过设置于该业务处理节点上的数据接口将业务处理结果数据返回给客户端或者其他业务处理节点。
需要说明的是,一般的,业务处理节点通过数据接口与其他业务处理节点或者客户端之间进行数据传输。即上述业务处理节点在返回业务处理结果数据时,则是将业务处理结果数据发送给数据接口,客户端或者其他业务处理节点通过该数据接口获取业务处理结果数据。
其中,上述数据接口可以为RPC接口等。
在本说明书实施例中,在数据接口拦截了业务处理节点向客户端或者其他业务处理节点发送的业务处理数据后,可以通过数据采样的方式从数据接口采集上述业务处理结果数据。例如,可以采用随机采样、脉冲周期采样、白名单采样、百分比采样等任意一种采样方式从数据接口采集业务处理结果数据。
在本说明书实施例中,为了防止出现发送给数据接口的数据与数据库中实际存储的数据不一致的情况的发生,则在数据接口将业务处理结果数据传输给客户端或者其他业务处理节点之前,从数据接口拦截业务处理节点所发送的业务处理结果数据。
步骤104,从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值;其中,上述目标数据库中存储有上述业务处理节点所对应的各状态型数据的数据值。
一般的,业务数据可以分为状态型数据和流水型数据,因此,上述业务处理结果数据中也可能会包括状态型数据和流水型数据两种数据类型,所谓状态型数据一般指的是一个字段对应一条数据值,并且数据值是经常发生变化的数据,如用户信息、用户账户余额等,流水型数据则是一个字段对应多条数据值,并且数据值基本上不发生变化的数据,如用户行为数据等。
本说明书实施例中,则是对业务处理结果数据中的状态型数据进行核对。需要说明的是,上述目标数据库则是用于存储上述业务处理节点中所出现的状态型数据的数据库,在该目标数据库中存储有各个状态型数据的数据字段及其对应的数据值。并且,每次该状态型数据发生变更时,都需要依据业务数据库中所存储的变更信息,将该状态型数据所对应的数据值的变更时刻及变更后的数据值对应的存储至上述目标数据库中,从而便于进行状态型数据的核对。
当从数据接口拦截到业务处理结果数据后,提取业务处理结果数据中的各个业务指标字段,然后根据上述各个业务指标字段以及业务请求中携带的标识信息、接收到业务请求的时刻从目标数据库中查找是否存在该业务指标字段所对应数据值,若存在,则认为该业务指标字段为状态型数据,即从目标数据库中查找该状态型数据所对应的第一数据值。
其中,上述目标数据库可以为Hbase开源数据库。
步骤106,将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较,以核对数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值是否一致。
在具体实施时,当从目标数据库中查找到业务处理结果中的状态型数据所对应的第一数据值后,将该状态型数据在业务处理结果数据中所对应的第二数据值与从目标数据库中查询到的第一数据值进行比较,若是第一数据值和第二数据值一致,则认为数据接口接收到的状态型数据所对应的数据值与目标数据库中存储的数据值是一致的,这时,可以指示数据接口将该业务处理结果数据传输给客户端或者其他业务处理节点。
当然,若是在对第一数据值和第二数据值进行比较的比较结果指示第一数据值和第二数据值不一致,则认为接口数据接收到的状态型数据所对应的数据值和目标数据库中存储的状态型数据的数据值不一致,在该种情况下,在将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之后,本说明书实施例提供的方法还包括如下步骤:
发出警报信息;其中,上述警报信息用于提示数据接口接收到的状态型数据所对应的第二数据值与目标数据库中存储的状态型数据所对应的第一数据值不一致;
或者,执行对数据接口接收到的状态型数据所对应的第二数据值进行修正的操作。
在具体实施时,上述警报信息可以是提示业务处理节点的相关工作人员,以便业务处理节点的相关工作人员可以及时对数据接口接收到的该状态型数据进行处理或者排查出现当前情况的原因;当然,在某些具体实施方式中,当确定出数据接口接收到的状态型数据所对应的数据值与数据库中存储的该状态型数据所对应的数据值不一致时,还可以直接依据目标数据库中所存储的第一数据值对业务处理结果中的第二数据值进行修正,并在修正后,指示数据接口将业务处理结果数据发送给客户端或者其他业务处理节点。
图2为本说明书实施例提供的数据核对方法的方法流程图之二,图2所示的方法,至少包括如下步骤:
步骤202,拦截并采集业务处理节点通过数据接口发送的业务处理结果数据。
步骤204,从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值。
步骤206,检测上述第一数据值与上述状态型数据在业务处理结果数据中所对应的第二数据值是否一致;若一致,则执行步骤208;否则,执行步骤210。
步骤208,确定数据接口接收到的状态型数据所对应的第二数据值与该状态型数据在目标数据库中所对应的第一数据值一致,并指示数据接口将上述业务处理结果数据发送给业务请求方。
步骤210,确定数据接口接收到的状态型数据所对应的第二数据值与该状态型数据在目标数据库中所对应的第一数据值不一致,执行修正第二数据值的操作,并指示数据接口将修正后的业务处理结果数据发送给业务请求方。
本说明书实施例提供的数据核对方法,实现了对数据接口所接收到的高频变化的状态型数据的核对,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
另外,为了保证上述业务处理数据的安全性,减少由于数据核对导致业务处理结果数据丢失或者损坏等情况的发生,保证在进行数据核对之后,还可以将业务处理数据完整准确的通过数据接口传输给客户端或者其他业务处理节点。在本说明书实施例中,在拦截到业务处理节点通过数据接口发送的业务处理结果数据之后,该方法还包括如下步骤:
将上述业务处理结果数据写入业务系统所对应的磁盘中;
相应的,在执行将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较的步骤之前,本说明书实施例提供的方法还包括如下步骤:
从上述磁盘中存储的业务处理结果数据中获取该状态型数据所对应的第二数据值。
一般的,可以为一个业务系统设置一个磁盘,这样,该业务系统中的各个业务处理节点都可以将从数据接口采集到的业务处理节点数据写入该业务系统所对应的磁盘中;或者,还可以为一个业务处理节点对应设置有一个磁盘,将从数据接口采集到的该业务处理节点数据写入其对应的磁盘中。在本说明书实施例中,将拦截并采集到的业务处理数据写入磁盘中进行存储,这样可以保证该业务处理数据的安全性,避免了由于数据核对导致业务处理结果数据丢失或者损坏等情况的发生,保证在进行数据核对之后,还可以将业务处理数据完整准确的通过数据接口传输给客户端或者其他业务处理节点。
相应的,在该种情况下,由于从数据接口拦截到的业务处理结果数据存储在磁盘中,在进行接口数据和数据库数据之间的核对操作之前,需要从磁盘中读取该业务处理结果数据中的状态型数据所对应的第二数据值。
图3为本说明书实施例提供的数据核对方法的方法流程图之三,图3所示的方法至少包括如下步骤:
步骤302,拦截并采集业务处理节点通过数据接口发送的业务处理结果数据。
步骤304,将上述业务处理结果数据写入业务处理节点所对应的磁盘中。
步骤306,从目标数据库中查找业务处理结果中的状态型数据所对应的第一数据值。
步骤308,从磁盘中存储的业务处理结果数据中提取上述状态型数据所对应的第二数据值。
步骤310,将第一数据值和第二数据值进行比较,以核对数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的该状态型数据所对应的第一数据值是否一致。
本说明书实施例提供的方法,为了防止在对数据接口接收到的业务处理结果数据进行拦截之后,由于出现某些错误导致在进行数据核对后无法将完整的业务处理结果数据传输给业务请求方,因此,在拦截到业务处理结果数据后,将该业务处理结果数据写入磁盘中对业务处理结果数据进行存储,这样,可以避免上述情况的发生,从而保证了在任何情况下都不会导致发送给业务请求方的业务处理结果数据的丢失。
另外,在本说明书实施例中,由于磁盘空间有限,而业务处理节点所处理的业务量较大,因此,可能会出现有较多的业务处理结果数据写入该业务处理节点所对应的磁盘中。如果为每个业务处理节点设置多个磁盘或者增大磁盘的空间,会导致成本较高,因此,在本说明书实施例中,为了节省磁盘空间,降低成本,上述步骤中将业务处理结果数据写入业务处理节点所对应的磁盘中,具体包括:
对业务处理结果数据进行序列化处理,得到该业务处理结果数据所对应的序列化数据;将该序列化数据写入磁盘中。
其中,在本说明书实施例中,可以通过json序列化、hessian序列化、pb序列化等序列化算法对上述业务处理结果数据进行序列化处理。
需要说明的是,在本说明书实施例中,对上述业务处理结果数据进行序列化处理,实际上是对上述业务处理结果数据进行压缩处理的过程,这样,可以减小业务处理结果数据的大小,从而使得存储在磁盘中的业务处理结果数据占据较小的磁盘存储空间,节省了磁盘存储空间,降低了成本。
在该种情况下,由于写入磁盘中的业务处理结果为序列化数据,这样,在从磁盘中所存储的序列化数据中获取状态型数据所对应的第二数据值之前,还需要对序列化的业务处理结果数据进行反序列化处理,得到原来的业务处理结果数据,并从所得到的业务处理结果数据中提取状态型数据所对应的第二数据值。
图4为本说明书实施例提供的数据核对方法的方法流程图之四,图4所示的方法至少包括如下步骤:
步骤402,拦截并采集业务处理节点通过数据接口发送的业务处理结果数据。
步骤404,对上述业务处理结果数据进行序列化处理,得到业务处理结果数据所对应的序列化数据。
步骤406,将上述序列化数据写入业务处理节点所对应的磁盘中。
步骤408,从目标数据库中查找业务处理结果中的状态型数据所对应的第一数据值。
步骤410,从磁盘中读取上述序列化数据,并对所读取的序列化数据进行反序列化处理,得到原来的业务处理结果数据。
步骤412,从得到的业务处理结果数据中提取上述状态型数据所对应的第二数据值。
步骤414,将第一数据值和第二数据值进行比较,以核对数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的该状态型数据所对应的第一数据值是否一致。
另外,在实际的业务处理过程中,由于业务处理节点需要处理的业务量很大,如果在接收到每个业务请求后,都对通过数据接口返回的业务处理结果数据中的状态型数据进行核对,会导致业务处理节点的工作量较大,资源消耗较多。因此,在本说明书实施例中,可以预先设置一批需要进行数据核对的样本用户,这样,只需要在接收到样本用户发送的业务处理请求后,在将业务处理结果数据返回给样本用户时,对数据接口接收到的业务处理结果数据中的状态型数据进行核对即可,从而可以减少数据核对的工作量,降低资源消耗。
因此,在本说明书实施例中,在执行拦截业务处理节点通过数据接口发送的业务处理结果数据之前,本说明书实施例提供的方法还包括:
判断请求上述业务的用户是否属于预先指定的需要进行数据核对的样本用户。
若是判断结果指示请求业务的用户属于上述样本用户中的用户,则执行本说明书实施例提供的方法,否则,则直接通过数据接口将业务处理结果数据返回给用户即可。
图5为本说明书实施例提供的数据核对方法的方法流程图之五,图5所示的方法至少包括如下步骤:
步骤502,检测进行业务请求的用户是否属于预先指定的需要进行数据核对的样本用户;若是,则执行步骤504,否则,执行步骤510。
步骤504,拦截并采集业务处理节点通过数据接口发送的业务处理结果数据。
步骤506,从目标数据库中查找该业务处理结果数据中的状态型数据所对应的第一数据值。
步骤508,比较第一数据值和该状态型数据在业务处理结果数据中所对应的第二数据值是否一致;若一致,则执行步骤510;否则执行步骤512。
步骤510,通过数据接口将该业务处理结果数据发送给用户。
步骤512,发出警报信息或者对业务处理结果数据中该状态型数据所对应的第二数据值进行修正。
在一种具体实施方式中,上述步骤104中,从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值,具体可以通过如下步骤实现:
从目标数据库中查找与业务请求中所携带的标识信息相对应的状态型数据的数据值;其中,上述标识信息包括用户的标识和/或业务的标识;将查找到的数据值中与接收到的业务请求的请求时刻对应的数据值或者在该请求时刻之前且距离该请求时刻最近的变更时刻所对应的数据值确定为第一数据值。
一般的,在目标数据库中,各状态型数据则以字段名称、数据值、数据值所对应的变更时刻以及标识信息一一对应的形式进行存储。这样,在从目标数据库中查找上述状态型数据所对应的第一数据值时,首先可以依据上述标识信息查找该标识信息所对应的状态型数据的数据值,然后,再依据接收到业务处理请求的请求时刻从所查找到的数据值中查找符合时间要求的数据值,从而将查找到的数据值作为状态型数据所对应的第一数据值。其中,上述标识信息可以为业务标识信息,也可以为请求业务的用户的标识信息,或者可以同时包括用户标识信息和业务标识信息。
为便于理解上述查找状态型数据所对应的第一数据值的过程,下述将举例进行说明。
例如,在一种具体实施方式中,目标数据库中所存储的状态型数据如表1所示。
表1
字段名称 |
数据值 |
标识信息 |
发生时刻 |
用户名 |
张三 |
业务2 |
2017.11.13,15:03 |
用户名 |
张三 |
业务1 |
2018.11.21,13:01 |
用户名 |
李四 |
业务1 |
2018.11.21,13:02 |
用户名 |
王五 |
业务3 |
2019.1.2,08:20 |
若是业务处理节点在2018年11月21日13点06分接收到业务1的业务处理请求,即该业务的请求时刻为2018年11月21日13点06分,在目标数据库中查找该业务请求所对应的业务处理结果中的状态型数据所对应第一数据值时,首先根据业务标识(业务1)查找业务1所对应的字段名称,即“用户名”,可以确定出业务处理结果数据中的“用户名”属于状态型数据,查找到的“用户名”所对应的数据值为“张三”和“李四”,在2018年11月21日13点01分业务1所对应的“用户名”的数据值变更为“张三”,在2018年11月21日13点02分业务1所对应的“用户名”的数据值变更为“李四”,距离业务请求的请求时刻2018年11月21日13点06最近的变更时刻为“李四”所对应的变更时刻,即将“李四”确定为业务1中的状态型数据“用户名”所对应的数据值。
这样,可以确定业务处理结果数据中的“用户名”则为状态型数据,从而提取业务处理结果数据中的“用户名”所对应的数据值,并与目标数据库中“用户名”所对应的数据值进行比对。
另外,在本说明书实施例中,在业务处理结果中以及目标数据库中,状态型数据所对应的字段名称可能会存在差别,例如,针对“用户名”这一状态型数据,在业务处理结果数据中,可能会记为“用户姓名”,在目标数据库中可能会记为“用户名”,即在业务处理结果数据中和目标数据库中各个状态型数据所对应的字段名称存在差别,在进行数据核对时,可能无法识别出“用户姓名”和“用户名”属于同一字段名称,从而导致无法进行数据核对,因此,在本说明书实施例中,需要构建比对上下文,即将字段名称进行标准化
因此,在本说明书实施例中,在将第一数据值和该状态型数据在业务处理结果数据中所对应的第二数据值进行比较之前,本说明书实施例提供的方法还包括如下步骤:
将状态型数据在业务处理结果数据中所对应的第二字段名称,以及,状态型数据在目标数据库中所对应的第一字段名称转化为指定字段名称;建立上述指定字段名称、第一数据值和第二数据值之间的映射关系。
这样,在进行第一数据值和第二数据值之间的比对时,可以直接读取同一指定字段名称所对应的两个数据值进行比对即可。
在前面已经介绍过,所谓状态型数据则是数据值经常发生变化的数据,因此,对于业务处理节点而言,可能会经常接收到用户发送的数据值变更请求,在每次执行完状态型数据的数据值变更请求处理后,将该数据值的变更时刻,变更前的数据值,以及变更后的数据值存储至目标数据库中。
因此,在具体实施时,在拦截业务处理节点通过数据接口发送的业务处理结果数据之前,本说明书实施例提供的方法还包括:
当状态型数据所对应的数据值发生变更时,从业务处理节点所对应的业务数据库读取数据变更信息;根据上述数据变更信息确定变更前该状态型数据所对应的数据值、变更后该状态型数据所对应的数据值以及变更时刻;分别将状态型数据在变更前的数据值及其所对应的失效时刻、状态型数据在变更后的数据值及其所对应的生效时刻对应的写入目标数据库;其中,上述失效时刻为变更时刻的前一时刻,生效时刻为变更时刻。
例如,在一种具体实施方式中,在21时19分将某业务的用户名由“张三”变更为“李四”,则在目标数据库中进行状态型数据的存储时,从业务数据库中读取上述变更信息,依据变更信息则为在21时19分将某业务的用户名由“张三”变更为“李四”,即用户名所对应的变更时刻为21时19分,若是以秒作为最小单位时间,则根据该变更信息,可以确定出在21时18分59秒时,该用户名为“张三”,在21时19分时,该用户名为“李四”。当然,此处只是示例性说明,并不构成对本说明书实施例的限定。
图6为本说明书实施例提供的数据核对方法的方法流程图之六,图6所示的方法至少包括如下步骤:
步骤602,在业务处理节点的进行状态型数据的数据值变更处理后,在目标数据库中写入变更前的数据值及其对应的实效时刻,变更后的数据值及其对应的生效时刻。
步骤604,在接收到用户发送的业务处理请求后,将该业务处理结果通过数据接口发送给用户时,判断该用户是否属于预先指定的需要进行数据核对的样本用户;若是,则执行步骤606;否则,执行步骤620;
步骤606,从该数据接口拦截并采集该业务处理请求结果数据。
步骤608,对该业务处理结果数据进行序列化处理,得到该业务处理结果数据所对应的序列化数据。
步骤610,将该序列化数据写入该业务处理节点所对应的磁盘中。
步骤612,根据上述业务请求中所携带的标识信息以及请求所对应的请求时刻,从目标数据库中查找该业务处理结果数据中的状态型数据所对应的第一数据值。
步骤614,从磁盘中读取上述序列化数据,并对所读取的序列化数据进行反序列化处理,得到原来的业务处理结果数据。
步骤616,从得到的业务处理结果数据中提取上述状态型数据所对应的第二数据值。
步骤618,比较第一数据值和该状态型数据在业务处理结果数据中所对应的第二数据值是否一致;若一致,则执行步骤620;否则执行步骤622。
步骤620,通过数据接口将该业务处理结果数据发送给用户。
步骤622,发出警报信息或者对业务处理结果数据中该状态型数据所对应的第二数据值进行修正。
在一种具体实施方式中,可以在业务处理节点集成软件开发工具包(SoftwareDevelopment Kit,SDK)组件,由SDK组件从数据接口拦截并采集业务处理结果数据,将采集的业务处理结果数据进行序列化处理,得到序列化数据,并将序列化数据存储该业务处理节点所对应的磁盘中,如图7所示,在图7所示的流程示意图中,画出了多个业务处理节点,其中,一个业务处理节点对应一个磁盘,以及,一个业务处理节点对应一个业务数据库和Hbase数据库;另外的,当业务处理节点执行了状态型数据的数据值变更业务处理后,将业务数据写入该业务处理节点所对应的业务数据库中,然后由状态型数据版本华组件从业务数据库中读取该业务数据,并对业务数据进行转化处理(即确定变更前的数据值及其对应的失效时刻,变更后的数据值及其对应的生效时刻的过程),并将处理结果写入该业务处理节点所对应的Hbase数据库中即可。
在接收到用户的业务处理请求时,对该业务处理请求进行处理,得到业务处理结果数据,并通过数据接口将该业务处理结果数据返回给业务请求方,在数据接口将数据传输给业务请求方之前,SDK组件拦截并采集业务处理结果数据,将采集的业务处理结果数据进行序列化处理,得到序列化数据,并将序列化数据存储该业务处理节点所对应的磁盘中,并从该业务处理节点所对应的Hbase数据库中查找该业务处理结果数据中的状态型数据所对应的第一数据值,并在磁盘中所存储的业务处理结果数据中确定该状态型数据所对应的第一数据值,通过比对脚本引擎对第一数据值和第二数据值进行比对,并通过结果处理组件根据比对结果进行相应的处理。
本说明书实施例提供的数据核对方法,在业务处理节点通过数据接口向客户端或者其他业务处理节点传输业务处理结果数据时,拦截并采集数据接口所接收到的业务处理节点传输的业务处理结果数据,并将该业务处理结果数据中的状态型数据与目标数据库中所存储的该状态型数据所对应的数据值进行比对,实现了对数据接口所接收到的状态型数据的核对,可以及时发现数据接口所接收到的问题数据,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
对应于本说明书实施例提供的数据核对方法,基于相同的思路,本说明书实施例提供了一种数据核对装置,用于执行本说明书实施例提供的数据核对方法,图8为本说明书实施例提供的数据核对装置的模块组成示意图,图8所示的装置,包括:
第一执行模块802,用于从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据;其中,业务处理结果数据为业务处理节点对接收到的业务请求进行处理所得到的结果数据;
查找模块804,用于从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值;其中,目标数据库中存储有业务处理节点所对应的各状态型数据的数据值;
比较模块806,用于将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较,以核对数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值是否一致。
可选的,本说明书实施例提供的装置,还包括:
写入模块,用于将业务处理结果数据写入业务处理节点所对应的磁盘中;
获取模块,用于从磁盘中存储的业务处理结果数据中获取状态型数据所对应的第二数据值。
可选的,上述写入模块,包括:
序列化处理单元,用于对业务处理结果数据进行序列化处理,得到业务处理结果数据所对应的序列化数据;
写入单元,用于将序列化数据写入磁盘中。
可选的,本说明书实施例提供的装置,还包括:
判断模块,用于判断请求业务的用户是否属于预先指定的需要进行数据核对的样本用户。
可选的,本说明书实施例提供的装置,还包括:
转化模块,用于将状态型数据在业务处理结果数据中所对应的第二字段名称,以及,状态型数据在目标数据库中所对应的第一字段名称转化为指定字段名称;
建立模块,用于建立指定字段名称、第一数据值和第二数据值之间的映射关系。
可选的,上述查找模块804,包括:
第一查找单元,用于从目标数据库中查找与业务请求中所携带的标识信息相对应的状态型数据的数据值;其中,标识信息包括用户的标识和/或业务的标识;
第二查找单元,用于将查找到的数据值中与接收到业务请求的请求时刻对应的数据值或者在请求时刻之前且距离请求时刻最近的变更时刻所对应的数据值确定为第一数据值。
可选的,若比较结果指示第一数据值和第二数据值不一致;
本说明书实施例提供的装置还包括:
警报模块,用于发出警报信息;其中,警报信息用于提示数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值不一致;
或者,第二执行模块,用于执行对数据接口接收到的状态型数据所对应的第二数据值进行修正的操作。
可选的,本说明书实施例提供的装置,还包括:
读取模块,用于当状态型数据所对应的数据值发生变更时,从业务处理节点所对应的业务数据库读取数据变更信息;
确定模块,用于根据数据变更信息确定变更前状态型数据所对应的数据值、变更后状态型数据所对应的数据值以及变更时刻;
存储模块,用于分别将状态型数据在变更前的数据值及其对应的失效时刻、状态型数据在变更后的数据值及其所对应的生效时刻对应的写入目标数据库;其中,失效时刻为变更时刻的前一时刻,生效时刻为变更时刻。
本说明书实施例的数据核对装置还可执行图1-图7中数据核对装置执行的方法,并实现数据核对装置在图1-图7所示实施例的功能,在此不再赘述。
本说明书实施例提供的数据核对装置,在业务处理节点通过数据接口向客户端或者其他业务处理节点传输业务处理结果数据时,拦截并采集数据接口所接收到的业务处理节点传输的业务处理结果数据,并将该业务处理结果数据中的状态型数据与目标数据库中所存储的该状态型数据所对应的数据值进行比对,实现了对数据接口所接收到的状态型数据的核对,可以及时发现数据接口所接收到的问题数据,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
进一步地,基于上述图1至图7所示的方法,本说明书实施例还提供了一种数据核对设备,如图9所示。
数据核对设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器901和存储器902,存储器902中可以存储有一个或一个以上存储应用程序或数据。其中,存储器902可以是短暂存储或持久存储。存储在存储器902的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对数据核对设备中的一系列计算机可执行指令信息。更进一步地,处理器901可以设置为与存储器902通信,在数据核对设备上执行存储器902中的一系列计算机可执行指令信息。数据核对设备还可以包括一个或一个以上电源903,一个或一个以上有线或无线网络接口904,一个或一个以上输入输出接口905,一个或一个以上键盘906等。
在一个具体的实施例中,数据核对设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对数据核对设备中的一系列计算机可执行指令信息,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令信息:
从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据;其中,业务处理结果数据为业务处理节点对接收到的业务请求进行处理所得到的结果数据;
从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值;其中,目标数据库中存储有业务处理节点所对应的各状态型数据的数据值;
将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较,以核对数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值是否一致。
可选的,计算机可执行指令信息在被执行时,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据之后,还可以执行如下步骤:
将业务处理结果数据写入业务处理节点所对应的磁盘中;
相应的,将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之前,方法还包括:
从磁盘中存储的业务处理结果数据中获取状态型数据所对应的第二数据值。
可选的,计算机可执行指令信息在被执行时,将业务处理结果数据写入业务处理节点所对应的磁盘中,包括:
对业务处理结果数据进行序列化处理,得到业务处理结果数据所对应的序列化数据;
将序列化数据写入磁盘中。
可选的,计算机可执行指令信息在被执行时,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据之前,还可以执行如下步骤:
判断请求业务的用户是否属于预先指定的需要进行数据核对的样本用户。
可选的,计算机可执行指令信息在被执行时,将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之前,还可以执行如下步骤:
将状态型数据在业务处理结果数据中所对应的第二字段名称,以及,状态型数据在目标数据库中所对应的第一字段名称转化为指定字段名称;
建立指定字段名称、第一数据值和第二数据值之间的映射关系。
可选的,计算机可执行指令信息在被执行时,从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值,包括:
从目标数据库中查找与业务请求中所携带的标识信息相对应的状态型数据的数据值;其中,标识信息包括用户的标识和/或业务的标识;
将查找到的数据值中与接收到业务请求的请求时刻对应的数据值或者在请求时刻之前且距离请求时刻最近的变更时刻所对应的数据值确定为第一数据值。
可选的,计算机可执行指令信息在被执行时,若比较结果指示第一数据值和第二数据值不一致;
将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之后,还可以执行如下步骤:
发出警报信息;其中,警报信息用于提示数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值不一致;
或者,执行对数据接口接收到的状态型数据所对应的第二数据值进行修正的操作。
可选的,计算机可执行指令信息在被执行时,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据之前,还可执行如下步骤:
当状态型数据所对应的数据值发生变更时,从业务处理节点所对应的业务数据库读取数据变更信息;
根据数据变更信息确定变更前状态型数据所对应的数据值、变更后状态型数据所对应的数据值以及变更时刻;
分别将状态型数据在变更前的数据值及其对应的失效时刻、状态型数据在变更后的数据值及其所对应的生效时刻对应的写入目标数据库;其中,失效时刻为变更时刻的前一时刻,生效时刻为变更时刻。
本说明书实施例提供的数据核对设备,在业务处理节点通过数据接口向客户端或者其他业务处理节点传输业务处理结果数据时,拦截并采集数据接口所接收到的业务处理节点传输的业务处理结果数据,并将该业务处理结果数据中的状态型数据与目标数据库中所存储的该状态型数据所对应的数据值进行比对,实现了对数据接口所接收到的状态型数据的核对,可以及时发现数据接口所接收到的问题数据,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
进一步地,基于上述图1至图7所示的方法,本说明书实施例还提供了一种存储介质,用于存储计算机可执行指令信息,一种具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令信息在被处理器执行时,能实现以下流程:
从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据;其中,业务处理结果数据为业务处理节点对接收到的业务请求进行处理所得到的结果数据;
从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值;其中,目标数据库中存储有业务处理节点所对应的各状态型数据的数据值;
将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较,以核对数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值是否一致。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据之后,还可以执行如下步骤:
将业务处理结果数据写入业务处理节点所对应的磁盘中;
相应的,将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之前,方法还包括:
从磁盘中存储的业务处理结果数据中获取状态型数据所对应的第二数据值。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,将业务处理结果数据写入业务处理节点所对应的磁盘中,包括:
对业务处理结果数据进行序列化处理,得到业务处理结果数据所对应的序列化数据;
将序列化数据写入磁盘中。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据之前,还可以执行如下步骤:
判断请求业务的用户是否属于预先指定的需要进行数据核对的样本用户。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之前,还可以执行如下步骤:
将状态型数据在业务处理结果数据中所对应的第二字段名称,以及,状态型数据在目标数据库中所对应的第一字段名称转化为指定字段名称;
建立指定字段名称、第一数据值和第二数据值之间的映射关系。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,从目标数据库中查找业务处理结果数据中的状态型数据所对应的第一数据值,包括:
从目标数据库中查找与业务请求中所携带的标识信息相对应的状态型数据的数据值;其中,标识信息包括用户的标识和/或业务的标识;
将查找到的数据值中与接收到业务请求的请求时刻对应的数据值或者在请求时刻之前且距离请求时刻最近的变更时刻所对应的数据值确定为第一数据值。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,若比较结果指示第一数据值和第二数据值不一致;
将第一数据值和状态型数据在业务处理结果数据中所对应的第二数据值进行比较之后,还可以执行如下步骤:
发出警报信息;其中,警报信息用于提示数据接口接收到的状态型数据所对应的第二数据值和目标数据库中存储的状态型数据所对应的第一数据值不一致;
或者,执行对数据接口接收到的状态型数据所对应的第二数据值进行修正的操作。
可选的,该存储介质存储的计算机可执行指令信息在被处理器执行时,从数据接口拦截并采集业务处理节点通过数据接口发送的业务处理结果数据之前,还可执行如下步骤:
当状态型数据所对应的数据值发生变更时,从业务处理节点所对应的业务数据库读取数据变更信息;
根据数据变更信息确定变更前状态型数据所对应的数据值、变更后状态型数据所对应的数据值以及变更时刻;
分别将状态型数据在变更前的数据值及其对应的失效时刻、状态型数据在变更后的数据值及其所对应的生效时刻对应的写入目标数据库;其中,失效时刻为变更时刻的前一时刻,生效时刻为变更时刻。
本说明书实施例提供的存储介质存储的计算机可执行指令信息在被处理器执行时,在业务处理节点通过数据接口向客户端或者其他业务处理节点传输业务处理结果数据时,拦截并采集数据接口所接收到的业务处理节点传输的业务处理结果数据,并将该业务处理结果数据中的状态型数据与目标数据库中所存储的该状态型数据所对应的数据值进行比对,实现了对数据接口所接收到的状态型数据的核对,可以及时发现数据接口所接收到的问题数据,从而可以避免由于数据接口所接收到的数据与数据库中所存储的实际数据不一致的情况的发生,保证了传输给客户端或者其他业务处理节点的状态型数据的准确性。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令信息实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令信息到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令信息产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令信息也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令信息产生包括指令信息装置的制造品,该指令信息装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令信息也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令信息提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令信息、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令信息的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。