发明内容
本说明书一个或多个实施例描述了一种业务数据处理方法,可以在保证业务数据处理时效性情况下,保证处理结果的准确性。
根据第一方面,提供了一种业务数据处理方法,所述方法包括:
离线计算平台从第一中间件获取多条解析结果,所述多条解析结果为所述第一中间件对数据库的业务数据变更日志进行解析所产生的;
对所述多条解析结果进行离线批处理,得到计算结果第一集合;
获取实时计算平台对从第二中间件获取的至少一条解析结果分别进行在线计算产生的目标表;所述至少一条解析结果属于第二中间件对所述数据库的业务数据变更日志进行解析所产生的解析结果;
对比所述第一集合和所述目标表;
当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表。
在一些实施例中,其中,业务数据为银存数据。
在一些实施例中,其中,所述第一中间件为canal、databus、kettle、otter中的任一种;
所述第二中间件为drc;
所述离线计算平台和所述第一中间件之间的链路,与所述实时计算平台和所述第二中间件之间的链路不同。
在一些实施例中,其中,所述多条解析结果为所述第一中间件对所述数据库在预设周期内的变更日志进行解析的结果;
所述至少一条解析结果属于第二中间件对所述数据库在所述预设周期内的变更日志进行解析所产生的解析结果。
在一些实施例中,其中,所述多条解析结果为所述第一中间件对所述数据库所有的变更日志进行解析的结果;
所述至少一条解析结果属于第二中间件对所述数据库在所述实时计算平台上线之后产生的变更日志进行解析所产生的解析结果。
在一些实施例中,其中,所述当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表,包括:
当所述第一集合比所述目标表多出至少一条计算结果时,将所述至少一条计算结果写入所述目标表,以更新所述目标表。
在一些实施例中,其中,所述第一集合包括对应于第一变更日志的第一计算结果,所述目标表包括对应于所述第一变更日志的第二计算结果;所述当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表,包括:
所述第一计算结果和所述第二计算结果不一致时,基于所述第一计算结果修正所述第二计算结果,以更新所述目标表。
在一些实施例中,其中,所述方法还包括:所述当所述第一集合和所述目标表不一致时,发起警报。
根据第二方面提供了一种业务数据处理装置,所述装置包括:
第一获取单元,配置为离线计算平台从第一中间件获取多条解析结果,所述多条解析结果为所述第一中间件对数据库的业务数据变更日志进行解析所产生的;
批处理单元,配置为对所述多条解析结果进行离线批处理,得到计算结果第一集合;
第二获取单元,配置为获取实时计算平台对从第二中间件获取的至少一条解析结果分别进行在线计算产生的目标表;所述至少一条解析结果属于第二中间件对所述数据库的业务数据变更日志进行解析所产生的解析结果;
对比单元,配置为对比所述第一集合和所述目标表;
更新单元,配置为当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算终端,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
本说明书实施例提供的方法及装置可将离线计算和可以将离线计算平台实时计算结果进行比对,从而可以对实时计算结果进行纠错,从而在保证了业务数据处理时效性的情况下,进一步保证了业务数据处理结果的准确性;并且通过离线计算结果和实时计算结果的对比,便于发现异常数据,进而便于找到导致数据异常的故障,有助于进一步提升数据质量。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
在许多技术场景下,业务资源通过分布式存储,分布在全球不同地方的不同数据库中,这为业务方对业务资源的统一管理带来了难题。以业务资源为资金为例。为了制定高效准确的资金调拨方案,需要感知不同地区不同业务分支的银行账户中的资金量,这需要对各业务分支的银存数据进行处理。
银存数据,是银行存款数据的简称。银行存款是存储在银行的款项。在一个例子中,业务方的各个业务分支的银存数据可以是跨国公司的各分公司存储在各自对应的银行账户的资金。
跨国公司的各分公司可以在其与银行协商的可互通协议范围内,通过其与该银行协议开放规范接口获取其在该银行的银存数据。具体地,对跨国公司任一分公司而言,其对应的银行***可以将其账户变化情况发送给其业务***(例如irecon、ireserve、reservement等),以使其业务***得到银存数据并存储到其业务***的数据库中。须知,在下文中,为了方便描述,将此处的业务***的数据库简称为数据库,因此如无特殊说明,下文中的数据库均指此处的业务***的数据库。
根据一种方案,离线计算平台对应的中间件可以解析数据库的日志文件中的变更日志,并按照特定的周期(例如周期的时长可以为24小时)将解析结果输入到离线计算平台进行离线计算,得到离线计算结果。
该方案是按照特定周期,批次生成离线计算结果,难以满足实时账单高频次高实时性要求。另外,跨国公司各个分公司对应的银行分布在不同时区,导致各个分公司的日终文件的发送时间有较大差异,且各个分公司的银存数据在同一批次进行离线计算,也无法保证不同时区的日终账单及时生成。
根据另外一种方案,实时计算平台对应的中间件在当日志文件中产生了变更日志时,对该变更日志进行解析,并将解析结果输入到实时计算平台,进行实时计算,得到实时计算结果。
实时计算平台对应的中间件和实时计算平台之间的链路不稳定,容易发生数据丢失,导致实时计算出现数据遗漏,进而使得实时计算结果不全。
本说明书实施例提供了一种业务数据处理方法,其应用架构可以如图1所示。数据库产生的变更日志在经过第一中间件解析后,可以由离线计算平台进行离线批处理;在经过第二中间件解析后,可以由实时计算平台进行在线处理。
本说明书实施例提供的业务数据处理方法利用实时计算平台对变更日志进行在线计算,使得相关人员可以及时感知业务变化,保证了变更日志处理结果的时效性。
该方法可将离线计算和可以将离线计算平台实时计算结果进行比对,从而可以对实时计算结果进行纠错,保证了业务数据处理结果的准确性;并且通过离线计算结果和实时计算结果的对比,便于发现异常数据,进而便于找到导致数据异常的故障,有助于进一步提升数据质量。
接下来,参考图2,对本说明书实施例提供的业务数据处理方法进行具体介绍。所述方法可以由任何具有计算、处理能力的装置、设备、平台、设备集群执行。如图2所示,所述方法包括如下步骤:步骤200、离线计算平台从第一中间件获取多条解析结果,所述多条解析结果为所述第一中间件对数据库的业务数据变更日志进行解析所产生的;步骤202、对所述多条解析结果进行离线批处理,得到计算结果第一集合;步骤204、获取实时计算平台对从第二中间件获取的至少一条解析结果分别进行在线计算产生的目标表;所述至少一条解析结果为第二中间件对所述数据库的业务数据变更日志进行解析所产生的;步骤206、对比所述第一集合和所述目标表;步骤208、当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表。
接下来,结合具体例子对上述各步骤进行具体介绍。
首先,在步骤200中,离线计算平台从第一中间件获取多条解析结果,所述多条解析结果为所述第一中间件对数据库的业务数据变更日志进行解析所产生的。
数据库可以为mysql、oracle、oceanbase等。数据库记录的业务数据发生变化时,例如新增业务数据、删除业务数据、修改业务数据,会生成相应的变更日志。变更日志记录在日志文件(例如binlog)中。对于任意数据库,其对应的第一中间件可以解析变更日志,得到解析结果。
在一些实施例中,业务数据为银存数据。
为表述方便,除非特殊说明,下文中将业务数据变更日志简称为变更日志,当业务数据为银存数据时,变更日志是指银存数据变更日志。
在一些实施例中,第一中间件可以为canal、databus、kettle、otter等中间件中的任一种。
在预设周期(例如每24小时为一周期)的起始时刻(例如每日的0点0分0秒),多个第一间件的解析结果可以同时导入到离线计算平台(例如OPDS)。
在一些实施例中,所述多条解析结果为所述第一中间件对所述数据库所有的变更日志进行解析的结果,即可以将第一中间件所有解析结果导入到离线计算平台,换言之,将数据库所有经第一中间件解析的变更日志的解析结果导入到离线计算平台。从而使得后续的离线批处理得到的计算结果的准确性更高。
在一些实施例中,所述多条解析结果为所述第一中间件对所述数据库在预设周期内的变更日志进行解析的结果,即可以将第一中间件解析数据库在预设周期内的变更日志的解析结果导入到离线计算平台。从而可以在后续的离线批处理中节省计算资源。
接着,在步骤202中,对所述多条解析结果进行离线批处理,得到计算结果第一集合。
离线计算平台可以对解析结果进行离线批处理,各个解析结果对应的计算结果,构成了计算结果的第一集合。
在一些实施例中,各个解析结果可以各自对应一个计算结果。
在一些实施例中,离线计算平台可以对多个解析结果对应的多个计算结果进行聚类,并将聚类得到的类簇作为第一集合的构成元素。
在一些实施例中,离线计算平台可以对多个解析结果进行聚类,然后对聚类得到的类簇进行离线批处理,并将得到的计算结果作为第一集合的构成元素。
以及,在步骤204中,获取实时计算平台对从第二中间件获取的至少一条解析结果分别进行在线计算产生的目标表;所述至少一条解析结果为第二中间件对所述数据库的业务数据变更日志进行解析所产生的。
实时计算平台可以为开普勒(kepler)实时计算平台。
在一些实施例中,第二中间件为drc(Data Replication Center),其可以为实时计算平台提供实时增量变更日志的解析结果。drc可支持同构或异构数据库实时同步、实时数据记录变更订阅服务等。
在步骤204中,每当数据库发生了业务数据变更,生成了变更日志,该数据库对应的第二中间件可以对该变更日志进行解析;解析结果立即导入到实时计算平台进行在线计算,得到实时计算结果,并将实时计算结果写入到目标表中。
离线计算平台在预设周期(例如每24小时为一周期)的起始时刻(例如每日的0点0分0秒)从实时计算平台获取目标表。
需要说明的是,由于实时计算平台的在线计算的特性,其要求中间件能够及时地向其传递数据。而离线计算平台进行的是离线批处理,其对中间件要求较低。第二中间件为专门设置的,用于及时向实时计算平台传递数据、满足实时计算平台在线计算特性的中间件,而第一中间件可以为已普遍设置的、成熟稳定的中间件。
一般而言,第二中间件较第一中间件不稳定,容易丢失数据。并且实时计算平台和第二中间件之间的链路,比离线计算平台和第一中间件之间的链路复杂,容易丢失数据。另外,实时计算平台只从第二中间件获取数据库在该实时计算平台上线以来产生的变更日志的解析结果进行在线计算,而不处理上线之前的变更日志的解析结果。
鉴于上述原因,第二中间件解析后的每个解析结果,并非都能导入到实时计算平台。因此,所述至少一条解析结果是指成功导入到实时计算平台的第二中间件的解析结果,其属于第二中间件对变更日志的解析结果,在多数情况下,其并不等于第二中间件对变更日志的解析结果。
在一些实施例中,当所述多条解析结果为所述第一中间件对所述数据库所有的变更日志进行解析的结果时,所述至少一条解析结果属于第二中间件对所述数据库在所述实时计算平台上线之后产生的变更日志进行解析所产生的解析结果。
在一些实施例中,当所述多条解析结果为所述第一中间件对所述数据库在预设周期内的变更日志进行解析的结果时,所述至少一条解析结果属于第二中间件对所述数据库在所述预设周期内的变更日志进行解析所产生的解析结果。
其次,在步骤206中,对比所述第一集合和所述目标表。
如上所述,第一集合中的元素为离线计算平台进行离线批处理得到的计算结果,可以简称为离线计算结果。目标表中的计算结果为实时计算平台进行在线处理得到的计算结果,可以简称为实时计算结果。
在一些实施例中,在步骤206中,可以进行第一集合中离线计算结果和目标表中实时计算结果的一一对比,以将目标表中的实时计算结果对比到第一集合中的离线计算结果上。容易理解,对于任一变更日志,其具有主关键字(primary key)。相应的,该变更日志的离线计算结果和实时计算结果都具有该主关键字。因此,可以通过主关键字将变更日志、离线计算结果、实时计算结果对应起来。
在一些实施例中,在步骤206中,可以对比对应于同一变更日志的离线计算结果和实时计算结果是否一致。
然后,在步骤208中,当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表。
在一些实施例中,在进行第一集合中离线计算结果和目标表中实时计算结果的一一对比后,如果有些离线结果没有对应到实时计算结果,说明该离线结果对应的变更日志没有被第二中间件解析或解析结果丢失,可以将该离线结果写入到目标表中,以更新目标表。
在这些实施例中,通过比对第一集合中离线计算结果和目标表中实时计算结果,可以发现是否导致了数据遗漏,进而可以采取针对数据遗漏这一现象的措施,以提升实时计算平台后续的数据质量。
在一些实施例中,对比对应于同一变更日志的离线计算结果和实时计算结果不一致,则基于该离线计算结果修正实时计算结果,以更新目标表。
如上所述,相较第一中间件,第二中间件不稳定,可能会导致解析结果不准确,进而导致实时计算结果不准确。因此,在离线计算结果和实时计算结果不一致时,使用离线计算结果修正实时计算结果。
在这些实施例中,通过对比离线计算结果和实时计算结果是否一致,可以确定实时计算结果是否准确,进而可以采取针对实时计算平台计算结果不准确这一现象的措施,以改善实时计算平台计算结果的准确性。
在一些实施例中,其中,所述方法还包括:所述当所述第一集合和所述目标表不一致时,发起警报。
在这些实施例中,在离线计算平台的计算结果和实时计算平台的计算结果不一致时,发起警报,以提醒相关人员采取核查数据、修改已根据实时计算平台的计算结果生成的业务报表等措施。
本说明书实施例提供的业务数据处理方法可将离线计算和可以将离线计算平台实时计算结果进行比对,从而可以对实时计算结果进行纠错,从而在保证了业务数据处理时效性的情况下,进一步保证了业务数据处理结果的准确性;并且通过离线计算结果和实时计算结果的对比,便于发现异常数据,进而便于找到导致数据异常的故障,有助于进一步提升数据质量。
第二方面,本说明书实施例提供了一种业务数据处理装置300。参考图3,所述装置300包括:
第一获取单元310,配置为离线计算平台从第一中间件获取多条解析结果,所述多条解析结果为所述第一中间件对数据库的业务数据变更日志进行解析所产生的;
批处理单元320,配置为对所述多条解析结果进行离线批处理,得到计算结果第一集合;
第二获取单元330,配置为获取实时计算平台对从第二中间件获取的至少一条解析结果分别进行在线计算产生的目标表;所述至少一条解析结果属于第二中间件对所述数据库的业务数据变更日志进行解析所产生的解析结果;
对比单元340,配置为对比所述第一集合和所述目标表;
更新单元350,配置为当所述第一集合中的计算结果和所述目标表中的计算结果不一致时,基于所述第一集合更新所述目标表。
在一些实施例中,业务数据为银存数据。
在一些实施例中,所述第一中间件为canal、databus、kettle、otter中的任一种;
所述第二中间件为drc;
所述离线计算平台和所述第一中间件之间的链路,与所述实时计算平台和所述第二中间件之间的链路不同。
在一些实施例中,所述多条解析结果为所述第一中间件对所述数据库在预设周期内的变更日志进行解析的结果;
所述至少一条解析结果属于第二中间件对所述数据库在所述预设周期内的变更日志进行解析所产生的解析结果。
在一些实施例中,所述多条解析结果为所述第一中间件对所述数据库所有的变更日志进行解析的结果;
所述至少一条解析结果属于第二中间件对所述数据库在所述实时计算平台上线之后产生的变更日志进行解析所产生的解析结果。
在一些实施例中,所述更新单元350配置为当所述第一集合比所述目标表多出至少一条计算结果时,将所述至少一条计算结果写入所述目标表,以更新所述目标表。
在一些实施例中,所述第一集合包括对应于第一变更日志的第一计算结果,所述目标表包括对应于所述第一变更日志的第二计算结果;所述更新单元350配置为所述第一计算结果和所述第二计算结果不一致时,基于所述第一计算结果修正所述第二计算结果,以更新所述目标表。
在一些实施例中,所述装置还包括警报单元(未示出),配置为所述当所述第一集合和所述目标表不一致时,发起警报。
另一方面,本说明书的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图2所示的方法。
另一方面,本说明书的实施例提供了一种计算终端,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图2所示的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。