CN113129151A - 一种交易处理方法和装置 - Google Patents
一种交易处理方法和装置 Download PDFInfo
- Publication number
- CN113129151A CN113129151A CN202110523758.3A CN202110523758A CN113129151A CN 113129151 A CN113129151 A CN 113129151A CN 202110523758 A CN202110523758 A CN 202110523758A CN 113129151 A CN113129151 A CN 113129151A
- Authority
- CN
- China
- Prior art keywords
- transaction
- task
- thread
- tasks
- end server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种交易处理方法和装置,涉及自动程序设计技术领域。该方法的一具体实施方式包括:接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;生成所述一个或多个交易请求对应的一个或多个交易任务;利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得失败的所述交易任务经所述异常处理线程处理后被重复执行。该实施方式能够对后端异常情况进行自动处理,实现了系统的自运维,减少了人员的介入,提高了系统维护人员的工作效率。
Description
技术领域
本发明涉及自动程序设计技术领域,尤其涉及一种交易处理方法和装置。
背景技术
目前,银行业务系统中经常出现同一账户和多个账户进行大量的业务交易的情况,如企事业单位代发工资、水电煤生活缴费等账务交易,这种账务交易对实时性要求越来越高。
现有技术中,针对后端异常出现转账请求大量失败的情况,需要人工介入处理,降低了工作效率,增加了系统维护人员的工作。
发明内容
有鉴于此,本发明实施例提供一种交易处理方法和装置,能够对后端异常情况进行自动处理,实现了系统的自运维,减少了人员的介入,提高了系统维护人员的工作效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种交易处理方法,包括:
接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;
生成所述一个或多个交易请求对应的一个或多个交易任务;
利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;
当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得失败的所述交易任务经所述异常处理线程处理后被重复执行。
可选地,当所述交易任务执行失败时,对失败的所述交易任务进行异常标记,使得所述异常处理线程根据所述交易任务的异常标记,提取所述交易任务。
可选地,当所述交易任务的执行时长大于预设时长阈值时,确定所述交易任务执行失败。
可选地,该交易方法处理方法还包括:在后端服务器上配置所述任务执行线程;
利用前端服务器接收所述一个或多个交易请求,并利用后端服务器生成所述一个或多个交易任务。
可选地,所述利用后端服务器生成所述一个或多个交易任务,包括:
利用所述前端服务器根据所述交易信息,获得与所述交易请求对应的批次信息;
根据所述批次信息,利用所述后端服务器生成所述一个或多个交易任务;其中,相同批次信息对应同一交易任务。
可选地,利用所述前端服务器根据所述批次信息,将所述一个或多个交易请求转换成JSON格式的第一消息,并将所述第一消息存放至第一消息队列中,所述第一消息队列设置于所述前端服务器中;
利用所述后端服务器从所述第一消息队列中提取所述第一消息,并根据所述第一消息生成所述交易任务。
可选地,所述后端服务器中配置有数据库,所述利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务,包括:
利用调度线程从所述数据库中提取所述一个或多个交易任务,并将提取的所述一个或多个交易任务存储至第二消息队列中;
所述任务执行线程从所述第二消息队列提取所述交易任务,并根据所述交易信息执行所提取的所述交易任务。
可选地,该交易处理方法,还包括:
利用调节线程监控所述后端服务器的工作状态和/或未执行的所述交易任务的数量;
当所述后端服务器的工作状态异常时,调控所述调度线程停止从所述数据库中提取所述交易任务;和/或
当未执行的所述交易任务的数量满足第一预设条件时,调控所述调度线程从所述数据库中提取所述交易任务的频率和/或数量。
可选地,所述后端服务器的工作状态异常包括:外呼后端异常和/或流控异常。
可选地,所述第一预设条件包括:所述交易任务的数量大于预设第一阈值,或,所述交易任务的增长频率大于预设频率。
可选地,当所述调节线程监控到所述后端服务器发生流控时,还包括:
降低所述调度线程从所述数据库中提取所述交易任务的频率和/或数量。
可选地,当所述未执行的所述交易任务的数量大于预设第二阈值时,还包括:
调用云端资源,并利用云端资源创建虚拟机,以利用所述虚拟机执行所述交易任务。
可选地,当所述未执行的所述交易任务的数量大于预设第二阈值时,
确定所述任务执行线程的数量是否不小于预设第三阈值,如果是,执行所述调用云端资源;如果否,利用所述后端服务器的本地资源,增加所述任务执行线程,或增加所述调度线程从所述数据库提取所述交易任务的频率和/或数量;其中,所述第三阈值是根据所述后端服务器可配置的最大线程数得到的。
可选地,当所述未执行的所述交易任务的数量小于预设第四阈值时,还包括:
销毁所述后端服务器上的虚拟机,以释放所述云端资源。
可选地,所述交易信息包括以下任意一个或多个:付款账号、付款总金额、付款对象名称、交易机构名称、收款账号、收款对象名称以及所述收款账号对应的收款金额。
根据本发明实施例的再一个方面,提供了一种交易处理装置,包括:接收模块,任务生成模块,任务执行模块和异常处理模块,其中,
接收模块,用于接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;
任务生成模块,用于生成所述一个或多个交易请求对应的一个或多个交易任务;
任务执行模块,用于利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;
异常处理模块,用于当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得失败的所述交易任务经所述异常处理线程处理后被重复执行。
根据本发明实施例的另一个方面,提供了一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的交易处理方法。
根据本发明实施例的还一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的交易处理方法。
上述发明中的一个实施例具有如下优点或有益效果:通过将接收的一个或多个交易请求生成一个或多个交易任务,由任务执行线程执行上述一个或多个交易任务,当交易任务执行失败时,任务执行线程触发异常处理线程,对执行失败的交易任务进行处理,以使得执行失败的交易任务被重新调度并重复执行。通过对执行失败的交易任务进行重新调度,实现后端异常时系统的自运维,减少了人员的介入,提高了系统运维人员的工作效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种交易处理方法的主要流程的示意图;
图2是根据本发明实施例的另一种交易处理方法的主要流程的示意图;
图3是根据本发明实施例的又一种交易处理方法的主要流程的示意图;
图4是根据本发明实施例的又一种交易处理方法的主要流程的示意图;
图5是根据本发明实施例的一种交易处理方法的架构示意图;
图6是根据本发明实施例的交易处理装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性系统架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种交易处理方法的主要流程的示意图,如图1所示,该交易处理方法包括:
步骤S101:接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息。
在本发明实施例中,利用前端微服务器接收一个或多个交易请求,其中,交易请求可以为转账请求,转账请求指示了转账信息。一个或多个交易请求可以为一个付款账户向一个或多个收款账户进行转账的转账请求,例如,银行系统处理的企事业单位工资代发,农民工监管代发;也可以为一个或多个付款账户向一个收款账号进行转账的转账请求,例如,水电煤生活缴费、公积金代扣、社保代扣等。
在本发明实施例中,交易信息可以包括以下任意一个或多个:付款账号、付款总金额、付款对象名称、交易机构名称、收款账号、收款对象名称以及收款账号对应的收款金额。例如,在处理企业工资代发时,前端服务器接收到企业的代发工资请求,该代发工资请求指示了转账信息,转账信息包括:付款账号、付款总金额、付款对象名称、交易机构名称、收款账号、收款对象名称以及收款账号对应的收款金额,付款账号为企业的账号,付款总金额为发出的工资的总金额,付款对象名称为企业名称,交易机构名称为进行交易的银行机构名称(包括分行),收款账号为员工的银行卡号,收款对象名称为员工的名字,收款金额为员工的工资金额。
步骤S102:生成所述一个或多个交易请求对应的一个或多个交易任务。
本发明实施例中,如图2所示,步骤S102,包括:
步骤S201:利用所述前端服务器根据所述交易信息,获得与所述交易请求对应的批次信息;
步骤S202:根据所述批次信息,利用后端服务器生成所述一个或多个交易任务;其中,相同批次信息对应同一交易任务。
在本发明实施例中,在步骤S201中,利用前端微服务器对交易信息进行解析、入库、校验、核对、分解后,获得批次信息,分解为将需要跨行转账的交易信息和本行交易信息分在不同的批次,从而提高转账效率。其中,批次信息包括批次号和批次明细,批次明细包括收款账号、收款对象名称和收款金额,批次号与批次明细对应,如一个批次号对应多条批次明细。
例如,前端服务器接收到企业代发工资请求,代发工资请求指示了转账信息,前端服务器对转账信息进行解析、校验、核对,分解后,获得批次信息,批次信息包括批次号和批次明细,批次明细包括收款对象名称如账户名称、收款账号如银行卡号、收款金额如工资金额,多条批次明细对应同一批次号,如表1所示。
表1
在本发明实施例中,如图3所示,步骤S202中,包括:
步骤S2021:利用所述前端服务器根据所述批次信息,将所述一个或多个交易请求转换成JSON格式的第一消息,并将第一消息存放至第一消息队列中,其中,第一消息队列设置于前端服务器中;第一消息队列如kafka消息队列。
步骤S2022:利用后端服务器从第一消息队列中提取第一消息,并根据第一消息生成交易任务。其中,相同批次信息对应同一交易任务。
在本发明实施例中,步骤S2022中,后端服务器中配置有消费者线程和数据库,消费者线程每隔预设时间(即定时)从第一消息队列中提取第一消息,并将第一消息转换为第二消息存储至如数据库中,生成交易任务,其中,第二消息的格式与数据库的格式匹配,第二消息包括批次信息,即包括批次号和批次明细。每个批次号对应一个交易任务。
在本发明实施例中,步骤S2022中,还包括:对生成的一个或多个交易任务进行标记,以标记交易任务的状态。具体地,将生成的一个或多个交易任务对应的批次信息的状态标记为A000。
在本发明实施例中,步骤S102中,还包括:对存储至前端服务器的第二消息进行幂等判断,防止第二消息重复落地,避免出现多个相同的批次信息,导致交易任务重复执行。
本发明实施例利用前端服务器将交易请求转化为JSON格式的第一消息,并通过后端服务器(消费者线程)定时从第一消息队列中提取第一消息并发送至数据库中,能够提高交易执行的效率,也能够缓解前端服务器和/或后端服务器运行的压力。
步骤S103:利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务。
在本发明实施例中,后端服务器中配置有数据库,如图4所示,步骤S103,包括:
步骤S301:利用调度线程从数据库中提取一个或多个交易任务,并将提取的一个或多个交易任务存储至第二消息队列中;
步骤S302:所述任务执行线程从所述第二消息队列提取交易任务,并根据批次信息执行所提取的所述交易任务。
在本发明实施例中,步骤S301中,后端服务器配置有数据库,调度线程从数据库中提取一个或多个交易任务,并存储至第二消息队列(如kafka消息队列)中,具体地,调度线程从数据库中提取一个或多个交易任务对应的批次号,对该批次号对应的一个或多个交易任务的状态进行标记,并将批次号存储至第二消息队列中,例如,调度线程从数据库中提取状态为A000的交易任务对应的批次号,将状态标记为A001,同时将批次号存储至第二消息队列中。
在本发明实施例中,调度线程从数据库中提取的交易任务为未执行的交易任务。
在本发明实施例中,调度线程根据预设时间间隔从数据库中提取一个或多个交易任务,其中,预设时间间隔可以动态调整,提取的交易任务的数量也可以动态调整,通过调整预设时间和交易任务的数量,从而能够调整调度线程从数据库中提取交易任务的频率和数量。
在本发明实施例中,调度线程可以为定时的Quartz任务,定时的Quartz任务可以定时从数据库中提取一个或多个状态为A000的交易任务,然后将交易任务的状态改为A001存储至第二消息队列中。
在本发明实施例中,后端服务器配置有任务执行线程,步骤S302,包括:任务执行线程从第二消息队列提取批次号,根据提取的批次号从数据库中获取与该批次号对应的批次明细,利用线程池进行交易处理。例如,任务执行线程从第二消息队列中提取到表1中的批次号1和批次号2,根据批次号1和批次2从数据库中获取到批次号1和批次号2分别对应的批次明细,根据批次明细进行转账处理,核心系统对转账处理进行确认,实现转账成功。
在本发明实施例中,任务执行线程从第二消息队列中提取消息,需要进行反序列化处理得到批次号,根据批次号,从数据库中获取批次号对应的批次明细,并对批次信息进行加锁,防止其他线程再次调用,利用线程池的线程执行交易。
本发明实施例中,任务执行线程在利用线程池执行交易过程中,可以对交易执行的不同阶段进行状态标记,以记录交易执行的进度,从而使得在交易执行失败时,可获知交易任务执行失败的节点,从而在重新执行该交易任务时能够直接从执行失败的节点开始执行,提升工作效率。
例如,线程池在转账处理时,包括账务处理中的阶段,可能还包括账务前处理或账务后处理的阶段,不同的阶段将批次状态进行不同的标记,其中,账务前处理:如在企业代发工资时,在转账之前,为用户查看方便,将一个批次的明细合成一笔记账的处理过程;账务处理中:指的是转账处理过程;账务后处理:如在代收生活缴费时,转账完成后,将一个批次的明细合成一笔记账的处理过程。通过对执行的不同阶段的交易任务的状态进行标记,能够在后端异常时,获知重新执行该交易任务时从哪个阶段开始执行,例如服务器中断重启后,在对明细进行转账时,若账务前处理已完成,则不需再重复进行账务前处理,避免造成错账。
在本发明实施例中,系统启动时会初始化线程池中固定个数的线程,线程的数量可根据需要进行调整,例如,可通过增加或减少单个服务器的线程的数量进行调整,也可以通过增加或减少服务器的数量对线程的数量进行调整。
在本发明实施例中,步骤S103还包括步骤S303,
步骤S303:利用调节线程监控所述后端服务器的工作状态和/或未执行的所述交易任务的数量;
当所述后端服务器的工作状态异常时,调控所述调度线程停止从所述数据库中提取所述交易任务;和/或
当未执行的所述交易任务的数量满足第一预设条件时,调控所述调度线程从所述数据库中提取所述交易任务的频率和/或数量。
在本发明实施例中,调节线程采用定时轮询的方式监控后端服务器的工作状态和/或未执行的所述交易任务的数量,监控线程池活跃线程数,具体地,后端服务器的工作状态、未执行的所述交易任务的数量、线程池中活跃线程的个数均记录在创建的服务运行情况表中,调节线程通过定时轮训服务运行情况表来进行监控。其中,后端服务器的工作状态包括:服务是否正常、是否流控中,后端服务器的工作状态异常包括外呼后端异常和/或流控异常,线程池活跃线程数即为线程池中正在执行交易任务的线程的数量,未执行的交易任务的数量代表后端服务器的繁忙情况。
在本发明实施例中,可以通过核心系统绿灯检查线程定时向核心系统发生绿灯检测探针,以检测后端服务(如外呼后端服务、服务器是否中断等)是否正常,据此更新服务运行情况表中“服务是否正常”,若检测后端服务正常,则记录“是”,若不正常,则记录“否”,调节线程通过轮询的方式获得后端服务器的工作状态。
在本发明实施例中,当后端服务器的工作状态为异常时,包括外呼后端异常和/或流控异常时,调节线程调控调度线程停止调度,即调节线程调控调度线程停止从数据库中提取交易任务,待后端服务器的工作状态恢复正常后,调度线程再恢复调度,即调度线程再恢复从数据库中提取交易任务。
在本发明实施例中,当未执行的交易任务的数量满足第一预设条件时,调控所述调度线程从所述数据库中提取所述交易任务的频率和/或数量,其中,未执行的交易任务为未被调度线程提取的交易任务,第一预设条件包括:交易任务的数量大于预设第一阈值,和/或,交易任务的数量的增长频率大于预设频率。也就是说,当调节线程监控到未执行的交易任务的增长频率大于预设频率,和/或未执行的交易任务的数量大于第一预设阈值时,调节线程调控调度线程提高从数据库中提取交易任务的频率和/或数量。例如,调节线程每5分钟从数据库提取100个交易任务的批次号发送至第二消息队列中,当调节线程监控到未执行的交易任务的数量持续增加,如大于预设第一阈值100,和/或增长频率大于预设频率30个/分钟时,调节线程调控调度线程每3分钟从数据库提取120个交易任务发送至第二消息队列中,从而避免触发流控,保证运行比较平稳,实现调度频率的智能调整。
在本发明实施例中,当未执行的交易任务的数量大于预设第二阈值时,还包括:
调用云端资源,并利用云端资源创建虚拟机,以利用所述虚拟机执行所述交易任务。
在本发明实施例中,当调节线程监控到未执行的交易任务的数量大于预设第二阈值(如300)时,调用公有云的API,利用公有云API创建虚拟机,利用创建的虚拟机执行交易任务,通过创建虚拟机增加线程池中线程的数量。
在本发明实施例中,当未执行的交易任务的数量大于预设第二阈值时,
确定所述任务执行线程的数量是否不小于预设第三阈值,如果是,执行所述调用云端资源;如果否,利用所述后端服务器的本地资源,增加所述任务执行线程,或增加所述调度线程从所述数据库提取所述交易任务的频率和/或数量;其中,所述第三阈值是根据所述后端服务器可配置的最大线程数得到的。
例如,当调节线程监控到未执行的交易任务的数量大于预设第二阈值时,判断任务执行线程的数量是不是不小于预设第三阈值,当任务执行线程的数量不小于预设第三阈值时,调用公有云API创建虚拟机,利用虚拟机执行交易任务;当任务执行线程的数量小于预设第三阈值时,利用后端服务器的本地资源,增加任务执行线程的数量,例如可增加后端服务器的数量或增加每个服务器上开启的线程的个数,从而增加任务执行线程的数量。
在本发明实施例中,当未执行的交易任务的数量小于预设第四阈值时,还包括:销毁后端服务器上的虚拟机,以释放云端资源。
在本发明实施例中,当未执行的交易任务的数量小于预设第四阈值时,确定所述任务执行线程的数量小于预设第五阈值时,若是,销毁后端服务器上的虚拟机,以释放云端资源。例如,当未执行的交易任务的数量40个小于预设第四阈值50个,且任务执行线程的数量5小于预设第五阈值7个时,说明本地资源已可以满足交易任务的调度,则可以销毁后端服务器上创建的虚拟机,来释放云端资源。
本发明实施例中,当调节线程监控到后端服务器发生流控时,还包括:降低调度线程从前端服务器中提取交易任务的频率,和/或提取的交易任务的数量。也就是说,当后端服务器发生流控时,降低调度线程调度的频率和提取的交易任务数量以降低后端服务器的压力,例如,调度线程每5分钟从数据库中提取100个交易任务并发送至第二消息队列中,当调节线程监控到后端服务器的工作状态为流控中时,可以调控调度线程每10分钟从数据库中提取80个交易任务并发送至第二消息队列中。
在本发明实施例中,后端服务器还配置有任务回写线程,用于将提取执行成功的交易任务,组成回盘消息返回给前端服务器,便于用户获知交易处理结果。
在本发明实施例中,如图5所示,后端服务器包括第一后端服务器和第二后端服务器,消费者线程、调度线程、异常处理线程和调节线程配置在第一后端服务器中,任务执行线程配置在第二后端服务器中。第一后端服务器的消费者线程从第一消息队列提取第一消息并落地至数据库中,并从数据库中提取批次号发往第二消息队列中,第二后端服务器从第二消息队列中获取批次号,再根据批次号从数据库获取批次明细进行转账处理,实现了第一后端服务器、第二后端服务器的解耦,第一后端服务器和第二后端服务器分别独立进行预处理和交易处理,使得整个系统运行比较平稳,降低了后端运行的压力,同时也降低了系统运营维护人员的压力。
步骤S104:当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得所述异常处理线程重复执行所述交易任务。
在本发明实施例中,步骤S104,还包括:当交易任务执行失败时,对失败的交易任务进行异常标记,使得异常处理线程根据交易任务的异常标记,提取并执行失败的交易任务。
在本发明实施例中,交易任务执行失败包括因后端服务器异常导致的交易失败和/或因流控异常导致的交易失败。交易任务执行失败包括批次明细中的一条或多条交易执行失败。如表1中批次号1对应的批次明细中,可能因为后端异常或流控异常导致给张三的转账失败,则说明该批次号1的交易任务执行失败,需要重新执行该交易任务。
在本发明实施例中,当交易任务的执行时长大于预设时长阈值时,确定交易任务执行失败。对每个交易任务的执行时长设定时长阈值T0,某个交易任务的执行时长为T,当T>T0值时,确定该交易任务执行失败,并对该失败的交易任务的状态进行异常标记。交易任务的执行时长大于预设时长阈值,可能是由于服务器异常、流控异常导致的,由此说明该交易任务执行失败。
在本发明实施例中,当交易任务执行失败时,任务执行线程对执行失败的交易任务进行异常标记,还包括对交易失败的明细进行标记,同时更新服务运行情况表,调节线程通过轮训该服务运行情况表,确定出现后端异常(外呼后端异常、流控异常),调节线程调控调度线程停止从数据库中提取交易任务。
在本发明实施例中,异常处理线程从数据库中提取异常标记状态的交易任务,并进行解锁,更改异常标记状态,然后将交易任务存储至第二消息队列中,任务执行线程从第二消息队列中提取交易任务,并重复执行该交易任务。例如,异常处理线程从数据库中提取状态标记为A999的交易任务,并对该交易任务进行解锁,更改状态标记为A001,然后将该交易任务存储至第二消息队列中,任务执行线程从第二消息队列中提取状态标记为A001的交易任务来执行交易。
在本发明实施例中,当外呼后端异常导致某个交易任务执行失败时,任务执行线程将执行失败的批次任务的状态进行异常标记,如标记为A999,以表明该批次任务为需要重新执行的交易任务,同时更新服务运行情况表,将“服务是否异常”记录为“是”,调节线程通过轮训服务运行情况表,通过该服务运行情况表中记录的服务异常情况,调控调度线程停止交易任务的调度,即调控调度线程停止从数据库中提取交易任务,待服务恢复正常后再恢复调度。
在本发明实施例中,当因流控异常导致交易任务执行失败时,例如,某个交易任务中的某一条或多条批次明细交易失败时,除了将该交易任务的状态进行异常标记外,还对交易失败的某一条或多条批次明细进行标记,以使得在重新执行该失败的交易任务时,不再重复执行交易成功的批次明细,执行交易失败的批次明细即可。
例如,当流控异常时,如表1中,批次号1中,向张三的转账失败,则该条明细的状态为失败,则将该批次的状态置为A999,并将交易失败的该条明细标记为待重跑(06),同时更新服务运行情况表,将“是否流控”记录为“是”。
本发明实施例所提供的交易处理方法,采用前端服务器和后端服务器的异步处理,并采用多线程高并发的方式进行交易处理,满足实时性要求,采用消息队列,削减交易峰值的压力,使整个交易过程比较平稳,降低了系统运维人员和后端服务器的压力;能够根据后端服务器的工作状态以及自身的繁忙程度,自动调整交易发起的频率,自动扩缩容,实现资源的充分利用,大大降低了设备成本;并且,增加了对后端异常情况的处理,实现自动处理,增强了系统的稳定性,降低了运行维护成本,提高了工作效率。
根据本发明实施例的第二方面,提供一种交易处理装置600。图6所示为根据本发明实施例的交易处理装置的主要模块的示意图,如图6所示,该交易处理装置600包括:接收模块601,任务生成模块602,任务执行模块603和异常处理模块604,其中,
接收模块601,用于接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;
任务生成模块602,用于生成所述一个或多个交易请求对应的一个或多个交易任务;
任务执行模块603,用于利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;
异常处理模块604,用于当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得所述异常处理线程重复执行所述交易任务。
根据本发明实施例的第三方面,提供一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的交易处理方法。
根据本发明实施例的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例提供的交易处理方法。
图7出了可以应用本发明实施例的交易处理方法或交易处理装置的示例性系统架构700。
如图7所示,系统架构700可以包括多个服务器701、702、703、704,网络705。网络705用以在多个服务器701、702、703、704之间提供通信链路的介质。网络705可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
服务器701、702、703、704可以是提供各种服务的服务器,例如对用户利用终端设备所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的数据获取请求等数据进行分析等处理,并将相应的数据反馈给终端设备。
需要说明的是,本发明实施例所提供的交易处理装置一般设置于服务器701、702、703、704中。
应该理解,图7中的网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机系统800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块,任务生成模块,任务执行模块和异常处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“用于接收一个或多个交易请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;生成所述一个或多个交易请求对应的一个或多个交易任务;利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得失败的所述交易任务经所述异常处理线程处理后被重复执行。
根据本发明实施例的技术方案,通过将接收的一个或多个交易请求生成一个或多个交易任务,由任务执行线程执行上述一个或多个交易任务,当交易任务执行失败时,任务执行线程触发异常处理线程,对执行失败的交易任务进行处理,以使得执行失败的交易任务被重新调度并重复执行。通过对执行失败的交易任务进行重新调度,实现后端异常时系统的自运维,减少了人员的介入,提高了系统运维人员的工作效率。利用调节线程智能调控交易执行的频率,实现自动扩缩容,同时使用消息队列,削减了交易峰值的压力,使得系统稳定运行,降低了后端系统的压力。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (18)
1.一种交易处理方法,其特征在于,包括:
接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;
生成所述一个或多个交易请求对应的一个或多个交易任务;
利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;
当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得失败的所述交易任务经所述异常处理线程处理后被重复执行。
2.根据权利要求1所述的方法,其特征在于,
当所述交易任务执行失败时,对失败的所述交易任务进行异常标记,使得所述异常处理线程根据所述交易任务的异常标记,提取所述交易任务。
3.根据权利要求1所述的方法,其特征在于,
当所述交易任务的执行时长大于预设时长阈值时,确定所述交易任务执行失败。
4.根据权利要求1所述的方法,其特征在于,还包括:在后端服务器上配置所述任务执行线程;
利用前端服务器接收所述一个或多个交易请求,并利用后端服务器生成所述一个或多个交易任务。
5.根据权利要求4所述的方法,其特征在于,所述利用后端服务器生成所述一个或多个交易任务,包括:
利用所述前端服务器根据所述交易信息,获得与所述交易请求对应的批次信息;
根据所述批次信息,利用所述后端服务器生成所述一个或多个交易任务;其中,相同批次信息对应同一交易任务。
6.根据权利要求5所述的方法,其特征在于,
利用所述前端服务器根据所述批次信息,将所述一个或多个交易请求转换成JSON格式的第一消息,并将所述第一消息存放至第一消息队列中,所述第一消息队列设置于所述前端服务器中;
利用所述后端服务器从所述第一消息队列中提取所述第一消息,并根据所述第一消息生成所述交易任务。
7.根据权利要求6所述的方法,其特征在于,所述后端服务器中配置有数据库,所述利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务,包括:
利用调度线程从所述数据库中提取所述一个或多个交易任务,并将提取的所述一个或多个交易任务存储至第二消息队列中;
所述任务执行线程从所述第二消息队列提取所述交易任务,并根据所述批次信息执行所提取的所述交易任务。
8.根据权利要求7所述的方法,其特征在于,还包括:
利用调节线程监控所述后端服务器的工作状态和/或未执行的所述交易任务的数量;
当所述后端服务器的工作状态异常时,调控所述调度线程停止从所述数据库中提取所述交易任务;和/或
当未执行的所述交易任务的数量满足第一预设条件时,调控所述调度线程从所述数据库中提取所述交易任务的频率和/或数量。
9.根据权利要求8所述的方法,其特征在于,
所述后端服务器的工作状态异常包括:外呼后端异常和/或流控异常。
10.根据权利要求8所述的方法,其特征在于,
所述第一预设条件包括:所述交易任务的数量大于预设第一阈值,或,所述交易任务的增长频率大于预设频率。
11.根据权利要求8所述的方法,其特征在于,当所述调节线程监控到所述后端服务器发生流控时,还包括:
降低所述调度线程从所述数据库中提取所述交易任务的频率和/或数量。
12.根据权利要求8所述的方法,其特征在于,当所述未执行的所述交易任务的数量大于预设第二阈值时,还包括:
调用云端资源,并利用云端资源创建虚拟机,以利用所述虚拟机执行所述交易任务。
13.根据权利要求11所述的方法,其特征在于,当所述未执行的所述交易任务的数量大于预设第二阈值时,
确定所述任务执行线程的数量是否不小于预设第三阈值,如果是,执行所述调用云端资源;如果否,利用所述后端服务器的本地资源,增加所述任务执行线程,或增加所述调度线程从所述数据库提取所述交易任务的频率和/或数量;其中,所述第三阈值是根据所述后端服务器可配置的最大线程数得到的。
14.根据权利要求12所述的方法,其特征在于,当所述未执行的所述交易任务的数量小于预设第四阈值时,还包括:
销毁所述后端服务器上的虚拟机,以释放所述云端资源。
15.根据权利要求1至14任一所述的方法,其特征在于,所述交易信息包括以下任意一个或多个:付款账号、付款总金额、付款对象名称、交易机构名称、收款账号、收款对象名称以及所述收款账号对应的收款金额。
16.一种交易处理装置,其特征在于,包括:接收模块,任务生成模块,任务执行模块和异常处理模块,其中,
接收模块,用于接收一个或多个交易请求,所述交易请求指示了当前交易的交易信息;
任务生成模块,用于生成所述一个或多个交易请求对应的一个或多个交易任务;
任务执行模块,用于利用任务执行线程根据所述交易信息,执行所述一个或多个交易任务;
异常处理模块,用于当所述交易任务执行失败时,所述任务执行线程触发异常处理线程,使得失败的所述交易任务经所述异常处理线程处理后被重复执行。
17.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-15中任一所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-15中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110523758.3A CN113129151A (zh) | 2021-05-13 | 2021-05-13 | 一种交易处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110523758.3A CN113129151A (zh) | 2021-05-13 | 2021-05-13 | 一种交易处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113129151A true CN113129151A (zh) | 2021-07-16 |
Family
ID=76782032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110523758.3A Pending CN113129151A (zh) | 2021-05-13 | 2021-05-13 | 一种交易处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113129151A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114154991A (zh) * | 2021-12-09 | 2022-03-08 | 兴业银行股份有限公司 | 基于虚拟订单机制的支付交易失败自动重发系统及方法 |
-
2021
- 2021-05-13 CN CN202110523758.3A patent/CN113129151A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114154991A (zh) * | 2021-12-09 | 2022-03-08 | 兴业银行股份有限公司 | 基于虚拟订单机制的支付交易失败自动重发系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105447604B (zh) | 一种账户处理方法及装置 | |
CN101706937A (zh) | 电子银行风险监控方法及系统 | |
CN111160873B (zh) | 基于分布式架构的跑批处理装置及方法 | |
CN110889751B (zh) | 企业资金池管理方法、装置、系统、电子设备及可读介质 | |
CN108897854A (zh) | 一种超时任务的监控方法和装置 | |
CN110263096A (zh) | 基于分布式环境的批处理方法、系统、装置、设备及介质 | |
CN108768837A (zh) | 消息处理方法及相关装置 | |
CN111275415A (zh) | 资源通道的切换方法、装置、设备及存储介质 | |
CN108519920A (zh) | 一种调度重试方法及装置 | |
CN113129151A (zh) | 一种交易处理方法和装置 | |
CN114327804B (zh) | 基于区块链的分布式事务处理方法、装置、设备和介质 | |
CN111078268B (zh) | 银行系统业务处理方法、装置、设备及存储介质 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
CN109697218A (zh) | 基于配置策略的高效异构数据多写方法与系统 | |
CN111767127A (zh) | 一种业务数据处理方法和装置 | |
CN110930238A (zh) | 提高审核任务效率的方法、装置、设备和计算机可读介质 | |
US12067622B2 (en) | System and method for providing an automated trading platform for cross-border settlements | |
CN113608765A (zh) | 数据处理方法、装置、设备以及存储介质 | |
CN113656239A (zh) | 针对中间件的监控方法、装置及计算机程序产品 | |
CN111400283B (zh) | 一种数据处理方法、系统、电子设备及存储介质 | |
CN116719623A (zh) | 作业调度方法、作业结果处理方法及其装置 | |
CN112948081A (zh) | 延时处理任务的方法、装置、设备以及存储介质 | |
CN111259032A (zh) | 一种业务处理方法和装置 | |
CN114283007A (zh) | 一种解决支付热点账户问题的方法及装置、电子设备 | |
CN115437766A (zh) | 一种任务处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |