集群式多线程自动记账批处理方法、装置及系统与流程

文档序号:29136638发布日期:2022-03-05 02:03阅读:162来源:国知局
集群式多线程自动记账批处理方法、装置及系统与流程

1.本发明涉及金融科技领域,具体地涉及一种集群式多线程自动记账批处理方法、一种集群式多线程自动记账批处理装置以及一种集群式多线程自动记账批处理系统。


背景技术:

2.银行账务处理业务逻辑非常复杂,通常按持卡人、atm终端、pos终端、手机银行、二维码等支付方式产生的差错业务进行分类处理。一般持卡人借记卡的差错是本行卡在他行atm上取现但未吐钞,他行发起贷记调整;本行atm的差错是他行卡在我行atm上取现未吐钞,本行出现长款,本行发起贷记调整;pos端的差错是他行卡在本行pos终端上消费后,发起退货。
3.对于发生差错业务后,需要进行差错调整,而差错调账涉及银行各内部户、科目及持卡人账务之前的调账,由于差错与核算分离,导致调账时需要关联差错与清算业务的信息,这样使得自动记账时增加了复杂的逻辑。
4.现有的差错业务的账务处理使用单线程、非集群式方式进行自动记账批处理,尽管实现了自动记账,但是效率不高,多个机器无法随机获取任务,会出现任务跑批进度不均衡现象,导致某个机器的cpu、内存一直使用率高,而其他机器出现空闲现象。且记账失败后无法及时发起重复记账,只能人工核对后进行手工记账。
5.目前系统采用单线程、非集群式方式进行自动记账批处理,按每笔记账需要300ms计算,1个小时大约可以跑1万笔,如果跑50万笔,需要50个小时,即使平均分配给3台机器跑,也需要约16.7小时,完全不能满足业务要求。虽然有多台机器,但是每台机器分配了固定的机构,调用获取数据库信息时,数据库根据机构筛选对应的待跑批数据。实际生产环境中,各个机构每天所对应的业务数据并非完全均匀分配,会出现任务跑批进度不均衡现象,导致某个机器的cpu、内存一直使用率高,而其他机器出现空闲现象。且记账失败后无法及时发起重复记账,只能人工核对后进行手工记账。
6.随着业务的发展,上游供数的增加,原有差错业务的记账功能无法满足要求,为提高系统处理的效率和准确性,以及记账失败后支持系统自动重新记账的功能,迫切需要改变原来的单线程、非集群式记账模式,以满足业务的发展。


技术实现要素:

7.本发明实施方式的目的是提供一种集群式多线程自动记账批处理方法、装置及系统,通过随机获取记账跑批任务来实现不同处理设备的跑批进度基本均衡,均衡各处理设备的cpu、内存的使用率,同时使用多个线程进行跑批处理,提升跑批处理效率。
8.为了实现上述目的,本发明第一方面提供一种集群式多线程自动记账批处理方法,所述方法包括:
9.从集群账务数据库中获取符合随机查询条件的记账跑批任务;所述集群账务数据库中以集群方式存储有不同机构的记账跑批任务;
10.将获取的所述记账跑批任务分配给多个线程进行跑批处理。
11.进一步地,所述从集群账务数据库中获取符合随机查询条件的记账跑批任务,包括:
12.查询集群账务数据库中符合随机查询条件的记账跑批任务;
13.锁定符合随机查询条件的记账跑批任务;
14.将符合随机查询条件的记账跑批任务调取至处理设备。通过随机的查询条件来查询获取记账跑批任务,有效实现了不同处理设备之间的任务数量基本均衡,避免出现单台处理设备的cpu、内存一直使用率高的状况发生,在查询的同时将符合随机查询条件的记账跑批任务锁定,通过锁定的方式将已经被某台处理设备查询到的跑批任务与其他任务区分开。
15.进一步地,所述随机查询条件为:任务状态为待跑批状态;所述待跑批状态包括:正常待跑批状态或技术失败待跑批状态;
16.所述查询集群账务数据库中符合随机查询条件的记账跑批任务,包括:
17.查询集群账务数据库中任务状态为正常待跑批状态或技术失败待跑批状态的记账跑批任务。根据状态来查询记账跑批任务,获取到的任务不再受地域、机构等的影响,有利于实现不同处理设备之间的任务数量基本均衡。
18.进一步地,所述锁定符合随机查询条件的记账跑批任务,包括:
19.将符合随机查询条件的记账跑批任务中的预设数量条记账待跑批任务的状态更新为临时获取状态。查询的过程中跳过了临时获取状态的跑批任务,能够有效避免单笔跑批业务同时被多台处理设备获取,从而避免了账务的重复处理以及因更新数据库冲突导致的报错。
20.进一步地,所述将获取的所述记账跑批任务分配给多个线程进行跑批处理,包括:
21.将获取的所述记账跑批任务发送到无界线程安全队列中;
22.通过多个子线程依次从所述无界线程安全队列中获取记账跑批任务进行跑批处理;其中,在确定当前子线程跑批成功的情况下,从所述无界线程安全队列中获取下一记账跑批任务,直至所述无界线程安全队列中不存在记账跑批任务;
23.跑批结束,休眠等待下一次记账跑批任务。通过无界线程安全队列的方式将多个记账跑批任务分配给多个现场进行跑批处理,做到的有序的分配任务,同时大大提高了同一时间段跑批的任务数。
24.进一步地,所述方法还包括:
25.在确定当前子线程跑批失败的情况下,将本次记账跑批任务的任务状态更新为技术失败待跑批状态;
26.在集群账务数据库中记录当前记账跑批任务跑批失败的次数,并将子线程跑批失败的记账跑批任务重新加载到集群账务数据库中的待跑批任务中。跑批处理失败的记账跑批任务会重新加载到数据库中,实现了及时自动发起重复记账,数据库通过记录失败次数来对记账跑批任务进行管理,避免多次跑批失败的记账跑批任务始终在不同阶段中循环,未能及时完成记账。
27.进一步地,通过多个子线程依次从所述无界线程安全队列中获取记账跑批任务之后,在进行跑批处理之前,执行如下步骤:
28.判断获取的记账跑批任务的任务状态是否为技术失败待跑批状态;
29.若否,则进行跑批处理;
30.若是,判断当前记账跑批任务跑批失败的次数是否达到预设限值,若是,则将本次记账跑批任务的任务状态更新为终止状态;否则,重新发起记账跑批任务,通过子线程根据异常记账流程对重新发起的记账跑批任务进行跑批处理。子线程在跑批前根据记账跑批任务的状态来执行不同的处理,重新发起跑批任务需要进入异常记账流程进行跑批,将技术失败待跑批状态的记账跑批任务与其他任务区分开。
31.本发明第二方面提供一种集群式多线程自动记账批处理系统,所述系统包括:
32.用于存储记账跑批任务的集群账务数据库,以及处理设备,
33.所述处理设备包括:
34.任务获取装置,用于从集群账务数据库中获取符合随机查询条件的记账跑批任务;所述集群账务数据库中以集群方式存储有不同机构的记账跑批任务;以及
35.跑批处理装置,用于将获取的所述记账跑批任务分配给多个线程进行跑批处理。任务获取装置通过随机获取记账跑批任务来实现不同处理设备的跑批进度基本均衡,均衡各处理设备的cpu、内存的使用率;跑批处理装置使用多个线程进行跑批处理,提升跑批处理效率。
36.进一步地,所述任务获取装置包括:
37.查询装置,用于查询集群账务数据库中符合随机查询条件的记账跑批任务;
38.锁定装置,用于锁定符合随机查询条件的记账跑批任务;以及
39.任务调取装置,用于将符合随机查询条件的记账跑批任务调取至处理设备。通过随机的查询条件来查询获取记账跑批任务,有效实现了不同处理设备之间的任务数量基本均衡,避免出现单台处理设备的cpu、内存一直使用率高的状况发生,在查询的同时将符合随机查询条件的记账跑批任务锁定,通过锁定的方式将已经被某台处理设备查询到的跑批任务与其他任务区分开。
40.进一步地,所述跑批处理装置配置有:
41.将获取的所述记账跑批任务发送到无界线程安全队列中的主线程;以及
42.依次从所述无界线程安全队列中获取记账跑批任务进行跑批处理的多个子线程。通过无界线程安全队列的方式将多个记账跑批任务分配给多个现场进行跑批处理,做到的有序的分配任务,同时大大提高了同一时间段跑批的任务数。
43.进一步地,所述主线程还用于将子线程跑批失败的记账跑批任务重新加载到集群账务数据库中的待跑批任务中;
44.所述集群账务数据库还用于记录记账跑批任务跑批失败的次数。跑批处理失败的记账跑批任务会重新加载到数据库中,实现了及时自动发起重复记账,数据库通过记录失败次数来对记账跑批任务进行管理,避免多次跑批失败的记账跑批任务始终在不同阶段中循环,未能及时完成记账。
45.进一步地,所述子线程还用于:
46.判断获取的记账跑批任务的任务状态是否为技术失败待跑批状态;
47.若否,则进行跑批处理;
48.若是,判断当前记账跑批任务跑批失败的次数是否达到预设限值,若是,则将本次
记账跑批任务的任务状态更新为终止状态;否则,重新发起记账跑批任务,通过子线程根据异常记账流程对重新发起的记账跑批任务进行跑批处理。子线程在跑批前根据记账跑批任务的状态来执行不同的处理,重新发起跑批任务需要进入异常记账流程进行跑批,将技术失败待跑批状态的记账跑批任务与其他任务区分开。
49.本发明第三方面提供一种集群式多线程自动记账批处理装置,所述装置包括:
50.数据获取模块,用于从集群账务数据库中随机获取记账跑批任务;以及
51.跑批处理模块,用于将获取的所述记账跑批任务分配给多个线程进行跑批处理。该系统中设置数据获取模块通过随机获取记账跑批任务来实现不同处理设备的跑批进度基本均衡,均衡各处理设备的cpu、内存的使用率,设置跑批处理模块使用多个线程进行跑批处理,提升跑批处理效率。
52.另一方面,本发明提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行所述的集群式多线程自动记账批处理方法。
53.另一方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现所述的集群式多线程自动记账批处理方法。
54.通过上述技术方案,能够实现各类批量跑批任务的效率提升,同时如果某一台处理设备宕机,不影响任务继续执行。
55.本发明实施方式的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
56.附图是用来提供对本发明实施方式的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施方式,但并不构成对本发明实施方式的限制。在附图中:
57.图1是本发明一种实施方式提供的集群式多线程自动记账批处理方法流程图;
58.图2是本发明一种实施方式提供的集群式多线程自动记账批处理方法随机获取记账跑批任务流程图;
59.图3是本发明一种实施方式提供的集群式多线程自动记账批处理详细流程图;
60.图4是本发明一种实施方式提供的集群式多线程自动记账批处理系统结构图;
61.图5是本发明另一种实施方式提供的集群式多线程自动记账批处理系统结构图;
62.图6是本发明一种实施方式提供的无界线程安全队列与子线程连接框图;
63.图7是本发明一种实施方式提供的集群式多线程自动记账批处理系统框图。
具体实施方式
64.以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
65.实施例一
66.图1是本发明一种实施方式提供的集群式多线程自动记账批处理方法流程图。如图1所示,所述方法包括:
67.从集群账务数据库中获取符合随机查询条件的记账跑批任务;所述集群账务数据库中以集群方式存储有不同机构的记账跑批任务;
68.将获取的所述记账跑批任务分配给多个线程进行跑批处理。
69.在一些实施例中,如图2所示,所述从集群账务数据库中获取符合随机查询条件的记账跑批任务,包括:
70.查询集群账务数据库中符合随机查询条件的记账跑批任务;
71.锁定符合随机查询条件的记账跑批任务;
72.将符合随机查询条件的记账跑批任务调取至处理设备。在本技术中,随机查询条件特指与现有的按机构进行分配不相同的条件,通过将各个机构的记账任务同一存储在数据库中,实现集群化,处理设备再通过随机的查询条件获取到跑批任务,这样不同的处理设备能够获取到的跑批任务基本均衡,避免出现单台处理设备的cpu、内存一直使用率高的状况发生,在查询的同时将符合随机查询条件的记账跑批任务锁定,通过锁定的方式将已经被某台处理设备查询到的跑批任务与其他任务区分开。
73.在一个实施例中,所述随机查询条件为:任务状态为待跑批状态;所述待跑批状态包括:正常待跑批状态或技术失败待跑批状态;
74.所述查询集群账务数据库中符合随机查询条件的记账跑批任务,包括:
75.查询集群账务数据库中任务状态为正常待跑批状态或技术失败待跑批状态的记账跑批任务。与现有的按机构进行分配不相同的条件有多种,例如时间段,以时间段作为查询条件需要每次查询分别进行不同的设置,且不同时间段之间容易出现衔接不合理,造成个别任务遗漏,处理不及时。而状态是每个跑批任务都会有的标记,能够全覆盖所有的跑批任务,状态的类别固定,不需要多次设置,根据状态来查询记账跑批任务,获取到的任务不再受地域、机构等的影响,有利于实现不同处理设备之间的任务数量基本均衡。
76.在一些实施例中,所述锁定符合随机查询条件的记账跑批任务,包括:
77.将符合随机查询条件的记账跑批任务中的预设数量条记账待跑批任务的状态更新为临时获取状态。查询的过程中跳过了临时获取状态的跑批任务,能够有效避免单笔跑批业务同时被多台处理设备获取,从而避免了账务的重复处理以及因更新数据库冲突导致的报错。
78.在业务繁忙时期,处于正常待跑批状态或技术失败待跑批状态的跑批任务数量可能超过单台处理设备单词获取的数量,因此,通过预设数量的上线来避免某一台处理设备将任务全部获取了,避免其他设备空闲很长时间。预设数量可以是任意整数,为了更合理的均衡多台处理设备的任务,可以根据历史任务量以及每台设备可以运行的线程数量来设置预设数量。
79.在一些实施例中,所述将获取的所述记账跑批任务分配给多个线程进行跑批处理,包括:
80.将获取的所述记账跑批任务发送到无界线程安全队列oncurrentlindedqueue中;
81.多个子线程依次从无界线程安全队列中获取记账跑批任务进行跑批处理;
82.通过多个子线程依次从所述无界线程安全队列中获取记账跑批任务进行跑批处理;其中,在确定当前子线程跑批成功的情况下,从所述无界线程安全队列中获取下一记账跑批任务,直至所述无界线程安全队列中不存在记账跑批任务;
83.跑批结束,休眠等待下一次记账跑批任务。通过无界线程安全队列的方式将多个记账跑批任务分配给多个现场进行跑批处理,做到的有序的分配任务,同时大大提高了同
一时间段跑批的任务数。
84.需要说明的是,子线程的数量与处理设备的性能相关,处理设备性能越好,能够同时运行的子线程的数量越多,处理速度越快。
85.在一些实施例中,所述方法还包括:
86.在确定当前子线程跑批失败的情况下,将本次记账跑批任务的任务状态更新为技术失败待跑批状态;
87.在集群账务数据库中记录当前记账跑批任务跑批失败的次数,并将子线程跑批失败的记账跑批任务重新加载到集群账务数据库中的待跑批任务中。跑批处理失败的记账跑批任务会重新加载到数据库中,实现了及时自动发起重复记账,数据库通过记录失败次数来对记账跑批任务进行管理,避免多次跑批失败的记账跑批任务始终在不同阶段中循环,未能及时完成记账。
88.在一些实施例中,通过多个子线程依次从所述无界线程安全队列中获取记账跑批任务之后,在进行跑批处理之前,执行如下步骤:
89.判断获取的记账跑批任务的任务状态是否为技术失败待跑批状态;
90.若否,则进行跑批处理;
91.若是,判断当前记账跑批任务跑批失败的次数是否达到预设限值,若是,则将本次记账跑批任务的任务状态更新为终止状态;否则,重新发起记账跑批任务,通过子线程根据异常记账流程对重新发起的记账跑批任务进行跑批处理。子线程在跑批前根据记账跑批任务的状态来执行不同的处理,重新发起跑批任务需要进入异常记账流程进行跑批,以将技术失败待跑批状态的记账跑批任务与其他任务区分开。
92.需要说明的是,本技术中任务状态为终止状态的记账跑批任务并不会一直存储在集群账务数据库中,终止状态的记账跑批任务会通过人工核对后进行手动记账。保障记账数据的完整性。
93.如图3所示是本发明集群式多线程自动记账批处理详细流程图,交易发生后会产生对应的记账跑批任务,在本技术中,不同机构的记账跑批任务以集群方式存储在集群账务数据库中,如图5所示,集群账务数据库与多台处理设备通讯连接。如图3所示,处理设备在初始化后,首先查询集群账务数据库中状态为正常待跑批状态或技术失败待跑批状态的记账跑批任务;然后将正常待跑批状态或技术失败待跑批状态的记账跑批任务中的预设数量条记账待跑批任务的状态更新为临时获取状态,在本实施例中,预设数量为100条。若查询到的记账跑批任务的总数小于或等于100条,则将查询到的记账跑批任务全部更新为临时获取状态,若查询到的记账跑批任务的总数大于100条,则仅仅更新其中100条的状态。为了便于计数,一般更新查询到的记账待跑批任务中的前100条。采用oracle数据库查询跳过锁方式,对获取任务的各个查询进行了互斥,因此临时获取状态的记账待跑批任务不会被其他处理设备获取,有效避免单笔记账同时被多台处理设备获取,临时获取状态的记账待跑批任务会被调取至处理设备。
94.处理设备在获取到记账待跑批任务后,将获取的所述记账跑批任务发送到无界线程安全队列oncurrentlindedqueue中;如图6所示,多个子线程依次从无界线程安全队列中获取记账跑批任务,并判断所述记账跑批任务的任务状态是否为技术失败待跑批状态;若否,则进行跑批处理;若是,则判断当前记账跑批任务跑批失败的次数是否达到预设限值,
若是,则将该记账跑批任务的状态更新为终止状态,重新加载到集群账务数据库中;否则重新发起记账跑批任务,子线程根据异常记账流程对重新发起的记账跑批任务进行跑批处理;子线程跑批成功,从无界线程安全队列中获取下一记账跑批任务,直至无界线程安全队列中不存在记账跑批任务;子线程跑批失败,将该记账跑批任务的状态更新为技术失败待跑批状态;在集群账务数据库中记录该记账跑批任务跑批失败的次数,并将该记账跑批任务重新加载到集群账务数据库中的待跑批任务中;子线程跑批完成,跑批结束,休眠等待下一次任务。
95.实施例二
96.图4是本发明一种实施方式提供的集群式多线程自动记账批处理系统结构图。如图4所示,所述系统包括:
97.用于存储记账跑批任务的集群账务数据库,以及处理设备,
98.所述处理设备包括:
99.任务获取装置,用于从集群账务数据库中获取符合随机查询条件的记账跑批任务;所述集群账务数据库中以集群方式存储有不同机构的记账跑批任务;以及
100.跑批处理装置,用于将获取的所述记账跑批任务分配给多个线程进行跑批处理。任务获取装置通过随机获取记账跑批任务来实现不同处理设备的跑批进度基本均衡,均衡各处理设备的cpu、内存的使用率;跑批处理装置使用多个线程进行跑批处理,提升跑批处理效率。
101.在一些实施例中,一个集群式多线程自动记账批处理系统至少包括一个数据库及多个处理设备。在图5所示的实施例中,该系统包括一个数据库和3个处理设备。
102.在一些实施例中,所述任务获取装置包括:
103.查询装置,用于查询集群账务数据库中符合随机查询条件的记账跑批任务;
104.锁定装置,用于锁定符合随机查询条件的记账跑批任务;以及
105.任务调取装置,用于将符合随机查询条件的记账跑批任务调取至处理设备。通过随机的查询条件来查询获取记账跑批任务,有效实现了不同处理设备之间的任务数量基本均衡,避免出现单台处理设备的cpu、内存一直使用率高的状况发生,在查询的同时将符合随机查询条件的记账跑批任务锁定,通过锁定的方式将已经被某台处理设备查询到的跑批任务与其他任务区分开。
106.在一些实施例中,所述跑批处理装置配置有:
107.将获取的所述记账跑批任务发送到无界线程安全队列中的主线程;以及
108.依次从所述无界线程安全队列中获取记账跑批任务进行跑批处理的多个子线程。通过无界线程安全队列的方式将多个记账跑批任务分配给多个现场进行跑批处理,做到的有序的分配任务,同时大大提高了同一时间段跑批的任务数。
109.需要说明的是,子线程的数量与处理设备的性能相关,处理设备性能越好,能够同时运行的子线程的数量越多,处理速度越快。如图6所示是一个处理设备无界线程安全队列与子线程示意图,该处理设备包括了n个子线程。
110.在一些实施例中,所述主线程还用于将子线程跑批失败的记账跑批任务重新加载到集群账务数据库中的待跑批任务中;
111.所述集群账务数据库还用于记录记账跑批任务跑批失败的次数。跑批处理失败的
记账跑批任务会重新加载到数据库中,实现了及时自动发起重复记账,数据库通过记录失败次数来对记账跑批任务进行管理,避免多次跑批失败的记账跑批任务始终在不同阶段中循环,未能及时完成记账。
112.在一些实施例中,所述子线程还用于:
113.判断获取的记账跑批任务的任务状态是否为技术失败待跑批状态;
114.若否,则进行跑批处理;
115.若是,判断当前记账跑批任务跑批失败的次数是否达到预设限值,若是,则将本次记账跑批任务的任务状态更新为终止状态;否则,重新发起记账跑批任务,通过子线程根据异常记账流程对重新发起的记账跑批任务进行跑批处理。子线程在跑批前根据记账跑批任务的状态来执行不同的处理,重新发起跑批任务需要进入异常记账流程进行跑批,以将技术失败待跑批状态的记账跑批任务与其他任务区分开。
116.实施例三
117.图7是本发明一种实施方式提供的集群式多线程自动记账批处理装置框图。如图7所示,所述装置包括:
118.数据获取模块,用于从集群账务数据库中随机获取记账跑批任务;以及
119.跑批处理模块,用于将获取的所述记账跑批任务分配给多个线程进行跑批处理。该系统中设置数据获取模块通过随机获取记账跑批任务来实现不同处理设备的跑批进度基本均衡,均衡各处理设备的cpu、内存的使用率,设置跑批处理模块使用多个线程进行跑批处理,提升跑批处理效率。
120.另一方面,本发明提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行所述的集群式多线程自动记账批处理方法。
121.另一方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现所述的集群式多线程自动记账批处理方法。
122.本领域技术人员可以理解实现上述实施方式的方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
123.以上结合附图详细描述了本发明的可选实施方式,但是,本发明实施方式并不限于上述实施方式中的具体细节,在本发明实施方式的技术构思范围内,可以对本发明实施方式的技术方案进行多种简单变型,这些简单变型均属于本发明实施方式的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施方式对各种可能的组合方式不再另行说明。
124.此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施方式的思想,其同样应当视为本发明实施方式所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1