一种热点账户批量更新方法、装置、服务器和存储介质与流程

文档序号:17926185发布日期:2019-06-15 00:25阅读:396来源:国知局
一种热点账户批量更新方法、装置、服务器和存储介质与流程

本发明实施例涉及数据处理技术,尤其涉及一种热点账户批量更新方法、装置、服务器和存储介质。



背景技术:

随着技术的飞速发展,企业批处理应用越来越广泛。其中,基于软件开发的复杂性而创建的spring框架成为了批处理应用中的佼佼者。

spring框架下的springbatch子项目是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。springbatch使用java语言并基于spring框架为基础开发,使得已经使用spring框架的开发者或者企业更容易访问和利用企业服务。

在springbatch批处理中,为了提高批处理执行速度,一般会对业务上无特殊要求的数据进行分区处理,对于业务上需要将大批量明细数据经过计算后更新同一条记录的处理,此种业务属于热点账户更新问题,一般仍使用单线程处理,避免更新冲突。

对于热点账户的处理采用单线程处理保证账户同一时刻只有一个更新,不会有脏数据或者更新冲突,但是存在着如下的缺陷:

1、单线程逐条处理所有数据,执行速度慢,整体执行效率低。

2、单线程处理,对cpu、内存、磁盘io不能充分运用,存在服务器资源浪费。



技术实现要素:

本发明实施例提供一种热点账户批量更新方法、装置、服务器和存储介质,以实现可根据服务器cpu、内存和磁盘io能力进行调整配置的并发处理热点账户更新的能力。

第一方面,本发明实施例提供了一种热点账户批量更新方法,包括:

根据预设的分区策略将任务数据划分为多个分区任务;

根据预设的分区策略以所述任务数据关联的多个热点账户为基础生成多组临时账户;

并行处理多个分区任务以对所述多组临时账户进行并行更新;

将更新后的多组临时账户合并至热点账户。

可选的,所述分区策略包括:

获取任务数据的总条数,根据所述任务数据的总条数进行所述多个分区任务的划分;或

获取执行任务数据的计算资源,根据所述计算资源进行所述多个分区任务的划分;或

获取任务数据的总条数以及执行任务数据的计算资源;根据所述任务数据的总条数以及根据所述计算资源进行所述多个分区任务的划分。

可选的,所述分区策略包括:

获取任务数据的总条数,根据所述任务数据的总条数进行所述多组临时账户的生成;或

获取执行任务数据的计算资源,根据所述计算资源进行所述多组临时账户的生成;或

获取任务数据的总条数以及执行任务数据的计算资源;根据所述任务数据的总条数以及根据所述计算资源进行所述多组临时账户的生成。

可选的,所述临时账户为以所述热点账户为基础复制的多组镜像账户。

可选的,所述根据预设的分区策略将任务数据划分为多个分区任务,包括:

获取任务数据的总条数;

获取分区策略对应的配置参数,所述配置参数至少包括分区的个数;

根据所述任务数据的总条数和所述配置参数计算每个分区任务的条数;

设置并保存每个分区任务的参数,以生成分区任务的批量执行的上下文信息。

可选的,所述根据预设的分区策略将任务数据划分为多个分区任务,之后包括:根据预设的分区策略将存储任务数据的数据库划分为多个分区空间,其包括:

获取所有任务数据对应id值的总标识;

根据所述总标识获取任务数据的总条数;

获取所述配置参数对应的分区数量,所述配置参数至少包括分区的个数;

根据所述总条数和所述分区数量确定每个分区的任务的条数;

设置并保存每个分区任务的参数,以生成分区任务的批量执行的上下文信息。

可选的,所述根据预设的分区策略以所述数据任务关联的多个热点账户为基础生成多组临时账户,之后包括:

确认任务数据对应的账户信息是否为多组临时账户中的热点账户;

如果任务数据对应的账户信息不是当前分区中的热点账户,则以任务数据对应的账户信息为基础生成新的临时账户。

可选的,所述并行处理多个分区任务以对所述多组临时账户进行并行更新,包括:

根据所述上下文信息获取任务名;

根据当前分区任务确认需要更新的临时账户;

