分表数据的完备性检查方法及装置与流程

文档序号:11582755阅读:314来源:国知局
分表数据的完备性检查方法及装置与流程
本申请涉及计算机应用领域,尤其涉及一种分表数据的完备性检查方法及装置。
背景技术
:分库分表,是指一种将具有相同结构的数据,分块存储到多个数据库上的多个数据分表的一种数据拆分方法。通过分库分表,可以解决由于单一的数据库中所承载的数据量过于庞大,而服务器的处理资源有限,造成的服务器的数据处理性能遭遇瓶颈的问题。然而,通过分库分表,虽然可以缓解服务器的数据处理性能的瓶颈为题,但由于针对单一数据库进行分库分表后,该单一数据库中的待处理数据条目通常将会散落于不同数据库上的不同数据分表上,因而如果需要通过定时任务针对该单一数据库中的所有数据条目进行统一处理,则可能会出现由于部分数据分表的数据条目不完备,而造成待处理的数据条目遗漏的问题。技术实现要素:本申请提出一种分表数据的完备性检查方法,应用于分布式服务器集群中的管控服务器,所述分布式服务器集群包括管控服务器以及业务服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;该方法包括:将各数据分表中的业务数据汇总至本地的预设数据表;在针对所述预设数据表的定时处理任务被触发前,定时向所述业务服务器发出针对各数据分表的数据检查请求,以使所述业务服务器响应于所述数据检查请求对各数据分表执行数据完备性检查;接收到所述业务服务器在完成针对各数据分表的数据完备性检查后,补充发送的业务数据,对所述预设数据表中汇总的业务数据进行补全。本申请还提出一种分表数据的完备性检查方法,应用于分布式服务器集群中的业务服务器,所述分布式服务器集群包括业务服务器以及管控服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;该方法包括:接收管理服务器在针对其本地的预设数据表的定时处理任务被触发前,发送的数据检查请求;其中,所述预设数据表汇总了各数据分表中的业务数据;响应于所述数据检查请求对各数据分表执行数据完备性检查;当完成针对各数据分表的数据完备性检查后,向所述管理服务器补充发送业务数据,以对所述预设数据表中的业务数据进行补全。本申请还提出一种分表数据的完备性检查装置,应用于分布式服务器集群中的管控服务器,所述分布式服务器集群包括管控服务器以及业务服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;该装置包括:汇总模块,将各数据分表中的业务数据汇总至本地的预设数据表;第一发送模块,在针对所述预设数据表的定时处理任务被触发前,定时向所述业务服务器发出针对各数据分表的数据检查请求,以使所述业务服务器响应于所述数据检查请求对各数据分表执行数据完备性检查;接收模块,接收到所述业务服务器在完成针对各数据分表的数据完备性检查后,补充发送的业务数据,对所述预设数据表中汇总的业务数据进行补全。本申请还提出一种分表数据的完备性检查装置,应用于分布式服务器集群中的业务服务器,所述分布式服务器集群包括业务服务器以及管控服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;该装置包括:第二发送模块,接收管理服务器在针对其本地的预设数据表的定时处理任务被触发前,发送的数据检查请求;其中,所述预设数据表汇总了各数据分表中的业务数据;检查模块,响应于所述数据检查请求对各数据分表执行数据完备性检查;补全模块,当完成针对各数据分表的数据完备性检查后,向所述管理服务器补充发送业务数据,以对所述预设数据表中的业务数据进行补全。本申请中,业务服务器中的业务数据被拆分存储于若干不同的数据分表,管控服务器通过将各数据分表中的业务数据汇总至本地的预设数据表,并在针对所述预设数据表的定时处理任务被触发前,定时向业务服务器发出针对各数据分表的数据检查请求;业务服务器响应于该数据检查请求对各数据分表执行数据完备性检查,并在完成针对各数据分表的数据完备性检查后,向管控服务器补充发送业务数据,由管控服务器对预设数据表中汇总的业务数据进行补全;本申请实现了管控服务器可以对各数据分表中的业务数据进行集中管控,以及在针对各数据分表的定时任务被触发前,可以调用业务服务器对各数据分表分别数据完备性检查,并根据业务服务器在完成数据完备性检查后,补充发送的业务数据对预设数据表中的业务数据进行补全,从而可以最大程度的确保定时任务被触发时,各数据分表中的业务数据的完备性,有效降低待处理的业务数据发生遗漏的概率。附图说明图1是本申请一实施例示出的一种分表数据的完备性检查方法的流程图;图2是本申请一实施例示出的管控服务器汇总各数据分表中的业务数据的处理流程图;图3是本申请一实施例示出的业务服务器基于接收到的数据检查请求针对各数据分表执行数据完备性检查的处理流程图;图4是本申请一实施例示出的一种分表数据的完备性检查装置的逻辑框图;图5是本申请一实施例提供的承载所述一种分表数据的完备性检查装置的管控服务器的硬件结构图;图6是本申请一实施例示出的另一种分表数据的完备性检查装置的逻辑框图;图7是本申请一实施例提供的承载所述另一种分表数据的完备性检查装置的业务服务器的硬件结构图。具体实施方式在相关技术中,为了解决由于单一的数据库中所承载的业务数据过于庞大,而服务器的处理资源有限,造成的服务器的数据处理性能遭遇瓶颈的问题,通常可以采用分库分表技术,将单一的数据库中的业务数据分拆存储于若干不同的数据分表。例如,可以将单一的数据库中拆分成多个数据分库,每一个数据分库再进一步拆分出多个数据分表。分库分表技术,虽然在某种程度上可以缓解服务器数据处理性能的瓶颈问题,但在实际应用中,通过分库分表技术将单一的数据库拆分成多个数据分表后,通常还具有通过定时任务,针对各数据分表中的业务数据进行统一处理的需求。在这种场景下,如果需要通过定时任务针对各数据分表中的业务数据进行统一处理,由于业务数据散落于不同的数据分表,无法进行统一管控,而各数据分表中可能会由于系统原因存在仍然处于中间状态的业务数据(即未完成状态的业务数据,这类业务数据通常无法进行处理);因此在这种情况下,各数据分表中的业务数据通常并不完备,定时任务在针对各数据分表中的业务数据进行统一处理时,会面临待处理的业务数据出现遗漏的问题。为了应对以上示出的数据的遗漏问题,在相关技术中,通常是在定时任务触发之前,对各个数据分表中的业务数据进行主动检查,对处于中间状态的业务数据进行修复和业务推进,尽量避免定时任务触发前,各数据分表中还存在中间状态的业务数据。然而,这种方案并不能确保在定时任务触发前,各数据分表中处于中间状态的业务数据能够全部修复和推进完成;而且,各数据分表分别进行独立的检查,无法针对各数据分表的检查结果进行统一管控。有鉴于此,本申请提出一种分表数据的完备性检查方法,本申请中,业务服务器中的业务数据被拆分存储于若干不同的数据分表,管控服务器通过将各数据分表中的业务数据汇总至本地的预设数据表,并在针对所述预设数据表的定时处理任务被触发前,定时向业务服务器发出针对各数据分表的数据检查请求;业务服务器响应于该数据检查请求对各数据分表执行数据完备性检查,并在完成针对各数据分表的数据完备性检查后,向管控服务器补充发送业务数据,由管控服务器对预设数据表中汇总的业务数据进行补全;本申请实现了管控服务器可以对各数据分表中的业务数据进行集中管控,以及在针对各数据分表的定时任务被触发前,可以调用业务服务器对各数据分表分别数据完备性检查,并根据业务服务器在完成数据完备性检查后,补充发送的业务数据对预设数据表中的业务数据进行补全,从而可以最大程度的确保定时任务被触发时,各数据分表中的业务数据的完备性,有效降低待处理的业务数据发生遗漏的概率。下面通过具体实施例并结合具体的应用场景对本申请进行描述。请参考图1,图1是本申请一实施例提供的分表数据的完备性检查方法,应用于分布式服务器集群,所述分布式服务器集群包括管控服务器以及业务服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;所述方法执行以下步骤:步骤101,管控服务器将各数据分表中的业务数据汇总至本地的预设数据表;步骤102,管控服务器在针对所述预设数据表的定时处理任务被触发前,定时向业务服务器发出针对各数据分表的数据检查请求;步骤103,业务服务器响应于所述数据检查请求对各数据分表执行数据完备性检查;步骤104,当完成针对各数据分表的数据完备性检查后,业务服务器向管理服务器补充发送业务数据;步骤105,管控服务器对所述预设数据表中汇总的业务数据进行补全。在本例中,将通过业务数据的分库分表、业务数据的汇总、各数据分表的数据完备性检查,以及补全汇总的业务数据等4个阶段,对本申请的技术方案进行详细描述。1)业务数据的分库分表在本例中,上述业务服务器通常可以将执行业务的过程中,产生的业务数据存储在业务数据库中。为了提升业务服务器的数据处理性能,上述业务服务器可以基于分库分表技术,将业务数据库(即数据主表)拆分成多个不同的数据分库,每一个数据分库可以再进一步拆分出多个数据分表。例如,可以将业务数据库拆分成10个数据分库,拆分出的这10个数据库可以进一步拆分出10个数据分表。其中,在进行分库分表时,拆分出的数据库以及数据分表的数量,在本例中不进行特别限定,在实际应用中,可以基于业务服务器实际的性能需求,对拆分出的数据分库以及数据分表的数量进行扩展。当分库分表完成后,业务数据库中存储的业务数据,将会分布于多个不同的数据库中的多个数据分表中。当业务服务器在执行业务时,可以将该业务对应的业务数据存储至业务数据库,并同步的将该业务数据插入至对应的数据分表中进行存储。其中,将业务数据插入对应的数据分表时,可以通过预设的分表规则来定位与该业务数据对应的数据分库和数据分表来完成。在示出的一种分表策略中,可以基于与业务数据对应的用户标识来定位数据分库和数据分表。例如,假设用户标识为userid,可以将分表规则配置为通过userid中的特定位的取值来分别定位与该userid的业务数据对应的数据分库和数据分表;比如,假设userid=2088102122954570,可以将分表规则配置为取倒数第三位定位数据分库,取倒数第二、三位来定位数据分表,由于该userid倒数第三位为5,可以定位到数据分库db05;该userid倒数第二、三位为57,可以定位到数据分表t_order_57。后续与该userid对应的业务数据将存储在数据分库db05下的数据分表t_order_57。可见,通过这种方式,可以将业务服务器执行的业务对应的业务数据,“均匀”的插入不同的数据分表中进行存储。需要说明的是,以上示出的分表规则仅为示例性的,并不用于限定本申请,在实际应用中,还可以采用以上示出的分表规则以外的其它类型的分表规则,在本申请中不再进行一一详述。2)业务数据的汇总在本例中,上述管控服务器,可以通过对业务服务器拆分存储在多个数据分表中的业务数据进行汇总,并进行集中管控。请参见图2,图2为本例示出的一种管控服务器汇总各数据分表中的业务数据的处理流程图,包括以下执行步骤:步骤201,业务服务器将与已执行业务对应的业务数据存储至对应的数据分表,并在该业务执行完成后,将该业务数据发送至管控服务器;在本例中,对各数据分表中的业务数据进行汇总,可以通过汇总业务服务器通过可靠消息,发送至管控服务器的业务数据来完成。其中,上述可靠消息,是指软件系统之间异步通讯传递的消息,该可靠消息可以通过topic(主题)和eventcode(事件码)来确定消息的发送者与消息的接收者之间的关联,从而可以确保消息在发送者到接收者之间投递的可靠性。在示出的一种实施方式中,业务服务器在业务执行过程中:一方面,业务数据可以将该业务数据存储至业务数据库,并通过预设的分表规则定位与该业务数据对应的数据分库和数据分表,将该业务数据同步插入至对应的数据分表中进行存储;此时插入数据分表的该业务数据对应的业务有可能尚未执行完成,业务服务器还可以继续执行该业务,针对该业务继续进行业务推进;例如,当上述业务数据为订单数据时,此时该订单对应的交易可能尚未支付完成,业务服务器可以继续推进该订单的完成该订单的支付。另一方面,当业务服务器将业务数据插入至对应的数据分表进行存储后,如果该业务数据对应的业务执行完成,业务服务器还可以将该业务的业务数据通过可靠消息,发送至管控服务器,由管控服务器进行汇总。在本例中,存储在各数据分表中的业务数据,以及通过可靠消息发送至管控服务器的业务数据,除了可以包括一些与业务相关的业务信息以外,还可以包括业务数额和该业务数据所在的数据分表的分表标识。例如,在示出的一种投资理财产品的申购场景中,上述业务数据可以是理财产品申购产生的订单数据,在订单数据中除了可以包括一些与申购相关的诸如订单号、投资机构的标识、所属的交易日等信息以外,还可以包括申购的金额(相当于业务数额)、以及该订单存储所在的数据分表的分表标识。可见,通过以上示出的汇总方式,使得业务服务器在将业务数据插入对应的数据分表后,就可以在该业务执行完成后,实时的将该业务数据发送至管控服务器进行汇总,从而实现了业务数据插入数据分表,与业务数据的汇总在功能上的同步性。步骤202,管控服务器接收所述业务服务器发送的各数据分表的业务数据,并统一存储至本地的预设数据表;步骤203,针对所述预设数据表中分表标识相同的业务数据的业务数额进行汇总求和,得到与各分表标识对应的业务总额;步骤204,将与各分表标识对应的业务总额存储至所述预设数据表。在本例中,管控服务器可以将各数据分表中的业务数据,统一汇总至本地的预设数据表中。在该预设数据表中,可以包含汇总后的各数据分表中的业务数据的明细,各数据分表中各业务数据对应的业务数额的汇总结果,以及与各数据分表对应的数据状态等信息。与各数据分表对应的数据状态默认可以设置为数据未完备状态。其中,需要说明的是,在实际应用中,上述预设数据表,可以是管控服务器预先设置的一数据单表,也可以是多张数据表。例如,以上述预设数据表为多张数据表为例,在示出的一种实施方式,上述预设数据表,可以包括一业务数据明细表,和一业务数据汇总表。上述业务数据明细表,用于集中存储接收到的业务数据。上述业务数据汇总表用于存储针对各数据分表中的业务数据的汇总结果,以及各数据分表对应的数据状态。当管控服务器接收到业务服务器通过可靠消息发送至本地的业务数据时:一方面,管控服务器可以实时的将接收到的业务数据统一存储至上述业务数据明细表。通过这种方式,可以基于业务服务器发送的可靠消息,源源不断的将各数据分表中的业务数据汇总到该业务数据明细表中。例如,在示出的一种投资理财产品的申购场景中,上述业务数据可以是理财产品申购产生的订单数据,上述业务数据明细表可以是一订单明细表,该订单明细表的具体格式可以如下表1所示:分表标识订单号投资机构金额所属交易日012015010101001xx_insu20020150101012015010101002xx_insu15020150101042015010104001xx_insu10020150101表1另一方面,对于业务数据明细表中存储的业务数据,由于业务数据中包括业务数据,以及所在数据分表的标识,管控服务器还可以针对业务数据明细表中,分表标识相同的业务数据的业务数额进行实时的汇总求和,得到与各数据分表的分表标识对应的业务总额。当得到与各数据分表对应的业务总额后,可以将与各数据分表对应的业务总额,对应存储至上述业务数据汇总表中。同时,在初始状态下,还可以在上述业务数据汇总表中,将各数据分表对应的数据状态设置为数据未完备状态(即表2示出的false状态)。通过这种方式,管控服务器可以对各数据分表中的业务数据对应的业务总额(即表2示出的累计金额),实时的进行汇总。例如,在示出的一种投资理财产品的申购场景中,上述业务数据可以是理财产品申购产生的订单数据,上述业务数据汇总表可以是一机构每日明细表,该机构每日明细表的具体格式可以如下表2所示,该表2为针对上述表1中的订单数据进行汇总得到:分表标识投资机构累计金额所属交易日分表数据是否完备01xx_insu35020150101false04xx_insu10020150101false表2以上述预设数据表为多张数据表,包括一业务数据明细表,和一业务数据汇总表为例进行了示例性说明。需要强调的是,在实际应用中,上述预设数据表也可以一数据单表,在本实施例中不进行特别限定;例如,当上述预设数据表为一数据单表时,可以将以上示出的业务数据明细表,和业务数据汇总表合并为一张数据表。3)各数据分表的数据完备性检查在本例中,管控服务器可以通过触发定时任务,针对各数据分表中的业务数据进行统一处理。为了确保在上述定时任务触发时,各数据分表中的业务数据均处于数据完备状态,上述管控服务器可以在上述定时任务被触发前的一个指定时间端内(该指定时间段可以基于需求进行自定义设置),启动另一个用于触发各数据分表分别进行数据完备性检查的定时任务,并通过执行该定时任务,定时向各业务服务器发出针对各数据分表的数据检查请求。在示出的一种实施方式中,管控服务器在发送上述数据检查请求时,可以定时检查上述预设数据表中是否存在数据未完备状态的数据分表;当上述所述预设数据表中存在数据未完备状态的数据分表时,管控服务器可以判断针对上述预设数据表中各数据分表的定时处理任务是否被触发;如果未被触发,管控服务器可以向业务服务器发送针对所有数据未完备状态的数据分表的数据检查请求。如果已被触发,此时管控服务器还可以终止该定时处理任务,并输出该定时任务的数据不完备的告警。当业务人员查收到该告警后,可以进行人工干预,对各数据分表的数据完备性进行手动核查和补全。其中,在发出的数据检查请求中,携带数据未完备状态的数据分表的分表标识,以及与该分表标识对应的业务总额。该数据检查请求中携带的分表标识,用于定位需要检查的数据分表;与该分表标识对应的业务总额,用于通过业务总额的数值比较来检查各数据分表中的业务数据是否完备。另外,由于上述预设数据库中,与所有数据分表对应的数据状态,默认情况下均未数据未完备状态,因此在初始状态下,管控服务器会向业务服务器发出针对所有数据分表的数据检查请求。例如,当管控服务器针对如表2所示出的机构每日明细表,向业务服务器发出针对表2中记录的各数据分表的数据检查请求的消息体格式,可以如下所示:{flag=01,instid="xx_insu",amount=350}{flag=04,instid="xx_insu",amount=100}其中,在以上示出的消息体中,flag指分表标识;instid指投资机构的标识;amount是指与该分表标识对应的累计金额。请参见图3,图3为本例示出的一种业务服务器基于接收到的数据检查请求针对各数据分表执行数据完备性检查的处理流程图,包括以下执行步骤:步骤301,获取所述数据检查请求中携带的分表标识,并针对与该分表标识对应的数据分表中的业务数据的业务数额进行汇总求和,得到与该分表标识对应的业务总额;在本例中,当业务服务器接收到管控服务器发送的数据检查请求后,首先可以获取数据检查请求中携带的分表标识,然后基于该分表标识查找对应的数据分表,此时查找到的该数据分表即为需要进行数据完备性检查的数据分表。在这种情况下,业务服务器可以对该数据分表中所有的业务数据对应的业务数额进行汇总求和,得到与该数据分表对应的业务总额。当得到该数据分表对应的业务总额后,业务服务器可以将该业务总额,和该数据检查请求中携带的与该数据分表的分表标识对应的业务总额进行比较。步骤302,判断与该分表标识对应的业务总额,和所述数据检查请求携带的与该分表标识对应的业务总额是否相等;如果相等,确定与该分表标识对应的数据分表通过数据完备性检查;在本例中,如果二者相等,表明该数据分表对应的业务总额,和管控服务器汇总得到的该数据分表对应的业务总额一致,此时该数据分表中的业务数据并不“缺失”,在这种情况下,业务服务器可以确定与该分表标识对应的数据分表通过了数据完备性检查。步骤303,如果不相等,计算与该分表标识对应的业务总额,和所述数据检查请求携带的与该分表标识对应的业务总额之间的差值,并基于所述差值查找与该分表标识对应的数据分表中未汇总至所述预设数据表中的业务数据。在本例中,如果二者不相等,此时业务服务器可以确定与该分表标识对应的数据分表未通过数据完备性检查。在这种情况下,上述管控服务器,可以计算其通过汇总求和计算出的与该分表标识对应的业务总额,和上述数据检查请求携带的与该分表标识对应的业务总额之间的差值,并基于该差值来查找与该分表标识对应的数据分表中未汇总至所述预设数据表中的业务数据。在本例中,当业务服务器完成针对各数据分表的数据完备性检查后,还可以向管控服务器通报检查结果。在示出的一种实施方式中,上述业务服务器可以向管理服务器返回一个响应消息,在该响应消息中可以携带通过数据完备性检查的数据分表的分表标识。例如,当上述表2中记录的数据分表01通过了数据完备性检查请求,该响应消息的消息体可以如下所示:{instid="xx_insu",flag=01,isdone=ture}上述消息体中,isdone=ture表明数据分表01通过了数据完备性检查。在本例中,当管控服务器接收到该响应消息后,可以读取该响应消息中携带的通过数据完备性检查的数据分表的分表标识,此时与该分表标识对应的数据分表的业务总额,与管控服务器在上述预设数据表中汇总得到的业务总额一致,表明该数据分表中的业务数据已经完备。在这种情况下,管控服务器可以在上述预设数据表中,将该数据分表对应的数据状态,由默认的数据未完备状态,修改为数据完备状态;例如,假设用false状态表示数据未完备状态,那么可以将数据状态由false状态修改为true状态,表示数据完备状态。当然,在本例中,对于那些未通过数据完备性检查的数据分表,此时该数据分表中可能仍然存在处于中间状态,未成功汇总至管控服务器的业务数据,在这种情况下,业务服务器还可以对该数据分表中这些“缺失”的业务数据,通过可靠消息补充发送至管控服务器,以对上述预设数据表中的业务数据进行补全。4)补全汇总的业务数据在本例中,管控服务器对上述预设数据表中汇总的业务数据进行补全时,业务服务器补充发送的业务数据通常包含以下两种来源:来源一:数据分表中的未完成状态的业务数据在本例中,业务服务器在从管控服务器发出的数据检查请求中读取了分表标识后,在开启针对与该分表标识对应的数据分表的数据完备性检查之前,可以首先检查该数据分表中是否存在未完成状态的业务数据;如果存在,业务服务器可以继续执行该业务,并在该业务执行完成后,将该业务对应的业务数据通过可靠消息,发送至管控服务器,由管控服务器对该业务数据进行汇总。通过这种方式,可以将数据分表中那些未完成状态的业务数据,补充发送至管控服务器,从而可以避免由于数据分表中存储了该业务数据,而管控服务器未在上述预设数据表中汇总该业务数据,而造成的两方的业务数据不一致的情况发生。来源二:数据分表中未成功投递至管控服务器的业务消息在本例中,当上述管控服务器通过将汇总求和得到的某一待检查的数据分表的业务总额,和接收到的数据检查请求中携带的该数据分表的业务总额进行比较,确定出该数据分表未通过数据完备性检查后,上述管控服务器还可以进一步计算汇总求和得到的业务总额,和数据检查请求中携带的该数据分表的业务总额之间的差值,然后可以基于该差值,来查找该数据分表中未汇总至上述预设数据表中的业务数据。在示出的一种实施方式中,管控服务器在基于上述差值查找该数据分表中未汇总至上述预设数据表中的业务数据时,可以通过如下策略来完成:在一种策略中,管控服务器可以查找该数据分表中业务数额与上述差值完全相同的业务数据。如果该数据分表中存在业务数额和上述差值完全相同的业务数据,那么该业务数据很可能正是上述预设数据表中“缺失”的业务数据。在另一种策略中,管控服务器可以查找该数据分表中,业务数额相加后与上述差值相同的多个业务数据。在这种情况下,管控服务器可以通过遍历该数据分表,将该数据分表中的业务数据依次与其它的业务数据分别进行相加,然后来查找业务数额相加后与上述差值相同的多个业务数据。如果该数据分表中存在业务数额相加后,和上述差值完全相同的多个业务数据,那么该多个业务数据则很可能正是上述预设数据表中“缺失”的多个业务数据。当管控服务器通过以上策略,成功查找到上述预设数据表中“缺失”的业务数据时,可以将查找的业务数据通过可靠消息重新发送至管控服务器,由管控服务器对上述预设数据表中汇总的业务数据进行补全。当然,在实际应用中,当管控服务器确定出任一待检查的数据分表未通过数据完备性检查后,除了以上描述的可以基于上述差值来查找未汇总至上述预设数据表的业务数据以外,也可以默认将该数据分表中所有的业务数据,通过可靠消息补充发送至管控服务器,管控服务器在收到后可以对已汇总的业务数据进行去重,从而完成针对已汇总的业务数据中“缺失”的业务数据的补全操作。在本例中,当管控服务器在上述定时处理任务触发前,通过执行以上描述的针对各数据分表的数据完备性的定时检查机制,以及业务数据的汇总补全机制,将上述预设数据表中各数据分表均标记为数据完备状态,那么管控服务器可以在上述定时任务触发时,基于上述预设数据表中所有数据完备的数据分表中的业务数据,来正常的执行该定时处理任务。可见,在以上实施例中,通过定时针对各数据分表中的业务数据进行数据完备性进行检查,并对管控服务器汇总的业务数据进行补全,可以最大程度的确保上述定时处理任务被触发时,各数据分表中的业务数据的完备性,有效降低待处理的业务数据发生遗漏的概率。以下结合具体的应用场景对以上实施例中的技术方案进行详述。在示出的一种投资理财产品的申购场景中,上述业务数据,可以是理财产品申购产生的订单数据;而上述业务数额,则可以是与订单对应的金额。在投资理财产品的申购场景中,用户通常可以通过理财app申购第三方的投资机构的理财产品,与该理财产品app对接的业务服务器为了提升数据处理性能,可以对用户通过理财app发起理财申购产生的订单数据(相当于上述业务数据)进行分库分表。假设拆分成100张数据分表。该业务服务器可以在每日凌晨触发定时任务,从这100张数据分表中捞取昨日处于支付完成状态的订单数据进行处理,生成投资文件提供给投资机构,由投资机构进行确认以及后续的收益计算等业务操作。然而,在相关技术中,由于订单数据散落于100张数据分表中,这些分表中的订单数据可能会由于系统的原因停留在中间状态(比如未完成支付的状态),而服务器仅会定时捞取那些支付完成状态的订单数据,因此在这种情况下,会导致服务器在定时任务触发后捞取数据时,出现漏单的情况。在本例中,为了解决上述问题,提出一种分布式服务器集群架构,在与理财产品app对接的业务服务器的基础上,进一步引入管控服务器。在上述分布式服务器集群架构中,业务服务器可以将各数据分表中的订单数据,通过可靠消息发送至管控服务器,由管控服务器进行汇总并集中管控。并且,在每日凌晨定时捞取上述100个数据分表中的订单数据生成投资文件的定时任务,将不再由业务服务器来执行,而是由管控服务器来执行。管控服务器在其本地可以预先设置一订单明细表,和一机构每日明细表。上述订单明细表,用于集中存储业务服务器发送的各数据分表中的订单数据。其中,上述订单数据以及上述订单明细表的具体格式可以参见以上实施例中的表1所示。上述机构每日明细表,用于存储针对各数据分表中的订单数据的汇总结果,以及各数据分表对应的数据状态。其中,上述机构每日明细表的具体格式可以参见以上实施例中的表2所示。在本例中,业务服务器负责每日的申购订单的交易执行,每执行一笔订单,可以将相应的订单数据插入对应的数据分表,并在该笔订单完成后,将该笔订单的订单数据通过可靠消息发送至汇总服务器。管控服务器接收到业务服务器通过可靠消息发送的订单数据后,可以将该订单数据统一存储到订单明细表进行汇总,并同步在机构每日明细表中,汇总每一个数据分表中的订单数据对应的累计金额。在本例中,上述机构每日明细表中,每一数据分表对应的数据状态默认为false状态(数据未完备状态)。在针对上述100个数据分表中的订单数据进行处理的定时任务触发前的指定时间段内(比如该定时任务触发前的一个小时之内),管控服务器可以定时向业务服务器发出针对各false状态的数据分表的数据检查请求,在该检查请求中可以携带该数据分表中所有订单数据对应的累计金额。业务服务器在接收到该数据检查请求后,可以读取数据检查请求中的分表标识,并检查与该分表标识对应的数据分表中是否存在未完成状态的订单数据;如果存在未完成状态的订单数据,业务服务器可以继续执行与这些未完成状态的订单数据的交易,并在交易完成后,通过可靠消息将这些订单数据补充发送给管控服务器。如果数据分表中的订单数据对应的交易均已执行完成,不存在未完成状态的订单数据,业务服务器可以对该数据分表中的订单数据对应的累计金额进行汇总求和,并和上述数据检查请求中携带的该数据分表的累计金额进行比较;如果二者数值保持一致,此时该数据分表通过数据完备性检查,业务服务器可以向管控服务器返回响应消息,在该响应消息中携带该通过检查的数据分表的分表标识。管控服务器在收到该响应消息后,可以将该响应消息中携带的分表标识对应的数据分表,在上述机构每日明细表中标记为true状态(数据完备状态)。如果二者数值保持一致,管控服务器可以计算二者的差值,并基于该查找在该数据分表中查找未汇总至上述订单明细表的订单数据,然后将查找到的订单数据通过可靠消息补充发送给管控服务器,由管控服务器对上述订单明细表中汇总的订单数据进行补全。在本例中,管控服务器,可以通过执行以上描述的针对各数据分表的数据完备性的定时检查机制,以及业务数据的汇总补全机制,不断的对上述订单明细表以及上述机构每日明细表中汇总的订单数据进行完善。当上述定时任务触发之前,管控服务器可以核对上述机构每日明细表中被标记为true状态的数据分表的个数是否为100个;如果是,表明所有100个数据分表的数据状态均已完备,此时可以正常的执行上述定时任务,对各数据分表中所有的订单数据进行处理,生成投资文件,发送给投资机构。当然,如果上述定时任务触发后,上述机构每日明细表中被标记为true状态的数据分表的个数不足100个,为了防止漏单,管控服务器可以终止生成上述投资文件的定时任务,并输出订单数据不完备的告警,由业务人员介入进行人工核对,从而可以最大程度的避免“漏单”的发生。通过以上实施例的描述可见,通过定时针对各数据分表中的订单数据进行数据完备性进行检查,并对管控服务器汇总的订单进行补全,可以最大程度的确保上述定时处理任务被触发时,各数据分表中的订单数据的完备性,有效降低“漏单”的概率。以上实施例以投资理财产品的申购场景为例对本申请的技术方案进行了说明,需要指出的是,在实际应用中,本申请的技术方案也可以应用于其它类似的对业务数据进行分库分表的应用场景中,在本申请中不再进行详述。与上述方法实施例相对应,本申请还提供了装置的实施例。请参见图4,本申请提出一种分表数据的完备性检查装置40,应用于分布式服务器集群中的管控服务器,所述分布式服务器集群包括业务服务器以及管控服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;请参见图5,作为承载所述分表数据的完备性检查装置40的管控服务器所涉及的硬件架构中,通常包括cpu、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述分表数据的完备性检查装置40通常可以理解为加载在内存中的计算机程序,通过cpu运行之后形成的软硬件相结合的逻辑装置,所述装置40包括:汇总模块401,将各数据分表中的业务数据汇总至本地的预设数据表;第一发送模块402,在针对所述预设数据表的定时处理任务被触发前,定时向所述业务服务器发出针对各数据分表的数据检查请求,以使所述业务服务器响应于所述数据检查请求对各数据分表执行数据完备性检查;接收模块403,接收到所述业务服务器在完成针对各数据分表的数据完备性检查后,补充发送的业务数据,对所述预设数据表中汇总的业务数据进行补全。在本例中,所述业务数据包括业务数额、以及所在数据分表的分表标识;所述汇总模块401:接收所述业务服务器发送的各数据分表的业务数据,并统一存储至本地的预设数据表;针对所述预设数据表中分表标识相同的业务数据的业务数额进行汇总求和,得到与各分表标识对应的业务总额;将与各分表标识对应的业务总额存储至所述预设数据表。在本例中,所述预设数据表中还包括与各分表标识对应的数据状态;其中,与各分表标识对应的数据状态默认为数据未完备状态;所述第一发送模块402:定时检查所述预设数据表中是否存在数据未完备状态的数据分表;当所述预设数据表中存在数据未完备状态的数据分表时,判断针对所述预设数据表中的定时处理任务是否被触发;如果针对所述预设数据表中的定时处理任务未被触发,向所述业务服务器发送针对所述数据未完备状态的数据分表的数据检查请求;其中,所述数据检查请求携带所述数据未完备状态的数据分表的分表标识,以及与该分表标识对应的业务总额。在本例中,所述第一发送模块402进一步:如果针对所述预设数据表的定时处理任务已被触发,终止该定时任务,并输出该定时任务的数据不完备的告警。在本例中,所述接收模块403进一步:接收到所述业务服务器在完成针对各数据分表的数据完备性检查后,返回的响应消息;所述响应消息携带通过数据完备性检查的数据分表的分表标识;在所述预设数据表中将与所述响应消息中携带的分表标识对应的数据状态标记为数据已完备状态。在本例中,所述业务数据为订单数据;所述业务数额为与订单对应的金额。请参见图6,本申请提出一种分表数据的完备性检查装置60,应用于分布式服务器集群中的业务服务器,所述分布式服务器集群包括业务服务器以及管控服务器;其中,所述业务服务器中的业务数据被拆分存储于若干不同的数据分表;请参见图7,作为承载所述分表数据的完备性检查装置60的业务服务器所涉及的硬件架构中,通常包括cpu、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述分表数据的完备性检查装置60通常可以理解为加载在内存中的计算机程序,通过cpu运行之后形成的软硬件相结合的逻辑装置,所述装置60包括:第二发送模块601,接收管理服务器在针对其本地的预设数据表的定时处理任务被触发前,发送的数据检查请求;其中,所述预设数据表汇总了各数据分表中的业务数据;检查模块602,响应于所述数据检查请求对各数据分表执行数据完备性检查;补全模块603,当完成针对各数据分表的数据完备性检查后,向所述管理服务器补充发送业务数据,以对所述预设数据表中的业务数据进行补全。在本例中,所述第二发送模块601进一步:将与已执行业务对应的业务数据存储至对应的数据分表,并在该业务执行完成后,将该业务数据发送至所述管控服务器,以由所述管控服务器在所述预设数据表中对该业务数据进行汇总。在本例中,所述业务数据包括业务数额、以及所在数据分表的分表标识;所述数据检查请求携带待检查的数据分表的分表标识,以及与该分表标识对应的业务总额;其中,该业务总额为所述预设数据表中具有该分表标识的业务数据的业务数额之和;所述检查模块602:获取所述数据检查请求中携带的分表标识,并针对与该分表标识对应的数据分表中的业务数据的业务数额进行汇总求和,得到与该分表标识对应的业务总额;判断与该分表标识对应的业务总额,和所述数据检查请求携带的与该分表标识对应的业务总额是否相等;如果相等,确定与该分表标识对应的数据分表通过数据完备性检查;如果不相等,计算与该分表标识对应的业务总额,和所述数据检查请求携带的与该分表标识对应的业务总额之间的差值,并基于所述差值查找与该分表标识对应的数据分表中未汇总至所述预设数据表中的业务数据。在本例中,所述检查模块602进一步:在针对与该分表标识对应的数据分表中的业务数据的业务数额进行汇总之前,查询与该分表标识对应的数据分表中是否存在未完成状态的业务数据;如果存在,继续执行该业务,并在该业务完成后,将该业务对应的业务数据发送至所述管控服务器,以由所述管控服务器在所述预设数据表中针对该业务数据进行汇总。在本例中,所述检查模块602进一步:查找与该分表标识对应的数据分表中业务数额与所述差值相同的业务数据;以及,查找与该分表标识对应的数据分表中业务数额相加后与所述差值相同的多个业务数据;将查找到的业务数额与所述差值相同的业务数据;以及,业务数额相加后与所述差值相同的多个业务数据,确定为未汇总至所述预设数据表中的业务数据。在本例中,所述补全模块603:将基于所述差值查找到的未汇总至所述预设数据表中的业务数据补充发送至所述管控服务器;或者,将与该分表标识对应的本地数据分表中的所有业务数据,重新发送至所述管控服务器,以由所述管控服务器对所述预设数据表中汇总的业务数据进行补全。在本例中,所述第二发送模块601:当完成针对各数据分表的数据完备性检查后,向所述管理服务器返回响应消息;所述响应消息携带通过数据完备性检查的数据分表的分表标识,以使所述管控服务器在所述预设数据表中将与该响应消息中携带的分表标识对应的数据状态标记为数据已完备状态。在本例中,所述业务数据为订单数据;所述业务数额为与订单对应的金额。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1