一种缓冲补账方法及装置
技术领域
本说明书一个或多个涉及互联网技术领域,尤其涉及一种缓冲补账方法及装置。
背景技术
目前,随着互联网技术的快速发展,账务处理业务量也随之增大,账务数据库中某些账户常常会在瞬间产生多个并发操作,但所有对应的并发线程中只有一个线程能够持有当前账户的资源锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这种情况会严重影响账务数据库的性能,即对于交易请求量比较大的热点账户,实时记账无法满足需求。为了解决这个问题,通常对账务处理采用缓冲机制,引入缓冲记账,缓冲记账非实时更新账户余额,而是先记录缓冲记账明细,后台异步任务基于缓冲记账明细更新账户余额,即先对账户的交易请求记录临时记账凭证,而将更新账户余额的操作延后,也就是采用缓冲补账的方式对账户余额进行更新,该缓冲补账过程主要是基于记账阶段所生成的缓冲记录对账户进行补账操作,以更新账户余额。
其中,在缓冲补账过程中,每次补账均需要将最近时间发生的所有缓冲账户的缓冲记录补偿到对应的用户账号中,为了降低数据库的并发度,通常会将待缓冲补账的多个缓冲账户进行分组处理,然后,对每个分组中的多个缓冲账户进行一起补偿,当前分组的所有账户均缓冲补账完成之后才会提交事务并生效。在此过程中,一般发生量比较小的缓冲账户的补偿耗时比较短,而发生量比较大的缓冲账户的补偿耗时比较长,此时,该分组中各缓冲账户的缓冲时效会以分组中的最大发生量的账号的时效为最终时效。
由此可知,需要提供一种能够确保账户的缓冲补账时效性的缓冲补账方法。
发明内容
本说明书一个或多个实施例的目的是提供一种缓冲补账方法及装置,通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
为解决上述技术问题,本说明书一个或多个实施例是这样实现的:
本说明书一个或多个实施例提供了一种缓冲补账方法,包括:
基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例提供了一种缓冲补账装置,包括:
分组信息确定模块,用于基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
账户分组模块,用于根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
缓冲补账模块,用于针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例提供了一种缓冲补账设备,包括:处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例提供了一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:
基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例中的缓冲补账方法及装置,首先,基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素;然后,根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合;最后,针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提供的缓冲补账方法的第一种流程示意图;
图2为本说明书一个或多个实施例提供的缓冲补账方法的第二种流程示意图;
图3为本说明书一个或多个实施例提供的缓冲补账方法的具体实现原理示意图;
图4为本说明书一个或多个实施例提供的缓冲补账方法的第三种流程示意图;
图5为本说明书一个或多个实施例提供的缓冲补账方法的第四种流程示意图;
图6为本说明书一个或多个实施例提供的缓冲补账装置的第一种模块组成示意图;
图7为本说明书一个或多个实施例提供的缓冲补账装置的第二种模块组成示意图;
图8为本说明书一个或多个实施例提供的缓冲补账设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书一个或多个中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一个或多个一部分实施例,而不是全部的实施例。基于本说明书一个或多个中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书一个或多个保护的范围。
本说明书一个或多个实施例提供了一种缓冲补账方法及装置,通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
图1为本说明书一个或多个实施例提供的缓冲补账方法的第一种流程示意图,图1中的方法能够由账务处理服务器执行,如图1所示,该方法至少包括以下步骤:
S101,基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素;其中,该分组影响因素是指影响目标账户的缓冲补账耗时的补账属性信息,该分组影响因素可以是多维度影响因素,例如,该补账属性信息可以是缓冲补偿量、缓冲账户类型、缓冲记录起始时间等等,该缓冲账户类型可以是按照缓冲时效性需求分类的;
具体的,在开始基于缓冲记录对目标账户进行缓冲补账之前,先基于业务库中各目标账户的缓冲记录列表,动态获取各目标账户的补账属性信息,将该缓冲补账属性信息确定为目标账户的分组影响因素;
S102,根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合;
具体的,在对多个目标账户进行分组过程中,可以利用预设聚类算法(例如K-means聚类)并结合各目标账户的分组影响因素对多个目标账户进行分组,即确保将缓冲补账时效偏差比较小的多个缓冲账户聚类到同一分组中;
S103,针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额;
其中,为了降低数据库的并发度,将划分到同一分组的多个账户放在一起执行缓冲补账操作,即在同一个补账处理事务中对多个账户进行批量补账操作,由于只有同一分组中多个账户均缓冲补账完成,对应的补账处理事务才提交完成,此时,同一分组的多个账户的缓冲时效均以分组中缓冲补账耗时最长的账户的缓冲时效为准,优选地,确保将缓冲补账时效偏差比较小的多个缓冲账户聚类到同一分组中,这样采用结合特定影响因素进行动态分组的方式能够降低缓冲账户的缓冲偏移,确保目标账户的缓冲补账时效性;
具体的,在分组得到多个缓冲账户集合后,针对每个缓冲账户集合创建对应的补账处理事务,在补账处理事务开启后,事务线程对该缓冲补账集合中的多个目标账户开始进行批量补账操作,事务提交完成表征对该缓冲补账集合中各目标账户的一系列补账操作完全地并行执行完成。
本说明书一个或多个实施例中,通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性,避免因缓冲补账不及时导致账户风险问题。
其中,考虑目标账户的缓冲补偿量是决定缓冲补账耗时的主要因素,基于此,上述基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素,具体包括:
针对每个目标账户,根据该目标账户的缓冲记录列表,确定目标账户对应的缓冲补偿量;其中,该缓冲补偿量是指本轮需要补账的缓冲记录的总条数,其中,在后续缓冲补账过程中,可能需要进行多次捞取缓冲记录,并针对目标账户进行多次缓冲补账;
具体的,由于不同缓冲账号的业务类型不同,导致交易量峰值和高峰时段也不同,因此,针对同一缓冲记账周期,不同的缓冲账户对应的缓冲记录的总条数也不同,从而不同的缓冲账户需要缓冲补账的缓冲补偿量也不同;其中,考虑缓冲账户随时间变化其缓冲补偿量动态变化,针对每一轮缓冲补账,均先结合特定影响因素对多个目标账户进行动态分组;
将确定出的缓冲补偿量确定为目标账户的分组影响因素;
具体的,在开始基于缓冲记录对目标账户进行缓冲补账之前,先基于业务库中各目标账户的缓冲记录列表,动态获取各目标账户的缓冲补偿量,以便将缓冲补偿量差值小于预设阈值的多个目标账户分到同一分组。
其中,针对基于分组影响因素对缓冲账户进行分组的过程,如图2所示,上述S102根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合,具体包括:
S1021,利用预设聚类算法根据各目标账户的分组影响因素,对多个目标账户进行聚类处理,确定多个缓冲账户集合。
在具体实施例时,上述预设聚类算法可以是K-means算法,还可以是DBSCAN聚类算法,也可以是BIRCH聚类算法,基于各聚类算法的优缺点和使用场景,优选地,采用K-means算法对目标账户进行聚类;对应的,利用K-means算法根据各目标账户的分组影响因素,对多个目标账户进行聚类处理,确定多个缓冲账户集合。
具体的,上述利用K-means算法根据各目标账户的分组影响因素,对多个目标账户进行聚类处理,确定多个缓冲账户集合,具体包括:
步骤一,在多个目标账户中,选取K个目标账户分别作为K个类别的聚类中心,其中,K为分类得到的类别的个数;
其中,类别的个数可以是根据实际分组需求确定的,即最终分组得到的缓冲账户集合的数量,K个类别的聚类中心在持续进行账户聚类收敛的过程是不断变化的,首次确定的K个类别的聚类中心可以是从多个目标账户中随机选取的,后续确定的K个类别的聚类中心是根据最新得到的聚类结果确定的,具体的,可以选取簇中所有元素各自维度的算术平均数作为下次K个类别的聚类中心;
步骤二,基于各目标账户的分组影响因素,根据未被选取的多个目标账户与已被选取的K个目标账户的缓冲偏移程度,将未被选取的多个目标账户划分到已被选取的K个目标账户所在账户聚类簇中,得到K个账户聚类簇;
具体的,以分组影响因素为缓冲补偿量为例,针对利用K-means算法并基于缓冲补偿量对目标账户进行聚类的细化过程,具体为:
针对每个未被选取的目标账户,计算该目标账户与已被选取的K个目标账户之间的缓冲补偿量差值;
将未被选取的目标账户划分到缓冲补偿量差值的最小值对应的账户聚类簇;
根据各账户聚类簇中包含的目标账户的缓冲补偿量,重新确定K个账户聚类簇各自的中心作为下次聚类过程使用的已被选取的K个目标账户,直到下次聚类过程使用的聚类中心与本次聚类过程使用的聚类中心之间变化满足预设最小波动条件。
具体的,每次基于选取的K个类别的聚类中心和各目标账户的缓冲补偿量,对多个目标账户划分到对应的账户聚类簇后,先根据该聚类结果确定下一次使用的K个类别的聚类中心,再判断新的K个类别的聚类中心与原聚类中心之间变化是否满足预设最小波动条件,若是,则说明聚类结果趋于收敛,将当前得到的多个聚类簇确定为最终的K个账户聚类簇;
步骤三,将得到的K个账户聚类簇确定为多个缓冲账户集合;
其中,每个账户聚类簇中多个目标账户的缓冲偏移程度是指缓冲补账耗时差值大小,缓冲补账耗时差值越大,缓冲偏移程度越大,被分到同一账户聚类簇的多个目标账户的缓冲补账耗时差值在预设数值范围内,即将缓冲补偿量比较大的目标账户单独缓冲补账处理。
在一个具体实施例中,如图3所示,给出了缓冲补账方法的具体实现原理示意图,具体为:
(1)基于业务库中各目标账户的缓冲记录列表,动态获取各目标账户本轮待补账的缓冲补偿量;
(2)利用K-means聚类算法根据各目标账户的缓冲补偿量,对多个目标账户进行分组处理,确定多个缓冲账户集合;
其中,划分到同一组的账户A和账户B的缓冲补偿量的差值比较小,而划分到另一组的账户C与账户A和账户B的缓冲补偿量的差值比较大;
(3)针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额;
具体的,针对该缓冲账户集合中每个目标账户,从业务库中捞取该目标账户本轮待补账的缓冲记录,在该缓冲账户集合对应的补账处理事务中,基于捞取到的缓冲记录对目标账户进行缓冲补账,并更新该目标账户的账户余额。
进一步的,考虑到在对分组后的目标账户进行批量缓冲补账过程中,如果按照上游业务***记录的交易时间对目标账户的缓冲记录进行捞取并补账,可能存在因上游业务***记录的交易时间错误而导致缓冲记录捞取乱序,进而导致缓冲补账乱序的问题,基于此,如图4所示,上述S103针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额,具体包括:
S1031,针对每个缓冲账户集合中的每个目标账户,根据以记账时间为排序字段得到的各缓冲记录的先后顺序,按照预设数量从该目标账户的缓冲记录列表中依次捞取缓冲记录,其中,业务请求事务标识相同的缓冲记录的记账时间相同,该先后顺序是至少基于记账时间对缓冲记录进行排序确定的;
具体的,在缓冲补账之前,需要先基于上游业务***的业务请求进行缓冲记账,针对每个业务请求,生成对应的缓冲记录,其中,该业务请求即为记账请求,该业务请求携带有业务请求事务标识、交易时间、转入账户、转出账户、转移资源等相关业务信息,该业务请求事务标识是指业务***在进行业务处理所对应的执行事务的标识信息;
其中,为了确保缓冲补账顺序与业务实际发生顺序保持一致,在接收到上游业务***的业务请求时,自动确定该业务请求对应的记账时间,将该记账时间写入针对该业务请求所生成的缓冲记录,即针对接收到的业务请求标记记账时间;同时考虑到两个事务号的业务请求并发处理的情况,将具有同一事务号的多个缓冲记录的记账时间设置为一致;并且,在进行缓冲记录捞取之前,先基于缓冲记录列表中各缓冲记录的记账时间对缓冲记录进行排序,再以预设数量为单位理论捞取数量从排序后的缓冲记录列表中按序捞取缓冲记录;
S1032,针对每次缓冲记录捞取操作,根据实际捞取数量和预设数量的大小关系,在本次捞取到的缓冲记录中选取目标缓冲记录;
具体的,在每次以预设数量为单位理论捞取数量从缓冲记录列表中,按序捞取缓冲记录之后,并非直接将本次捞取到的所有缓冲记录均用于本次缓冲补账,考虑到按照固定数量从缓冲记录列表中捞取缓冲记录,可能存在将同一个业务处理事务号的多个缓冲记录分开的情况,即同属于一个分布式事务的多个分支事务对应的缓冲记录被分开捞取,针对某一业务处理事务号的多条缓冲记录,本次捞取出一部分具有该业务处理事务号的缓冲记录,而具有该业务处理事务号的另外一部分缓冲记录作为下次捞取对象,因此,需要将本次捞取到的且被分拆的缓冲记录舍弃,将这一部分缓冲记录与待捞取的另一部具有相同业务处理事务号的缓冲记录一同留到下一次缓冲补账;
具体的,由于在缓冲记录捞取过程是以预设数量为单位理论捞取数量,而实际捞取数量通常等于该理论捞取数量,但针对待捞取缓冲记录的最后一次捞取,如果剩余的待捞取缓冲记录的条数小于预设数量,此时实际捞取数量将小于理论捞取数量;其中,只要实际捞取数量等于该理论捞取数量均可能存在将同一业务处理事务号的缓冲记录分开的情况,并且由于同一业务处理事务号的多个缓冲记录的记账时间相同,排序结果使得同一业务处理事务号的多条缓冲记录集中,因此,只可能将排序最后的业务处理事务号的多条缓冲记录分开,此时,需要将本次捞取到的包含排序最后的业务处理事务号的至少一条缓冲记录舍弃,留到下一次缓冲补账,即根据实际捞取数量与单位理论捞取数量之间的大小关系确定是否舍弃包含排序最后的业务请求事务标识的缓冲记录;
具体的,针对每次缓冲记录捞取操作,若实际捞取数量等于预设数量,则舍弃本次捞取到的缓冲记录中排序最后的业务请求事务标识的缓冲记录;并将剩余的缓冲记录确定为目标缓冲记录;
以及,将舍弃的缓冲记录重新添加到该目标账户的缓冲记录列表中的头部;即将本次捞取到的预设数量的缓冲记录中包含最后一个事务号的缓冲记录重新补充到待缓冲补账的缓冲记录列表中,并且将该包含最后一个事务号的缓冲记录补充到缓冲记录列表中的最开始,这样下一次缓冲记录捞取时,同时将该缓冲记录与上一次捞取被分开的具有同一事务号的缓冲记录一同捞取出;
若实际捞取数量小于预设数量,则将本次捞取到的缓冲记录均确定为目标缓冲记录,其中,当实际捞取数量小于预设数量时,说明本次缓冲记录捞取操作为本轮最后一次捞取,缓冲记录列表中剩余的缓冲记录的条数小于预设数量,此时,直接将本次捞取到的所有缓冲记录均视为目标缓冲记录;
S1033,在缓冲账户集合对应的补账处理事务中,分别基于各目标账户的目标缓冲记录,对该缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额;
具体的,在针对一个缓冲记账周期所生成的缓冲记录列表进行补账过程中,由后台异步任务从该缓冲记录列表中,分多次批量捞取出所有的缓冲记录,在针对每次捞取到的缓冲记录,筛选出目标缓冲记录之后,根据目标缓冲记录中的账号信息进行一次缓冲补账操作,批量更新目标账户的账户余额,并批量生成相应的交易记录,在针对本次筛选出的目标缓冲记录完成缓冲补账操作后,返回上述步骤S1031继续下一次缓冲记录捞取,直到针对从该缓冲记录列表中最后一次捞取到剩余的缓冲记录完成缓冲补账操作。
本说明书一个或多个实施例中,在基于缓冲记录进行缓冲补账过程中,由于缓冲记账阶段所生成的各缓冲记录包含记账时间,并且具有同一业务处理事务号的多个缓冲记录的记账时间相同,以及待缓冲补账的缓冲记录列表是基于记账时间对缓冲记录进行排序得到的,因此,在进行缓冲记录捞取时,按序从缓冲记录列表中捞取缓冲记录即可;同时,有选择性的从每次捞取到的缓冲记录中选取目标缓冲记录,以便将被分拆的缓冲记录留到下一次补账,这样既能够解决因上游业务***记录的交易时间错误而导致缓冲记录捞取乱序的问题,也能够解决同一业务处理事务号的多个缓冲记录被分开补账的问题,进而实现确保缓冲补账顺序的可控性,避免缓冲补账乱序的问题。
其中,如图5所示,在S101基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素之前,还包括:
S104,针对每个目标账户,根据业务***对该目标账户的记账请求,生成初始缓冲记录列表,其中,该初始缓冲记录列表包括:记账时间字段和业务请求事务标识字段;即上述初始缓冲记录列表包括:某一记账周期内针对上游业务***发送的各记账请求所生成的多个缓冲记录,每个缓冲记录对应于一个记账时间和业务请求事务标识;
具体的,业务请求事务标识即为记账请求中携带的事务标识,针对缓冲记录的记账时间的确定过程,在每次接收到业务***针对目标账户的记账请求后,确定该记账请求对应的当前事务标识、已处理的记账请求对应的历史事务标识;
若历史事务标识中存在当前事务标识,则将与当前事务标识相同的历史事务标识对应的记账时间确定为当前记账时间;
若历史事务标识中不存在当前事务标识,则将当前实际时间确定为当前记账时间;
在初始缓冲记录列表中,添加针对接收到的记账请求所生成的包含当前记账时间的缓冲记录,直到针对该目标账户的某一缓冲记账周期生成的缓冲记录均添加到初始缓冲记录列表中;
S105,根据记账时间字段和业务请求事务标识字段,对初始缓冲记录列表中的多个缓冲记录进行排序;
具体的,在针对目标账户的某一缓冲记账周期生成初始缓冲记录列表之后,以及在进行缓冲记录捞取之前,需要先对初始缓冲记录列表中的多条缓冲记录进行排序处理,在缓冲记录排序过程中,考虑到多个事务号的业务请求进行并发处理的情况,可能存在多个业务处理事务号对应的缓冲记录的记账时间相同的情况,因而,以记账时间为主排序因子且以业务请求事务标识为次排序因子,对初始缓冲记录列表中的多个缓冲记录进行排序;
S106,将排序后的初始缓冲记录列表确定为目标账户的缓冲记录列表,对应的,缓冲记录捞取时参考的先后顺序是以记账时间和业务请求事务标识为排序字段对缓冲记录进行排序确定的;
具体的,针对每个目标账户,最终确定的缓冲记录列表中的多个缓冲记录的先后顺序是以记账时间为主排序因子且以业务请求事务标识为次排序因子进行排序得到的,即先按照记账时间的先后顺序进行排序,在记账时间相同的情况下,再按照业务请求事务标识进行排序,使得记账时间相同且业务处理事务号相同的缓冲记录排在一起,这样保证在缓冲补账阶段所针对的缓冲记录列表中,同一个业务处理事务号的多条缓冲记录集中分布,以使在缓冲记录捞取过程中,同一业务处理事务号的多条缓冲记录捞取完,再捞取下一个业务处理事务号的多条缓冲记录。
本说明书一个或多个实施例中的缓冲补账方法,首先,基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素;然后,根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合;最后,针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
对应上述图1至图5描述的缓冲补账方法,基于相同的技术构思,本说明书一个或多个实施例还提供了一种缓冲补账装置,图6为本说明书一个或多个实施例提供的缓冲补账装置的第一种模块组成示意图,该装置用于执行图1至图5描述的缓冲补账方法,如图6所示,该装置包括:
分组信息确定模块601,用于基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
账户分组模块602,用于根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
缓冲补账模块603,用于针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例中,通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
可选地,所述分组信息确定模块601,具体用于:
针对每个目标账户,根据该目标账户的缓冲记录列表,确定所述目标账户对应的缓冲补偿量;
将所述缓冲补偿量确定为所述目标账户的分组影响因素。
可选地,所述账户分组模块602,具体用于:
利用预设聚类算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合。
可选地,所述利账户分组模块602,进一步具体用于:
利用K-means算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合。
可选地,所述账户分组模块602,更进一步具体用于:
在所述多个目标账户中,选取K个目标账户分别作为K个类别的聚类中心,其中,K为分类得到的类别的个数;
基于各所述目标账户的所述分组影响因素,根据未被选取的多个所述目标账户与已被选取的K个目标账户的缓冲偏移程度,将未被选取的多个所述目标账户划分到已被选取的K个目标账户所在账户聚类簇中,得到K个账户聚类簇;
将所述K个账户聚类簇确定为多个缓冲账户集合。
可选地,所述针缓冲补账模块603,具体用于:
针对每个所述缓冲账户集合中的每个目标账户,从该目标账户的缓冲记录列表中,按照预设数量根据各缓冲记录的先后顺序依次捞取缓冲记录,其中,所述先后顺序是基于记账时间对缓冲记录进行排序确定的,业务请求事务标识相同的缓冲记录的记账时间相同;
针对每次缓冲记录捞取操作,根据实际捞取数量和所述预设数量的大小关系,在本次捞取到的所述缓冲记录中选取目标缓冲记录;
在所述缓冲账户集合对应的补账处理事务中,分别基于各所述目标账户的所述目标缓冲记录,对该缓冲账户集合包含的多个目标账户进行批量补账操作。
可选地,如图7所示,所述装置还包括:
缓冲记账模块604,用于针对每个目标账户,根据业务***对该目标账户的记账请求,生成初始缓冲记录列表,其中,所述初始缓冲记录列表包括:记账时间字段和业务请求事务标识字段;
记录排序模块605,用于根据所述记账时间字段和所述业务请求事务标识字段,对所述初始缓冲记录列表中的多个缓冲记录进行排序;将排序后的初始缓冲记录列表确定为所述目标账户的缓冲记录列表。
本说明书一个或多个实施例中的缓冲补账装置,首先,基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素;然后,根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合;最后,针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
需要说明的是,本说明书中关于缓冲补账装置的实施例与本说明书中关于缓冲补账方法的实施例基于同一发明构思,因此该实施例的具体实施可以参见前述对应的缓冲补账方法的实施,重复之处不再赘述。
进一步地,对应上述图1至图5所示的方法,基于相同的技术构思,本说明书一个或多个实施例还提供了一种缓冲补账设备,该设备用于执行上述的缓冲补账方法,如图8所示。
缓冲补账设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器801和存储器802,存储器802中可以存储有一个或一个以上存储应用程序或数据。其中,存储器802可以是短暂存储或持久存储。存储在存储器802的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对缓冲补账设备中的一系列计算机可执行指令。更进一步地,处理器801可以设置为与存储器802通信,在缓冲补账设备上执行存储器802中的一系列计算机可执行指令。缓冲补账设备还可以包括一个或一个以上电源803,一个或一个以上有线或无线网络接口804,一个或一个以上输入输出接口805,一个或一个以上键盘806等。
在一个具体的实施例中,缓冲补账设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对缓冲补账设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例中,通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
可选地,计算机可执行指令在被执行时,所述基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素,包括:
针对每个目标账户,根据该目标账户的缓冲记录列表,确定所述目标账户对应的缓冲补偿量;
将所述缓冲补偿量确定为所述目标账户的分组影响因素。
可选地,计算机可执行指令在被执行时,所述根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合,包括:
利用预设聚类算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合。
可选地,计算机可执行指令在被执行时,所述利用预设聚类算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合,包括:
利用K-means算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合。
可选地,计算机可执行指令在被执行时,所述利用K-means算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合,包括:
在所述多个目标账户中,选取K个目标账户分别作为K个类别的聚类中心,其中,K为分类得到的类别的个数;
基于各所述目标账户的所述分组影响因素,根据未被选取的多个所述目标账户与已被选取的K个目标账户的缓冲偏移程度,将未被选取的多个所述目标账户划分到已被选取的K个目标账户所在账户聚类簇中,得到K个账户聚类簇;
将所述K个账户聚类簇确定为多个缓冲账户集合。
可选地,计算机可执行指令在被执行时,所述针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,包括:
针对每个所述缓冲账户集合中的每个目标账户,从该目标账户的缓冲记录列表中,按照预设数量根据各缓冲记录的先后顺序依次捞取缓冲记录,其中,所述先后顺序是基于记账时间对缓冲记录进行排序确定的,业务请求事务标识相同的缓冲记录的记账时间相同;
针对每次缓冲记录捞取操作,根据实际捞取数量和所述预设数量的大小关系,在本次捞取到的所述缓冲记录中选取目标缓冲记录;
在所述缓冲账户集合对应的补账处理事务中,分别基于各所述目标账户的所述目标缓冲记录,对该缓冲账户集合包含的多个目标账户进行批量补账操作。
可选地,计算机可执行指令在被执行时,在按照预设数量根据各缓冲记录的先后顺序依次捞取缓冲记录之前,还包括:
针对每个目标账户,根据业务***对该目标账户的记账请求,生成初始缓冲记录列表,其中,所述初始缓冲记录列表包括:记账时间字段和业务请求事务标识字段;
根据所述记账时间字段和所述业务请求事务标识字段,对所述初始缓冲记录列表中的多个缓冲记录进行排序;
将排序后的初始缓冲记录列表确定为所述目标账户的缓冲记录列表。
本说明书一个或多个实施例中的缓冲补账设备,首先,基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素;然后,根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合;最后,针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
需要说明的是,本说明书中关于缓冲补账设备的实施例与本说明书中关于缓冲补账方法的实施例基于同一发明构思,因此该实施例的具体实施可以参见前述对应的缓冲补账方法的实施,重复之处不再赘述。
进一步地,对应上述图1至图5所示的方法,基于相同的技术构思,本说明书一个或多个实施例还提供了一种存储介质,用于存储计算机可执行指令,一种具体的实施例中,该存储介质可以为U盘、光盘、硬盘等,该存储介质存储的计算机可执行指令在被处理器执行时,能实现以下流程:
基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素;
根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合;
针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。
本说明书一个或多个实施例中,通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述基于多个目标账户的缓冲记录列表,确定各所述目标账户的分组影响因素,包括:
针对每个目标账户,根据该目标账户的缓冲记录列表,确定所述目标账户对应的缓冲补偿量;
将所述缓冲补偿量确定为所述目标账户的分组影响因素。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行分组处理,确定多个缓冲账户集合,包括:
利用预设聚类算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述利用预设聚类算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合,包括:
利用K-means算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述利用K-means算法根据各所述目标账户的所述分组影响因素,对所述多个目标账户进行聚类处理,确定多个缓冲账户集合,包括:
在所述多个目标账户中,选取K个目标账户分别作为K个类别的聚类中心,其中,K为分类得到的类别的个数;
基于各所述目标账户的所述分组影响因素,根据未被选取的多个所述目标账户与已被选取的K个目标账户的缓冲偏移程度,将未被选取的多个所述目标账户划分到已被选取的K个目标账户所在账户聚类簇中,得到K个账户聚类簇;
将所述K个账户聚类簇确定为多个缓冲账户集合。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,所述针对每个所述缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对所述缓冲账户集合包含的多个目标账户进行批量补账操作,包括:
针对每个所述缓冲账户集合中的每个目标账户,从该目标账户的缓冲记录列表中,按照预设数量根据各缓冲记录的先后顺序依次捞取缓冲记录,其中,所述先后顺序是基于记账时间对缓冲记录进行排序确定的,业务请求事务标识相同的缓冲记录的记账时间相同;
针对每次缓冲记录捞取操作,根据实际捞取数量和所述预设数量的大小关系,在本次捞取到的所述缓冲记录中选取目标缓冲记录;
在所述缓冲账户集合对应的补账处理事务中,分别基于各所述目标账户的所述目标缓冲记录,对该缓冲账户集合包含的多个目标账户进行批量补账操作。
可选地,该存储介质存储的计算机可执行指令在被处理器执行时,在按照预设数量根据各缓冲记录的先后顺序依次捞取缓冲记录之前,还包括:
针对每个目标账户,根据业务***对该目标账户的记账请求,生成初始缓冲记录列表,其中,所述初始缓冲记录列表包括:记账时间字段和业务请求事务标识字段;
根据所述记账时间字段和所述业务请求事务标识字段,对所述初始缓冲记录列表中的多个缓冲记录进行排序;
将排序后的初始缓冲记录列表确定为所述目标账户的缓冲记录列表。
本说明书一个或多个实施例中的存储介质存储的计算机可执行指令在被处理器执行时,首先,基于多个目标账户的缓冲记录列表,确定各目标账户的分组影响因素;然后,根据各目标账户的分组影响因素,对多个目标账户进行分组处理,确定多个缓冲账户集合;最后,针对每个缓冲账户集合,在该缓冲账户集合对应的补账处理事务中,对缓冲账户集合包含的多个目标账户进行批量补账操作,并更新对应的目标账户的账户余额。通过有针对性的对多个目标账户进行分组,将补账属性信息相当的目标账户划分为一组,避免因同一组的多个目标账户之间缓冲补账进度相差比较大,而影响缓冲补账进度快的目标账户的缓冲补账时效性,从根源上提高目标账户的缓冲补账时效性。
需要说明的是,本说明书中关于存储介质的实施例与本说明书中关于缓冲补账方法的实施例基于同一发明构思,因此该实施例的具体实施可以参见前述对应的缓冲补账方法的实施,重复之处不再赘述。
在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)、HD Cal、JHDL(Java Hardware Description Language)、Lava、Lola、My HDL、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、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书一个或多个的实施例而已,并不用于限制本说明书一个或多个。对于本领域技术人员来说,本说明书一个或多个可以有各种更改和变化。凡在本说明书一个或多个的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个的权利要求范围之内。