根据所述任务名对应的任务对所述需要更新的临时账户进行数据更新。

第二方面,本发明实施例还提供了一种热点账户批量更新装置,包括:

分区任务单元,用于根据预设的分区策略将任务数据划分为多个分区任务;

临时账户单元,用于根据预设的分区策略以所述任务数据关联的多个热点账户为基础生成多组临时账户;

并行更新单元,用于并行处理多个分区任务以对所述多组临时账户进行并行更新;

账户合并单元,用于将更新后的多组临时账户合并至热点账户。

第三方面,本发明实施例还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明实施例中任一所述的热点账户批量更新方法。

第四方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例中任一所述的热点账户批量更新方法。

本发明提供的实施例,通过对数据进行分区策略,将热点账户根据数据分区对应镜像复制为多组临时账户,分别使用分区数据对每组临时账户并行处理,然后将多组临时账户的数据汇总至热点账户,避免了多线程直接对热点账户更新会出现的冲突,大大提升了热点账户更新数据的执行速度,实现可根据服务器cpu、内存和磁盘io能力进行调整配置的并发处理热点账户更新的能力。

附图说明

图1是本发明实施例一提供的一种热点账户批量更新方法的流程示意图;

图2是本发明实施例二提供的一种热点账户批量更新装置的结构示意图;

图3为本发明实施例三提供的一种服务器的结构示意图;

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一速度差值为第二速度差值,且类似地,可将第二速度差值称为第一速度差值。第一速度差值和第二速度差值两者都是速度差值,但其不是同一速度差值。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

实施例一

图1为本发明实施例一提供的热点账户批量更新方法的流程图,本实施例可适用于热点账户批量更新情况,该方法可以由热点账户批量更新装置来执行,具体包括如下步骤:

步骤110、根据预设的分区策略将任务数据划分为多个分区任务。

本实施例的任务数据可以是账户流水数据,也可以是交易数据本实施例不做限制。

可选的,所述分区策略包括:获取任务数据的总条数,根据所述任务数据的总条数进行所述多个分区任务的划分;或获取执行任务数据的计算资源,根据所述计算资源进行所述多个分区任务的划分;或获取任务数据的总条数以及执行任务数据的计算资源;根据所述任务数据的总条数以及根据所述计算资源进行所述多个分区任务的划分。本实施例的计算资源包括但不限于服务器cpu资源、内存资源和磁盘io资源或存储资源。一实施例中可以将1千万资金对应的100个热点账户的10万条任务数据划分为10个分区,每个分区包括有1万条任务数据。当然也可以根据计算资源将10万条任务数据划分为100个或更多的分区,本实施例不做限制。

可选的,所述根据预设的分区策略将任务数据划分为多个分区任务,包括:获取任务数据的总条数;获取分区策略对应的配置参数,所述配置参数至少包括分区的个数;根据所述任务数据的总条数和所述配置参数计算每个分区任务的条数;设置并保存每个分区任务的参数,以生成分区任务的批量执行的上下文信息。一实施例中,根据上述的对应的100个热点账户的10万条任务数据获取分区策略对应的配置参数,确定将10万条任务数据分为10个分区,则计算出每个分区的任务数据条数为1万条,根据计算结果生成上下文信息,即生成对应10万条任务数据的10万个id(可以是从1至100000之间的连续数字),并为每个id划分对应分区(1至10分区),例如第50003条任务数据的id为50003,分配的分区为第6分区。10万条任务数据划分完成后生成对应全部10万条任务数据id的总标识,并生成包括总条数为10万、分区数量为10个,每个分区任务数据条数为1万条、每条任务数据的名称及id等信息的分区清单,即上下文信息。

可选的,所述根据预设的分区策略将任务数据划分为多个分区任务,之后包括:根据预设的分区策略将存储任务数据的数据库划分为多个分区空间,其包括:获取所有任务数据对应id值的总标识;根据所述总标识获取任务数据的总条数;获取所述配置参数对应的分区数量,所述配置参数至少包括分区的个数;根据所述总条数和所述分区数量确定每个分区的任务的条数;设置并保存每个分区任务的参数,以生成分区任务的批量执行的上下文信息。本实施例中,通过获取任务数据id的总标识,对需要进行分区存储的数据进行识别,例如确认分为10个分区的10万条任务数据的总条数为10万、分区数量为10个,每个分区任务数据条数为1万条、每条任务数据的名称及id。根据这些信息对数据进行存储并生成存储清单,即上下文信息。

步骤120、根据预设的分区策略以所述任务数据关联的多个热点账户为基础生成多组临时账户。

本实施例的热点账户可以是流水资金量巨大的多个账户,例如单日资金流水总量超过1000万的多个账户,也可以是交易笔数比较集中的多个账户,例如单日交易笔数超过10万条的多个账户。

可选的,所述分区策略包括:获取任务数据的总条数,根据所述任务数据的总条数进行所述多组临时账户的生成;或获取执行任务数据的计算资源,根据所述计算资源进行所述多组临时账户的生成;或获取任务数据的总条数以及执行任务数据的计算资源;根据所述任务数据的总条数以及根据所述计算资源进行所述多组临时账户的生成。

可选的,所述临时账户为以所述热点账户为基础复制的多组镜像账户。一实施例中,如果将1千万资金对应的100个热点账户的10万条任务数据划分为10个分区,每个分区包括有1万条任务数据,则对应将100个热点账户复制10份生成10组临时账户,每组临时账户都是100个热点账户的镜像复制。

可选的,所述根据预设的分区策略以所述数据任务关联的多个热点账户为基础生成多组临时账户,之后包括:确认任务数据对应的账户信息是否为多组临时账户中的热点账户;如果任务数据对应的账户信息不是当前分区中的热点账户,则以任务数据对应的账户信息为基础生成新的临时账户。

本实施例中,当100个热点账户的10万条任务数据都分区完成后,在对其他新的任务数据进一步分区的过程中,如果新的任务数据对应的账户已经在当前的100个热点账户中,则无需生成新的临时账户,如果新的任务数据对应的账户已经不在当前的100个热点账户中,则需要生成新的临时账户。

步骤130、并行处理多个分区任务以对所述多组临时账户进行并行更新。

可选的,所述并行处理多个分区任务以对所述多组临时账户进行并行更新,包括:根据所述上下文信息获取任务名;根据当前分区任务确认需要更新的临时账户;根据所述任务名对应的任务对所述需要更新的临时账户进行数据更新。

一实施例中,如果将1千万资金对应的100个热点账户的10万条任务数据划分为第1至第10分区,每个分区包括有1万条任务数据,则对应将100个热点账户复制10份生成第1至第10组临时账户。则并行将第1分区的1万条任务数据更新到第1组临时账户,将第2分区的1万条任务数据更新到第2组临时账户,…将第10分区的1万条任务数据更新到第10组临时账户。

本实施例中使用spring-batch工具进行分区扩展,在内存中划分不同的缓存用于存储临时账户以及对应的分区任务指向的数据,然后并行调用分区任务指向的数据对多个临时账户进行更行。

步骤140、将更新后的多组临时账户合并至热点账户。

一实施例中,将上述完成更新的第1至第10组临时账户的数据对应合并至100个热点账户中,完成一次并行更新的动作。然后重复步骤110-140对其他需要更新的热点账户进行类似处理,或对相同热点账户的其他任务数据进行类似处理。

本发明提供的实施例,通过对数据进行分区策略,将热点账户根据数据分区对应镜像复制为多组临时账户,分别使用分区数据对每组临时账户并行处理,然后将多组临时账户的数据汇总至热点账户,避免了多线程直接对热点账户更新会出现的冲突,大大提升了热点账户更新数据的执行速度,实现可根据服务器cpu、内存和磁盘io能力进行调整配置的并发处理热点账户更新的能力。

实施例二

本发明实施例所提供的热点账户批量更新装置可执行本发明任意实施例所提供的热点账户批量更新方法,具备执行方法相应的功能模块和有益效果。图2是本发明实施例二提供的一种热点账户批量更新装置的结构示意图,该装置包括:

分区任务单元210,用于根据预设的分区策略将任务数据划分为多个分区任务;

临时账户单元220,用于根据预设的分区策略以所述任务数据关联的多个热点账户为基础生成多组临时账户;

并行更新单元230,用于并行处理多个分区任务以对所述多组临时账户进行并行更新;

账户合并单元240,用于将更新后的多组临时账户合并至热点账户。

可选的,所述分区策略包括:

获取任务数据的总条数,根据所述任务数据的总条数进行所述多个分区任务的划分;或

获取执行任务数据的计算资源,根据所述计算资源进行所述多个分区任务的划分;或

获取任务数据的总条数以及执行任务数据的计算资源;根据所述任务数据的总条数以及根据所述计算资源进行所述多个分区任务的划分。

可选的,所述分区策略包括:

获取任务数据的总条数,根据所述任务数据的总条数进行所述多组临时账户的生成;或

获取执行任务数据的计算资源,根据所述计算资源进行所述多组临时账户的生成;或

获取任务数据的总条数以及执行任务数据的计算资源;根据所述任务数据的总条数以及根据所述计算资源进行所述多组临时账户的生成。

可选的,所述临时账户为以所述热点账户为基础复制的多组镜像账户。

可选的,所述分区任务单元210还用于获取任务数据的总条数;获取分区策略对应的配置参数;根据所述任务数据的总条数和所述配置参数计算每个分区任务的条数;设置并保存每个分区任务的参数,以生成分区任务的批量执行的上下文信息。

可选的,所述分区任务单元210还用于所述根据预设的分区策略将任务数据划分为多个分区任务,之后包括:根据预设的分区策略将存储任务数据的数据库划分为多个分区空间,其包括:获取所有任务数据对应id值的总标识;根据所述总标识获取任务数据的总条数;获取所述配置参数对应的分区数量;根据所述总条数和所述分区数量确定每个分区的任务的条数;设置并保存每个分区任务的参数,以生成分区任务的批量执行的上下文信息。

可选的,临时账户单元220还用于所述根据预设的分区策略以所述数据任务关联的多个热点账户为基础生成多组临时账户,之后包括:确认任务数据对应的账户信息是否为多组临时账户中的热点账户;如果任务数据对应的账户信息不是当前分区中的热点账户,则以任务数据对应的账户信息为基础生成新的临时账户。

可选的,所述并行更新单元230,还用于根据所述上下文信息获取任务名;根据当前分区任务确认需要更新的临时账户;根据所述任务名对应的任务对所述需要更新的临时账户进行数据更新。

本发明提供的实施例,通过对数据进行分区策略,将热点账户根据数据分区对应镜像复制为多组临时账户,分别使用分区数据对每组临时账户并行处理,然后将多组临时账户的数据汇总至热点账户,避免了多线程直接对热点账户更新会出现的冲突,大大提升了热点账户更新数据的执行速度,实现可根据服务器cpu、内存和磁盘io能力进行调整配置的并发处理热点账户更新的能力。

实施例三

图3为本发明实施例五提供的一种服务器的结构示意图,如图3所示,该服务器包括处理器30、存储器31、输入装置32和输出装置33;服务器中处理器30的数量可以是一个或多个,图3中以一个处理器30为例;服务器中的处理器30、存储器31、输入装置32和输出装置33可以通过总线或其他方式连接,图3中以通过总线连接为例。

存储器31作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的热点账户批量更新方法对应的程序指令/模块(例如,热点账户批量更新装置中的分区任务单元210、临时账户单元220、并行更新单元230和账户合并单元240)。处理器30通过运行存储在存储器31中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的热点账户批量更新方法。

存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器31可进一步包括相对于处理器30远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置32可用于接收输入的数字或字符信息,以及产生与服务器的用户设置以及功能控制有关的键信号输入。输出装置33可包括显示屏等显示设备。

实施例四

本发明实施例四还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种热点账户批量更新方法,该方法包括:

根据预设的分区策略将任务数据划分为多个分区任务;

根据预设的分区策略以所述任务数据关联的多个热点账户为基础生成多组临时账户;

并行处理多个分区任务以对所述多组临时账户进行并行更新;

将更新后的多组临时账户合并至热点账户。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的热点账户批量更新方法中的相关操作.

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述热点账户批量更新装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1