发明内容
本说明书实施例的目的是提供一种数据的对账方法、装置、设备及***,以提供一种能够使得数据库的稳定性更好,并且能够突破数据库容量瓶颈的技术方案。
为了实现上述技术方案,本说明书实施例是这样实现的:
本说明书实施例提供的一种数据的对账方法,所述方法包括:
根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息;
基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账任务分发给分布式对账***,以使所述分布式对账***执行所述对账任务,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
可选地,所述基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,包括:
当达到预定任务捞取周期时,根据所述业务标识,分别从所述第一分组信息和所述第二分组信息中捞取至少一个所述第一分组信息和至少一个所述第二分组信息;
基于捞取的所述第一分组信息和捞取的所述第二分组信息,生成所述对账任务。
可选地,所述将所述对账任务分发给分布式对账***,包括:
将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
可选地,所述预定对账方式为Spark对账方式。
可选地,所述将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***,包括:
基于预定的任务调度频率,将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
本说明书实施例提供的一种数据的对账方法,所述方法包括:
接收任务分发服务器发送的对账任务,所述对账任务是所述任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于所述不同业务标识对应的第一分组信息和第二分组信息生成的任务;
执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账处理的结果进行回写处理。
可选地,所述执行所述对账任务,包括:
从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据;
在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
可选地,所述在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理,包括:
通过MapReduce的方式,在内存中将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
可选地,所述从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据,包括:
通过Binlog方式、Redolog方式或Jdbc方式,从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据。
本说明书实施例提供的一种数据的对账装置,所述装置包括:
分组模块,用于根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息;
任务生成模块,用于基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
任务分发模块,用于将所述对账任务分发给分布式对账***,以使所述分布式对账***执行所述对账任务,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
可选地,所述任务生成模块,包括:
任务捞取单元,用于当达到预定任务捞取周期时,根据所述业务标识,分别从所述第一分组信息和所述第二分组信息中捞取至少一个所述第一分组信息和至少一个所述第二分组信息;
任务生成单元,用于基于捞取的所述第一分组信息和捞取的所述第二分组信息,生成所述对账任务。
可选地,所述任务分发模块,用于将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
可选地,所述预定对账方式为Spark对账方式。
可选地,所述任务分发模块,用于基于预定的任务调度频率,将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
本说明书实施例提供的一种数据的对账装置,所述装置包括:
任务接收模块,用于接收任务分发服务器发送的对账任务,所述对账任务是所述任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于所述不同业务标识对应的第一分组信息和第二分组信息生成的任务;
任务执行模块,用于执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
回写模块,用于将所述对账处理的结果进行回写处理。
可选地,所述任务执行模块,包括:
数据读取单元,用于从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据;
任务执行单元,用于在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
可选地,所述任务执行单元,用于通过MapReduce的方式,在内存中将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
可选地,所述数据读取单元,用于通过Binlog方式、Redolog方式或Jdbc方式,从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据。
本说明书实施例提供的一种数据的对账设备,所述目标数据的对账设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息;
基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账任务分发给分布式对账***,以使所述分布式对账***执行所述对账任务,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例提供的一种数据的对账设备,所述目标数据的对账设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
接收任务分发服务器发送的对账任务,所述对账任务是所述任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于所述不同业务标识对应的第一分组信息和第二分组信息生成的任务;
执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账处理的结果进行回写处理。接收任务分发服务器发送的对账任务,所述对账任务是所述任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于所述不同业务标识对应的第一分组信息和第二分组信息生成的任务;
执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账处理的结果进行回写处理。
本说明书实施例提供的一种数据的对账***,所述***包括任务分发服务器和分布式对账***,所述分布式对账***包括多个服务器,其中:
所述任务分发服务器,用于根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理,将所述对账任务分发给所述分布式对账***;
所述分布式对账***中的服务器,用于在接收到所述任务分发服务器发送的对账任务后,执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理,将所述对账处理的结果进行回写处理。
由以上本说明书实施例提供的技术方案可见,本说明书实施例通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
具体实施方式
本说明书实施例提供一种数据的对账方法、装置、设备及***。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
实施例一
如图1所示,本说明书实施例提供一种数据的对账方法,该方法的执行主体可以为终端设备或服务器,其中,该终端设备可以如个人计算机等设备。该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是某项业务(如金融业务等)的后台服务器,也可以是某网站(如网络购物网站或支付应用等)的后台服务器等。该方法可以用于不同机构对相同业务下的数据进行匹配对账等处理中,为了提高匹配对账的处理效率,本实施例中以执行主体为服务器为例进行说明,对于终端设备的情况,可以根据下述相关内容处理,在此不再赘述。此外,为了与实施例中提到的其它服务器进行区分,本实施例的执行主体可以为任务分发服务器。该方法具体可以包括以下步骤:
在步骤S102中,根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息。
其中,业务标识可以是业务名称或编码等,例如转账业务或收款业务等,在实际应用中,业务标识可以以对账码表征。目标数据可以是任意数据,例如用户向另一用户转账的流水数据,用户向某商户付款的流水数据等。基准数据可以是如银行等机构提供的数据等,通常,银行等机构都要求接入方提供如FTP等服务,银行等机构会定时将对账单推送到接入方提供的FTP服务器上,此外,银行等机构也可以提供对账单的下载服务,另外,对于比较特殊的对账单,还可以提供手动下载等服务。
在实施中,随着网络技术和终端技术的不断发展,通过终端中的应用程序进行线上或线下支付成为当前金融支付领域的重要方式。而在互联网行业中只要涉及到支付,则必然会存在对账的需求,对账处理是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。当前,在大多数的电商平台、互联网金融机构和第三方支付机构中,都会有独立的对账***来定期进行对账处理。通常,可以采用直接编写SQL编程语句的方式,从数据库中查找相应的数据,即从第三方机构从数据库中通过SQL编程语句查找某数据,并在相应的银行提供的基准数据中查找相应的数据进行比对对账,以确保业务和资金的正确性。然而,在大数据量的场景下,如果采用上述方式进行对账,则无法保障数据库的稳定性,而且对数据库的容量往往也造成了一定的瓶颈,为此,本说明书实施例提供一种能够使得数据库的稳定性更好,并且能够突破数据库容量瓶颈的技术方案,具体可以包括以下内容:
每当用户发起一次业务请求时,业务服务器可以响应该业务请求,此外,还可以向如银行等机构发送相关的业务数据,服务器可以记录上述相关信息,例如,用户通过第三方支付机构绑定了***,当用户需要向某商户进行支付时,可以使用第三方支付机构的应用程序,并通过***向该商户进行支付,此时,该应用程序可以向业务服务器发送支付请求,该支付请求中可以包括业务标识、支付金额、该***的相关信息和商户的账户信息等,业务服务器可以根据该支付请求中的支付金额、该***的相关信息和商户的账户信息等,从用户的***账户中去除支付金额,并向商户的账户增加支付金额,同时,可以向银行机构发送相关的业务数据,即从用户的***账户中去除支付金额,并向商户的账户增加支付金额等,此外,服务器可以记录上述相关信息。通过上述方式,服务器可以记录该用户在指定时长内进行的相关业务数据,当需要进行对账时,服务器可以根据业务标识等维度对上述相关数据组成的流水数据进行分析,同时,在服务器接收到如银行等机构提供的基准数据后,可以根据业务标识等维度对上述基准数据组成的流水数据进行分析。此外,还可以根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,例如,可以根据***支付的业务标识,从待对账的目标数据中获取业务标识为***支付对应的分组数据,得到***支付对应的第一分组信息(例如流水号为10-12、15-17和100-102等),同时,还可以根据***支付的业务标识,从基准数据中获取业务标识为***支付对应的分组数据,得到***支付对应的第二分组信息。通过上述方式可以将不同业务标识对应的数据(目标数据或基准数据)分别进行分组,得到目标数据中不同业务标识对应的第一分组信息,以及基准数据中不同业务标识对应的第二分组信息。通过上述分组后,可以将产生的相关信息进行存储,如可以将业务标识与相应的分组信息对应存储等。
需要说明的是,用于对数据进行分组的业务标识可以包括多个,而并不限于***支付的业务标识,而且,上述使用***支付作为业务标识也仅是一个示例,在实际应用中,可以使用***支付作为一种业务标识,还可以对***支付再进一步向下细分,例如A银行***支付和B银行***支付等,本说明书实施例对此不做限定。
在步骤S104中,基于上述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将该第一分组信息和该第二分组信息对应的数据进行对账处理。
其中,对账任务可以是用于指示将某数据进行对账处理的任务,其中的对账可以是如第三方金融机构需要将本方产生的金融交易明细和外部机构(如银行机构等)相应的金融交易明细进行比对,以确保金融交易业务的正确性和金融交易资源(如资金等)准确性的处理过程。
在实施中,在目标数据中,可以包含某业务标识对应的第一分组信息,例如,***支付的业务标识对应的第一分组信息为流水号为10-12、15-17和100-102等,而在基准数据中,也可以包含该业务标识对应的第二分组信息,例如,在基准数据中,该用户的***支付的业务标识对应的第二分组信息为流水号为8-9、13-14和88-89等。因此,在目标数据和基准数据中会包含有相同业务标识对应的分组信息,又由于对账处理的目的是将目标数据中的某数据与基准数据中的相应数据进行比对,以判断两者是否一致,因此,上述两数据所属的业务标识应该是相同的,因此,可以将目标数据和基准数据中相同业务标识对应的第一分组信息和第二分组信息划归到同一个对账任务中,以便进行对账处理,基于此,可以从目标数据中获取一个或多个业务标识对应的第一分组信息,然后,还可以从基准数据中获取与上述一个或多个业务标识相同的业务标识对应的第二分组信息,可以基于上述获取的第一分组信息与第二分组信息生成一个对账任务,基于上述处理方式,可以通过相同的业务标识,分别从目标数据和基准数据中获取相应的第一分组信息和第二分组信息,并生成相应的对账任务,这样可以生成至少一个对账任务。通过上述生成的对账任务,分布式对账***可以将该第一分组信息和该第二分组信息对应的数据进行对账处理。
在步骤S106中,将上述对账任务分发给分布式对账***,以使该分布式对账***执行该对账任务,将上述第一分组信息和上述第二分组信息对应的数据进行对账处理。
如图2所示,本说明书实施例提供一种数据的对账方法,该方法的执行主体可以为分布式对账***,其中,该分布式对账***可以由多个终端设备或多个服务器组成,其中的终端设备可以如个人计算机等设备。该服务器可以是某项业务(如金融业务等)的后台服务器,也可以是某网站(如网络购物网站或支付应用等)的后台服务器等。该方法可以用于不同机构对相同业务下的数据进行匹配对账等处理中,为了提高匹配对账的处理效率,本实施例中以执行主体分布式对账***以包含多个服务器为例进行说明,对于包括多个终端设备的情况,可以根据下述相关内容处理,在此不再赘述。该方法具体可以包括以下步骤:
在步骤S202中,接收任务分发服务器发送的对账任务,该对账任务可以是该任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于该不同业务标识对应的第一分组信息和第二分组信息生成的任务。
其中,终端设备根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于该不同业务标识对应的第一分组信息和第二分组信息生成对账任务的具体处理过程可以参见上述步骤S102~步骤S106中的相关内容,在此不再赘述。
在步骤S204中,执行上述对账任务,以将上述第一分组信息和上述第二分组信息对应的数据进行对账处理。
在实施中,由于分布式对账***通常是由分布式结构的多个服务器构成,在接收到终端设备发送的对账任务后,可以将该对账任务分发到分布式对账***中的各个服务器中,分布式对账***中的服务器可以异步的执行接收到的对账任务,具体地,分布式对账***中的服务器接收到某对账任务后,可以对该对账任务进行分析,确定其中包含的第一分组信息和第二分组信息,以及相同的业务标识对应的第一分组信息和第二分组信息,然后,可以根据第一分组信息,从数据库中提取相应的数据,并可以根据第二分组信息,从基准数据库(即如银行等机构提供的数据集合)中提取相应的数据。可以将上述得到的数据进行比对,确定相同的业务标识下,第一分组信息对应的数据与第二分组信息对应的数据是否匹配,如果两者匹配,则表明该业务标识下的数据正常,如果两者不匹配,则表明该业务标识下的数据存在异常,此时,可以记录不匹配的相关数据,便于后续对该数据存在的异常进行异常分析处理,这样,通过上述方式可以得到上述对账处理的结果。
在步骤S206中,将上述对账处理的结果进行回写处理。
在实施中,为了确定数据库中存入的数据是否均为准确数据或正常数据,可以将上述对账处理的结果进行回写处理,即如果相同的业务标识下,第一分组信息对应的数据与第二分组信息对应的数据匹配,则表明该业务标识下的数据正常,此时,可以在数据库中的上述第一分组信息对应的数据处标记正常或不做任何标记,如果相同的业务标识下,第一分组信息对应的数据与第二分组信息对应的数据不匹配,则表明该业务标识下的数据存在异常,此时,可以在数据库中的上述第一分组信息对应的数据处标记异常等。这样,后续技术人员可以依据数据库中的上述标记获取相应的数据,可以进一步判断该数据是否正常,并采取相应的处理方式进行处理。
本说明书实施例提供一种数据的对账方法,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
实施例二
如图3所示,本说明书实施例提供一种数据的对账方法,该方法的执行主体可以包括分布式对账***和任务分发服务器,其中,该分布式对账***可以由多个终端设备或多个服务器组成,其中的终端设备可以如个人计算机等设备。该服务器可以是某项业务(如金融业务等)的后台服务器,也可以是某网站(如网络购物网站或支付应用等)的后台服务器等。该任务分发服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是某项业务(如金融业务等)的后台服务器,也可以是某网站(如网络购物网站或支付应用等)的后台服务器等。该方法可以用于不同机构对相同业务下的数据进行匹配对账等处理中。该方法具体可以包括以下步骤:
在步骤S302中,任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息。
在实施中,对于第三方金融机构来说,通常需要用户绑定该用户的银行卡,以便用于支付或充值,而这样就需要第三方金融机构与各个银行之间存在连接关系。如图4所示,当用户请求第三方金融机构提供的相关服务时,第三方金融机构可以为该用户提供该相关服务,并可以记录在上述过程中产生的相关数据,并可以将产生的相关数据存储在预定的数据库中。另外,第三方金融机构为该用户提供相关服务的过程中,可能需要向相应的银行机构进行数据交互,银行机构的服务器可以记录相关数据,并与该用户的账户进行关联存储。当到达结算周期或结算时间(如每日的凌晨2点钟~3点钟等)时,银行机构的服务器可以将上一时段该用户的相关数据(即基准数据,具体如账单等)发送给第三方金融机构。第三方金融机构可以存储该基准数据,同时,可以触发第三方金融机构中的任务分发服务器进行任务创建和任务分发处理,即任务分发服务器可以获取数据库中存储的结算周期或结算时间之前的一定时段内产生的数据,由于产生的数据的数据量可能较大,且数据较繁杂,因此,可以根据对账码(即业务标识)将上述数据进行分组,通过进行大量数据核对的可控拆分,可以确保后续分布式对账***拉取数据和回写数据的效率。同时,任务分发服务器也可以获取基准数据,并通过与上述相同的处理方式,根据对账码(即业务标识)将基准数据进行分组。具体分组处理过程可以参见上述实施例一中步骤S102中的相关内容,在此不再赘述。
在实际应用中,分组后得到的不同业务标识对应的第一分组信息和第二分组信息可以被存储在指定的存储设备中,例如如图4中,可以记录在项目组记录(即erc_item_group_record)的存储区域内。上述分组处理完成后,可以创建对账任务,具体可以参见下述相关内容。
在步骤S304中,当达到预定任务捞取周期时,任务分发服务器根据上述业务标识,分别从上述第一分组信息和上述第二分组信息中捞取至少一个第一分组信息和至少一个第二分组信息。
其中,任务捞取周期可以根据实际情况设定,具体如3分钟或5分钟等。
在实施中,任务分发服务器可以根据实际情况设定任务捞取周期,例如可以根据任务分发服务器生成对账任务和分发对账任务的情况,确定任务捞取周期。每当到达预定任务捞取周期时,任务分发服务器可以根据上述业务标识,分别从上述第一分组信息和上述第二分组信息中捞取一个或多个第一分组信息,以及一个或多个第二分组信息,例如,任务分发服务器可以从第一分组信息中捞取业务标识为A的第一分组信息,其中捞取的第一分组信息可以包括一个或多个,例如,业务标识为A的业务可以对应有10个分组,则捞取的第一分组信息可以包括10个,即上述10个分组对应的第一分组信息等。同时,任务分发服务器可以从第二分组信息中捞取业务标识为A的第二分组信息,其中捞取的第二分组信息也可以包括一个或多个等,例如,基于上述示例,业务标识为A的业务可以对应有10个分组对应的第一分组信息,则业务标识为A的业务也可以对应有10个分组,且第二分组信息也可以包括10个等。通过上述捞取方式,任务分发服务器可以分别捞取多个不同的业务标识对应的第一分组信息和第二分组信息。
需要说明的是,捞取的第一分组信息可以是属于同一业务标识,也可以属于不同的业务标识,同样的第二分组信息与上述情况相同。而且,捞取第一分组信息和第二分组信息的过程中,可以基于设定的业务标识的数量(如2个或5个等)或基于设定的捞取的第一分组信息或第二分组信息的数量(例如10个或20个等)等确定捞取方式,在实际应用中可能并不限于上述两种捞取方式,还可以包括其它捞取方式,本说明书实施例对此不做限定。
在步骤S306中,任务分发服务器基于捞取的上述第一分组信息和捞取的上述第二分组信息,生成对账任务。
在实施中,例如,任务分发服务器基于业务标识A,从第一分组信息中捞取到5个相应的第一分组信息,并基于业务标识B,从第一分组信息中捞取到5个相应的第一分组信息,同时,还基于业务标识A,从第二分组信息中捞取到5个相应的第二分组信息,并基于业务标识B,从第二分组信息中捞取到5个相应的第二分组信息,此时,任务分发服务器可以将业务标识A对应的5个第一分组信息、业务标识B对应的5个第一分组信息,以及业务标识A对应的5个第二分组信息和业务标识B对应的5个第二分组信息构成一个对账任务。可以通过上述方式,将捞取的第一分组信息和捞取的第二分组信息构建成一个对账任务或多个对账任务。
在步骤S308中,任务分发服务器将上述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
其中,预定对账方式可以根据实际情况设定,例如预定对账方式可以为Spark对账方式等,对于Spark对账方式,可以是通过文件的方式进行对账处理,这样就需要对文件进行解析,解析文件可以是将下载的对账文件解析成可以对账的数据类型并且入库,解析不同渠道的文件,文件类型可以不同,因此也可以设计成不同的解析模板,使用解析模板将不同格式的文件解析成可以对账的统一数据类型,解析的文件类型可以包括如json文件、text文件、cvs文件、excle文件等,上述文件中包含的信息可以包括:商户订单号、交易流水号、交易时间、支付时间、付款方、交易金额、交易类型、交易状态等。
在实施中,考虑到生成的对账任务的数量可以较多,为了使得分布式对账***中各个服务器的负载均衡,可以对生成的对账任务进行任务调度,具体地,可以为每个对账任务设置相应的对账方式(即预定对账方式,如Spark对账方式或OB对账方式等),并且,可以通过三层分发的方式将生成的对账任务分发给分布式对账***。
下面以预定的对账方式为Spark对账方式为例进行说明,如图5所示,可以通过以下处理过程实现任务调度,即可以启动Spark对账机制,同时,可以基于Spark对账机制启动相应的驱动程序,然后,可以从分布式对账***中的集群管理器中申请Spark对账机制的运行所需要的资源,同时,还可以分配一定数量的执行器(即Executor),该驱动程序进程可以根据Erecon提交的作业代码拆分Stage(可以根据是否要进行Shuffle拆分多个Stage),每个Stage中可以包括一个或多个对账任务。该对账任务可以被分配到相应的执行器(即Executor)进行执行,当某个对账任务结束后,可以在各个节点记录相应的数据。该驱动程序进程可以继续调度下一个Stage,并且输入的数据可以为上一个Stage的输出结果。通过上述处理过程,可以完成Spark对账方式下的任务调度。
基于上述相关内容,在将对账任务分发给分布式对账***的过程中,需要进行任务调度,为了减轻任务分发服务器的处理压力,可以预先设置任务调度频率,则上述步骤S308的处理可以为:基于预定的任务调度频率,将上述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务发送给分布式对账***。
其中,任务调度频率可以根据实际情况设定,例如1个/分钟或2个/分钟等。
上述具体处理过程可以参见上述相关内容,在此不再赘述。
需要说明的是,由于分布式对账***中包括多个服务器,多个服务器可以并发的执行对账任务,因此,为了使得分布式对账***中的各个服务器的负载均衡,任务分发服务器中还可以设置有负载均衡机制。负载均衡机制可以通过多种方式实现,例如,任务分发服务器可以记录分发给分布式对账***中每个服务器的对账任务的情况,并且可以通过主动或被动的方式获取分布式对账***中每个服务器的负载情况和对账任务的完成情况,可以基于收集的上述情况,确定分布式对账***中的哪些服务器的处理压力较大,哪些服务器的处理压力较小等,从而为新的对账任务的分发确定接收对象。在实际应用中,上述负载均衡机制可以设置在任务分发服务器中,还可以设置在分布式对账***中,具体可以根据实际情况设定,其中的具体处理过程可以参见上述内容,在此不再赘述。
在步骤S310中,分布式对账***从数据库中读取上述对账任务中包含的第一分组信息和第二分组信息对应的数据。
在实施中,分布式对账***接收到任务分发服务器发送的对账任务后,如果分布式对账***中的各个服务器正在执行对账任务,则可以将上述接收的对账任务临时存储在预定的存储区域内,当分布式对账***中的某一个或多个服务器执行完分配的对账任务,则可以将临时存储的对账任务分配给其中的一个服务器执行,此时,分布式对账***可以获取该对账任务的预定对账方式,并可以基于预定对账方式对应的处理机制将该对账任务提交给相应服务器执行。
例如,以预定对账方式为Spark对账方式为例,如图6所示,可以通过以下处理过程实现对账任务的提交,即通过上述方式生成对账任务后,可以从当前的资源池(即SparkRestFull Session)中获取处于启动状态的会话对象(即Session),可以基于对账任务中包含的分组的数量,启动相应的SparkJob,并通过SparkJob可以将相应的分组信息进行提交,例如,对账任务中包括10个第一分组信息,则可以启动10个SparkJob对上述10个第一分组信息进行提交。其中,一定数量的SparkJob可以通过一个ThreadPool来提交对账任务,具体如,10个SparkJob可以通过一个ThreadPool来提交对账任务等。
对账任务提交给分布式对账***中的服务器后,该服务器可以分析该对账任务的内容,并通过对账任务中的内容,可以从待对账数据的数据库中读取第一分组信息对应的数据,例如,第一分组信息为流水号为10-12和15-17,则可以从数据库中读取流水号为10-12和15-17的数据。并从基准数据的数据库中读取第二分组信息对应的数据,例如,第二分组信息为流水号为8-9和13-14,则可以从数据库中读取流水号为8-9和13-14的数据等。
分布式对账***从数据库中读取数据的方式可以包括多种,例如Binlog方式、Redolog方式或Jdbc(Java Data Base Connectivity,Java数据库连接)方式等,则上述步骤S310的处理还可以为:通过Binlog方式、Redolog方式或Jdbc方式,从数据库中读取上述对账任务中包含的第一分组信息和第二分组信息对应的数据。
需要说明的是,通过哪种方式从数据库中读取数据,可以根据实际情况选择,而且,在实际应用中也并不限于上述三种方式,还可以包括其它多种方式,本说明书实施例对此不做限定。
在步骤S312中,在内存中,分布式对账***将上述第一分组信息和上述第二分组信息对应的数据进行对账处理。
在实施中,为了提高对账效率,可以在分布式对账***中的服务器的内存中进行对账处理,具体地,通过上述步骤S310的处理读取到第一分组信息对应的数据和第二分组信息对应的数据后,可以在内存中开辟两个存储区域,可以将读取到的第一分组信息对应的数据存储在其中的存储区域中,并将读取到的第二分组信息对应的数据存储在另一个存储区域中,然后,可以将两个存储区域关联到相同的数据帧(即DataFrame),由于数据帧(即DataFrame)类似于一个表格,该表格中的每一列的名称和其中的数据均为已知的,因此,通过关联到相同的数据帧,可以将对账任务中的第一分组信息对应的数据和对账任务中的第二分组信息对应的数据进行匹配对账处理,最终得到对账处理的结果。
在实际应用中,可以通过多种方式在内存中对两数据进行对账处理,例如,可以通过MapReduce的方式等,则上述步骤S312的具体处理还可以是:通过MapReduce的方式,在内存中将上述第一分组信息和上述第二分组信息对应的数据进行对账处理。
其中,MapReduce可以是一种编程模型,用于大规模数据集的并行运算。MapReduce的方式可以极大地方便技术人员在不清楚或不了解分布式并行编程的情况下,将技术人员编写的应用程序运行在分布式***(如分布式对账***)上。MapReduce的方式的实现可以是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个可以共享相同的键组。
在步骤S314中,分布式对账***将上述对账处理的结果进行回写处理。
本说明书实施例提供一种数据的对账方法,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
实施例三
以上为本说明书实施例提供的数据的对账方法,基于同样的思路,本说明书实施例还提供一种数据的对账装置,如图7所示。
该数据的对账装置包括:分组模块701、任务生成模块702和任务分发模块703,其中:
分组模块701,用于根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息;
任务生成模块702,用于基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
任务分发模块703,用于将所述对账任务分发给分布式对账***,以使所述分布式对账***执行所述对账任务,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例中,所述任务生成模块702,包括:
任务捞取单元,用于当达到预定任务捞取周期时,根据所述业务标识,分别从所述第一分组信息和所述第二分组信息中捞取至少一个所述第一分组信息和至少一个所述第二分组信息;
任务生成单元,用于基于捞取的所述第一分组信息和捞取的所述第二分组信息,生成所述对账任务。
本说明书实施例中,所述任务分发模块703,用于将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
本说明书实施例中,所述预定对账方式为Spark对账方式。
本说明书实施例中,所述任务分发模块703,用于基于预定的任务调度频率,将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
本说明书实施例提供一种数据的对账装置,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
实施例四
基于同样的思路,本说明书实施例还提供一种数据的对账装置,如图8所示。
该数据的对账装置包括:任务接收模块801、任务执行模块802和回写模块803,其中:
任务接收模块801,用于接收任务分发服务器发送的对账任务,所述对账任务是所述任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于所述不同业务标识对应的第一分组信息和第二分组信息生成的任务;
任务执行模块802,用于执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
回写模块803,用于将所述对账处理的结果进行回写处理。
本说明书实施例中,所述任务执行模块802,包括:
数据读取单元,用于从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据;
任务执行单元,用于在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例中,所述任务执行单元,用于通过MapReduce的方式,在内存中将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例中,所述数据读取单元,用于通过Binlog方式、Redolog方式或Jdbc方式,从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据。
本说明书实施例提供一种数据的对账装置,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
实施例五
以上为本说明书实施例提供的数据的对账装置,基于同样的思路,本说明书实施例还提供一种数据的对账设备,如图9所示。
所述数据的对账设备可以为上述实施例提供的任务分发服务器。
数据的对账设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器901和存储器902,存储器902中可以存储有一个或一个以上存储应用程序或数据。其中,存储器902可以是短暂存储或持久存储。存储在存储器902的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对数据的对账设备中的一系列计算机可执行指令。更进一步地,处理器901可以设置为与存储器902通信,在数据的对账设备上执行存储器902中的一系列计算机可执行指令。数据的对账设备还可以包括一个或一个以上电源903,一个或一个以上有线或无线网络接口904,一个或一个以上输入输出接口905,一个或一个以上键盘906。
具体在本实施例中,数据的对账设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对数据的对账设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息;
基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账任务分发给分布式对账***,以使所述分布式对账***执行所述对账任务,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例中,所述基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,包括:
当达到预定任务捞取周期时,根据所述业务标识,分别从所述第一分组信息和所述第二分组信息中捞取至少一个所述第一分组信息和至少一个所述第二分组信息;
基于捞取的所述第一分组信息和捞取的所述第二分组信息,生成所述对账任务。
本说明书实施例中,所述将所述对账任务分发给分布式对账***,包括:
将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
本说明书实施例中,所述预定对账方式为Spark对账方式。
本说明书实施例中,所述将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***,包括:
基于预定的任务调度频率,将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
本说明书实施例提供一种数据的对账设备,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
实施例六
基于同样的思路,本说明书实施例还提供一种数据的对账设备,如图10所示。
所述数据的对账设备可以为上述实施例提供的分布式对账***中的服务器。
数据的对账设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器1001和存储器1002,存储器1002中可以存储有一个或一个以上存储应用程序或数据。其中,存储器1002可以是短暂存储或持久存储。存储在存储器1002的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对数据的对账设备中的一系列计算机可执行指令。更进一步地,处理器1001可以设置为与存储器1002通信,在数据的对账设备上执行存储器1002中的一系列计算机可执行指令。数据的对账设备还可以包括一个或一个以上电源1003,一个或一个以上有线或无线网络接口1004,一个或一个以上输入输出接口1005,一个或一个以上键盘1006。
具体在本实施例中,数据的对账设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对数据的对账设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
接收任务分发服务器发送的对账任务,所述对账任务是所述任务分发服务器根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,并基于所述不同业务标识对应的第一分组信息和第二分组信息生成的任务;
执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理;
将所述对账处理的结果进行回写处理。
本说明书实施例中,所述执行所述对账任务,包括:
从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据;
在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例中,所述在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理,包括:
通过MapReduce的方式,在内存中将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
本说明书实施例中,所述从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据,包括:
通过Binlog方式、Redolog方式或Jdbc方式,从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据。
本说明书实施例提供一种数据的对账设备,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
实施例七
基于同样的思路,本说明书实施例还提供一种数据的对账***,所述***包括任务分发服务器和分布式对账***,所述分布式对账***包括多个服务器,如图11所示,其中:
所述任务分发服务器1101,用于根据业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,基于所述不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个所述对账任务用于将所述第一分组信息和所述第二分组信息对应的数据进行对账处理,将所述对账任务分发给所述分布式对账***1102;
所述分布式对账***1102中的服务器11021,用于在接收到所述任务分发服务器发送的对账任务后,执行所述对账任务,以将所述第一分组信息和所述第二分组信息对应的数据进行对账处理,将所述对账处理的结果进行回写处理。
此外,所述任务分发服务器1101,还用于当达到预定任务捞取周期时,根据所述业务标识,分别从所述第一分组信息和所述第二分组信息中捞取至少一个所述第一分组信息和至少一个所述第二分组信息,基于捞取的所述第一分组信息和捞取的所述第二分组信息,生成所述对账任务。
另外,所述任务分发服务器1101,还用于将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
此外,所述预定对账方式为Spark对账方式。
另外,所述任务分发服务器1101,还用于基于预定的任务调度频率,将所述对账任务的对账方式设置为预定对账方式,并将设置后的对账任务分发给分布式对账***。
此外,所述分布式对账***1102中的服务器11021,还用于从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据,在内存中,将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
另外,所述分布式对账***1102中的服务器11021,还用于通过MapReduce的方式,在内存中将所述第一分组信息和所述第二分组信息对应的数据进行对账处理。
此外,所述分布式对账***1102中的服务器11021,还用于通过Binlog方式、Redolog方式或Jdbc方式,从数据库中读取所述对账任务中包含的所述第一分组信息和所述第二分组信息对应的数据。
本说明书实施例提供一种数据的对账***,通过业务标识,分别将待对账的目标数据和基准数据进行分组,得到不同业务标识对应的第一分组信息和第二分组信息,然后,基于不同业务标识对应的第一分组信息和第二分组信息,生成至少一个对账任务,其中,每个对账任务用于将第一分组信息和第二分组信息对应的数据进行对账处理,将该对账任务分发给分布式对账***,以使分布式对账***执行该对账任务,将第一分组信息和第二分组信息对应的数据进行对账处理,并事务性的回写对账处理的结果到数据库中,这样,由于对大量待对账的数据进行了分组处理,并基于分组信息生成相应的对账任务,从而可以将大量数据分散为多个小数据量的对账任务提供给分布式对账***并行执行,不仅能够使得数据库的稳定性更好,能够突破数据库容量瓶颈,而且可以保障分布式对账***对账的方式的事务一致性。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在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、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。