CN114283007A - 一种解决支付热点账户问题的方法及装置、电子设备 - Google Patents
一种解决支付热点账户问题的方法及装置、电子设备 Download PDFInfo
- Publication number
- CN114283007A CN114283007A CN202111638738.7A CN202111638738A CN114283007A CN 114283007 A CN114283007 A CN 114283007A CN 202111638738 A CN202111638738 A CN 202111638738A CN 114283007 A CN114283007 A CN 114283007A
- Authority
- CN
- China
- Prior art keywords
- timeout
- time
- thread
- processing
- task
- 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
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请涉及数据分析技术领域,公开了一种解决支付热点账户问题的方法及装置、电子设备,包括:响应于报文抓取指令,通过主线程获取待处理的支付报文,根据支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象;确定在处理任务对象过程中的记账操作结果,按照预设的时间片段统计各时间片段对应的超时指标;响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标加权处理确定综合超时指标;根据综合超时指标调整线程池中的并发线程的数量。以此解决并发对同一账户记账时,该账户被频繁加锁释锁,成为热点账户,导致大量交易记账堵塞超时,严重影响账务一致性的问题。
Description
技术领域
本发明涉及数据分析技术领域,特别涉及一种解决支付热点账户问题的方法及装置、电子设备。
背景技术
近年来,随着经济的增长和支付基础设施的完善,支付业务量迅速增长。支付系统为了满足高吞吐量和时效性的要求,必须并发处理多笔支付交易。每笔支付交易都涉及资金从一个账户转出,或者转入一个账户,均有一个记账处理的过程。在进行记账处理时,为了保证账务一致性,系统会先对账户的资源加排他锁,记账处理完毕后释放锁。但是某个时刻多笔并发处理的交易可能对同一个账户进行记账操作,此时所有对应的并发线程中只有一个线程能够持有当前账户的资源锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这样该账户将会被频繁地加锁释锁,从而成为热点账户,导致多笔交易的记账操作超时,破坏了账务处理的一致性,并且严重影响数据库的性能。
发明内容
本申请的目的是提供一种解决支付热点账户问题的方法及装置、电子设备。用于解决现有多笔并发线程处理的指令可能对同一个账户进行记账操作,此时所有对应的并发线程中只有一个线程能够持有当前账户的排他锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这样该账户将会被频繁地加锁释锁,成为热点账户,导致系统记账操作超时的问题。
第一方面,本申请实施例提供了一种解决支付热点账户问题的方法,所述方法包括:
响应于报文抓取指令,通过主线程获取待处理的支付报文;
根据所述待处理的支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象;
确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,其中,记账操作结果包括是否在预设的时间阈值内处理完成所述记账操作;
响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标;
根据所述综合超时指标调整线程池中的并发线程的数量。
在一些可能的实施例中,确定在处理任务对象过程中的记账操作结果后,还包括:
确定任一线程处理当前任务对象过程中的记账操作的时间超时后,对超时的所述记账操作发起冲正处理,冲正成功后将所述超时的记账操作对应的支付报文进行特殊状态标记;
指定线程定时获取所述特殊状态的支付报文,并采用串行处理方式重新进行包括发起记账操作的处理。
在一些可能的实施例中,根据所述待处理的支付报文生成包括记账操作的任务对象之后,所述方法还包括:
确定任务队列中任务对象数量未超过设定值,且存在未放入任务队列的任务对象时,将所述未放入任务队列的任务对象依次放入任务队列至达到设定数量;
确定任务队列中任务对象数量超过设定值,将未放入队列中的任务对象进行销毁,所述任务对象对应的支付报文将被重新获取;
确定所述线程池中存在空闲线程,从所述任务队列中获取任务对象交给所述空闲线程进行处理,将该获取的任务对象从所述任务队列中移除。
在一些可能的实施例中,确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,包括:
响应于时间片段对象初始化指令,初始化内存中预设数量个时间片段对象,时间片段对象为数量个且与自然时间的时间片段循环对应,且每隔固定时间,对将要使用的多个时间片段对象进行批量初始化;
获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标,包括:
根据当前时间计算所述当前时间对应的时间片段对象在内存中的位置,获取所述时间片段对象之前的若干个时间片段对象,计算所述时间片段对象的超时指标,对所述超时指标进行加权处理确定综合超时指标。
在一些可能的实施例中,按照预设的时间片段分别统计各时间片段对应的超时指标,包括:
按照预设的时间片段分别统计各时间片段内记账操作的总次数;
按照预设的时间片段分别统计各时间片段内记账操作超时的次数;
根据各时间片段对应的记账操作超时的次数与记账操作的总次数的比值,得到该时间片段对应的超时率。
在一些可能的实施例中,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标,包括:
获取当前时间之前邻近的多个时间片段的超时指标,按照距离当前时间越近,对应权重越大的原则确定各时间片段的权重;
根据确定的权重对获取的超时指标进行加权处理确定综合超时指标。
在一些可能的实施例中,根据所述综合超时指标调整线程池中的并发线程的数量,包括:
根据所述综合超时指标确定线程池的预期并发线程数,所述预期并发线程数为大于1的整数,且综合超时指标对应超时程度越高,对应的预期并发线程数越少;
确定当前线程池中的并发线程中的数量超过所述预期并发线程数,待线程处理完当前任务对象后销毁对应的线程,至线程池中的并发线程数量达到所述预期并发线程数;
确定当前线程池中的并发线程数小于所述预期并发线程数,创建新的线程至线程池中的并发线程数量达到所述预期并发线程数。
在一些可能的实施例中,所述综合超时指标为对多个时间片段的超时率加权处理得到的综合超时率,根据所述综合超时指标确定并发线程的预期并发线程数,包括:
预期并发线程数=max{Floor(预设正常值*(1-综合超时率)),1}。
第二方面,本申请实施例提供了一种解决支付热点账户问题的装置,所述装置包括:
获取模块,用于响应于报文抓取指令,通过主线程获取待处理的支付报文;
处理模块,用于根据所述待处理的支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象;
统计模块,用于确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,其中,记账操作结果包括是否在预设的时间阈值内处理完成所述记账操作;
加权模块,用于响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标;
调整模块,用于根据所述综合超时指标调整线程池中的并发线程的数量。
第三方面,本申请实施例提供一种电子设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执上述第一方面提供的解决支付热点账户问题的方法。
第四方面,本申请实施例提供计算机程序产品,包括计算机程序指令,所述计算机程序指令被处理器执行时实现权利要求上述第一方面所述的方法。
第五方面,本申请实施例提供计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行上述第一方面提供的方法。
本申请实施例,为了解决多笔并发线程处理的指令可能对同一个账户进行记账操作,此时所有对应的并发线程中只有一个线程能够持有当前账户的排他锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这样该账户将会被频繁地加锁释锁,成为热点账户,导致系统记账操作超时的问题,本申请实施例为了避免并发线程处理够的报文在数据库发生堆叠积压,所以将并发线程数调小,这样能有效减少处理完成的报文进入数据库的数量,减轻了数据库的压力,提高账务处理成功率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请一个实施例的解决支付热点账户问题的方法的流程示意图;
图2为根据本申请一个实施例的解决支付热点账户问题的方法的时间片段对象HashMap示意图;
图3为根据本申请一个实施例的解决支付热点账户问题的方法的兜底线程处理示意图;
图4为根据本申请一个实施例的解决支付热点账户问题的方法的并发线程处理示意图;
图5为根据本申请一个实施例的解决支付热点账户问题的装置结构示意图;
图6为根据本申请一个实施例的一种电子设备结构示意图。
具体实施方式
下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
在本申请实施例的描述中,除非另有说明,术语“多个”是指两个或两个以上,其它量词与之类似应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者控制设备执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
鉴于相关技术中多笔并发线程处理的指令可能对同一个账户进行记账操作,此时所有对应的并发线程中只有一个线程能够持有当前账户的排他锁,其他线程必须等待该锁被释放后再逐一进行记账处理,这样该账户将会被频繁地加锁释锁,成为热点账户,导致大量交易记账堵塞超时,严重影响账务一致性的问题。本申请提出一种解决支付热点账户问题的方法及装置、电子设备,能够实时监控记账处理的结果,智能调节支付交易的并发处理数,解决了支付过程中的热点账户问题。
有鉴于此,本申请的发明构思为:系统先将报文存放在数据库中,然后由主线程定时抓取待处理的报文放入队列,由线程池中的线程并发处理,记录各并发线程处理任务对象过程中的记账操作的结果,并按照预设的时间片段统计各时间片段对应的超时指标;响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标;根据所述综合超时指标调整线程池中的并发线程的数量。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面结合附图对本申请实施例中的解决支付热点账户问题的方法进行详细说明。
参见图1示出的本申请一个实施例提供的解决支付热点账户问题的方法流程示意图,包括:
步骤101:响应于报文抓取指令,通过主线程获取待处理的支付报文。
待处理报文中包括支付业务相关信息,例如付款账号、付款人名称、付款行行号、收款人账号、收款人名称、收款行行号、金额等等。
为了防止支付系统突然收到大量的待处理报文,导致系统性能出现问题,系统会先将待处理报文存放在数据库中,响应于报文抓取指令,主线程按照预设时间定时从数据库中获取待处理报文。
步骤102,根据所述待处理的支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象。
多个并发线程放置于线程池中,线程池中的各个并发线程负责对具体的任务对象的处理,处理步骤包括记账操作。记账操作的结果累计存储在内存共享区。
即内存共享区记录线程池中的线程在处理具体任务对象时记账操作的结果的累计值。
主线程从数据库中获取待处理的支付报文后,根据报文生成包括记账操作的任务对象,线程池中的多个线程对这些任务对象进行并发处理时,遵循上述排他锁的使用规则。
步骤103,确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,其中,记账操作结果包括是否在预设的时间阈值内处理完成所述记账操作。
预设的时间片段,指将自然时间按照一定的长度分隔而成的时间段,本申请实施例中预设的时间片段长度为5s,即每隔5秒为一个时间片段。
本申请实施例中利用内存缓存相应的数据,以能够实时地从内存中读取进行数据处理,按照预设的时间片段分别统计各时间片段对应的超时指标包括:
响应于时间片段对象初始化指令,初始化内存中预设数量个时间片段对象,时间片段对象为数量个且与自然时间的时间片段循环对应,且每隔固定时间,对将要使用的多个时间片段对象进行批量初始化。
系统中预设了有若干个时间片段对象,本申请实施例中为80个。自然时间的时间片段对应时间片段对象,随着自然时间的流逝,时间片段对象将被循环对应。即最后一个时间片段对象被对应完后,随着时间流逝,自然时间的下一个时间片段将对应第一个时间片段对象。
每隔固定时间,系统对即将要使用的多个时间片段对象批量进行初始化。初始化操作包括将记账操作的累计结果清零。
作为一种可选的实施方式,按照预设的时间片段分别统计各时间片段对应的超时指标,包括:
按照预设的时间片段分别统计各时间片段内记账操作的总次数;
按照预设的时间片段分别统计各时间片段内记账操作超时的次数;
根据各时间片段对应的记账操作超时的次数与记账操作的总次数的比值,得到该时间片段对应的超时率。
具体来讲,系统中用时间片段对象对应自然的时间片段,系统中时间片段对象的类(Class)有两个属性:记账操作的总次数和记账操作超时的次数,其中超时可根据记账操作的响应码判断,系统预先设置一预设时间,当系统发生热点账户问题(表现形式为记账操作超过预设时间),系统在记账操作超时后不再等待记账操作的结果,此时当前时间点对应的时间片段对象的记账操作总笔量和记账操作超时笔数均加1。当系统没有发生热点账户问题(表现形式为记账操作在预设时间内完成),仅对当前时间点对应的时间片段对象的记账操作总笔量加1。
将当前时间点对应的时间片段所对应的时间片段对象用N表示,时间片段对象N的超时率:TimeoutRate(N)=记账超时笔数÷记账总笔数。
步骤104,响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标。
时间片段对象初始化指令每隔固定时间间隔触发一次本实施例中,固定时间间隔为2分钟,则对于任意一个时间点,都可以确定其所对应的时间片段对象,本申请实施例中在触发线程数量调整时,获取的当前时间之前的邻近的多个时间片段对象,具体可以采用如下方式确定当前时间之前最近的一个时间片段所在的时间片段对象:
首先获得当前时间对用的时间片段对象的索引值(即key值)。
系统启动时在内存中即上述的内存共享区中创建时间片段对象的Hash Map(哈希映射),HashMap大小设置为80(可根据具体应用场景调整),参见图2,时间片段对象HashMap示意图,第一列Key表示从0-79的索引号值,第二列中对象引用分别对应从第1个时间片段对象0到第80个时间片段对象79。现举例说明当前时间点与时间片段对象的映射规则,假定时间片段的长度设置为5秒,HashMap中一共有80个时间片段对象,当前时间点是上午9点24分59秒,那么映射规则如下:
步骤1,当日累计秒数=9*60*60+24*60+59=33899;
步骤2,当日累计时间片段数=Floor(当前累计秒数÷5)=6779;
注:Floor()表示取整数部分。
步骤3,当前时间之前最近的一个时间片段所在的时间片段对象的key=当前累计时间片段数%80=59,%表示取余。
由此可知,通过以上计算,当前时间之前最近的一个时间片段所在的时间片段对象对应key索引值为59的时间片段对象。
具体来讲,为了解决热点账户问题,响应于线程数量调整指令,系统获取当前时间之前邻近的多个时间片段的超时指标,按照“距离当前时间越近权重越大”的原则为不同时间片段的超时指标赋予不用的权重值,对这些超时指标进行加权处理确定综合超时指标。
作为一种可选的实施方式,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标,包括:
根据当前时间计算所述当前时间对应的时间片段对象在内存中的位置,获取所述时间片段对象之前的若干个时间片段对象,计算所述时间片段对象的超时指标,对所述超时指标进行加权处理确定综合超时指标。
下表为不同时间片段对象的超时指标的权重值。该权重值可以根据具体应用场景进行调整,但是都需要按照距离当前时间越近,对应权重越大的原则进行赋值。
根据确定的权重对获取的超时指标进行加权处理确定综合超时指标具体指,参见上表,加权处理后的超时率即综合超时指标,
作为一种可选的实施方式,所述综合超时指标为对多个时间片段的超时率加权处理得到的综合超时率,可采用如下公式确定综合超时率:
综合超时率=TimeoutRate(N-1)*40%+TimeoutRate(N-2)*30%+
TimeoutRate(N-3)*20%+TimeoutRate(N-4)*10%。
步骤105,根据所述综合超时指标调整线程池中的并发线程的数量。
作为一种可选的实施方式,根据所述综合超时指标确定线程池的预期并发线程数,所述预期并发线程数为大于1的整数,且综合超时指标对应超时程度越高,对应的预期并发线程数越少。
作为一种可选的实施方式,预期并发线程数通过下面公式求得:
预期并发线程数=max{Floor(预设正常值*(1-综合超时率)),1}。
注:max{}表示取最大值,Floor()表示取整数部分。
具体来讲,本申请中每次调整线程池的并发线程数前,根据当前时间片段对象之前的若干个时间片段对象(标记为N-1、N-2、N-3、N-4等),动态计算线程池的预期并发线程数。
计算过程中,原则为综合超时指标越高,预期并发线程数越少,例如,并发线程池当前的并发线程数是10,预期并发线程数是6,则需要将并发线程池中的并发线程数设置为6,如果这10个并发线程都在执行任务的过程中,那么其中4个并发线程在执行完任务后会被销毁。
作为一种可选的实施方式,当得到预期并发线程数后,确定当前线程池中的并发线程中的数量超过所述预期并发线程数,待线程处理完当前任务对象后销毁对应的线程,至线程池中的并发线程数量达到所述预期并发线程数。
确定当前线程池中的并发线程数小于所述预期并发线程数,创建新的线程至线程池中的并发线程数量达到所述预期并发线程数。
总体来讲,如果当前某个时间点,系统收到了很多针对同一账户的支付报文,即发生了热点账户问题,那么临近当前时间点的多个时间片段的超时率会变高,系统通过计算,将调小线程池的并发线程数,从而减少了记账操作的并发数,账务数据库的压力也将变小,记账操作超时的现象将会消失,热点账户问题得到解决。
当记账操作超时的现象消失后,临近当前时间点的多个时间片段的超时率会变低,系统通过计算,将恢复线程池的并发线程数,按正常的吞吐量对待处理的支付报文进行处理。
本申请中当综合超时指标越高,为了避免大量针对同一账户的记账操作同时进行处理,所以将线程池的并发线程数调小,这样能有效减少针对同一账户记账操作的并发数,减轻了数据库的压力,提高账务处理成功率,避免了热点账户的问题。
作为一种可选的实施方式,确定在处理任务对象过程中的记账操作结果后,还包括:
确定任一线程处理当前任务对象过程中的记账操作的时间超时后,对超时的所述记账操作发起冲正处理,冲正成功后将所述超时的记账操作对应的支付报文进行特殊状态标记;
指定线程定时获取所述特殊状态的支付报文,并采用串行处理方式重新进行包括发起记账操作的处理。
具体来讲,从开始出现热点账户问题,到系统调整线程池的并发线程数之前,会有极少数的任务对象的记账操作步骤超时,对于这些超时的记账操作,系统会发起账务冲正处理,冲正不成功将发起多次冲正,每次冲正的间隔时间越来越长,直至冲正成功。
指定线程在本申请中指兜底线程,为了避免再次造成热点账户问题,兜底线程个数非常少,本实施例中为一个。兜底线程从数据库中抓取被置为特殊态的报文进行处理,如图3所示。由于这些报文数量极少,兜底线程将串行处理这些报文,避免再次造成热点账户问题。
作为一种可选的实施方式,根据所述待处理的支付报文生成包括记账操作的任务对象之后,所述方法还包括:
确定任务队列中任务对象数量未超过设定值,且存在未放入任务队列的任务对象时,将所述未放入任务队列的任务对象依次放入任务队列至达到设定数量;
确定任务队列中任务对象数量超过设定值,将未放入队列中的任务对象进行销毁,所述任务对象对应的支付报文将被重新获取;
确定所述线程池中存在空闲线程,从所述任务队列中获取任务对象交给所述空闲线程进行处理,将该获取的任务对象从所述任务队列中移除。
具体来讲,本申请中响应于报文抓取指令时,获取的待处理的支付报文包括之前被销毁的任务对象对应的支付报文。
任务队列为放置主线程获取的待处理报文生成的任务对象的队列,任务队列中放置任务对象的数量存在一个设定值,也就是任务队列可以容纳的最大任务对象的数量。
任务队列的最大设定值(即队列长度),可以根据具体业务场景设置。具体来讲,主线程将任务对象放入任务队列,线程池的并发线程从任务队列中获取任务对象是一个动态的“生产和消费”的过程。即主线程作为生产者,将任务对象放入任务队列,如果队列已满,主线程会将未放入队列中的任务对象销毁,其所对应的报文将会被主线程在下次定时抓取报文时重新获取。线程池的并发线程作为消费者,一旦空闲就从队列中获取任务对象进行处理,此时该任务对象从队列中移除。任务对象的入队和出队遵循“先入先出”的原则。
作为一种可选的实施方式,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标,包括:
获取当前时间之前邻近的多个时间片段的超时指标,按照距离当前时间越近,对应权重越大的原则确定各时间片段的权重;
根据确定的权重对获取的超时指标进行加权处理确定综合超时指标。
总的来说,参见图4,本申请解决支付热点账户问题的方法中并发处理框架具体为:
首先,主线程定时从数据库中获取待处理报文;根据所述待处理报文生成包含记账操作的任务对象,并将任务对象放入任务队列中;线程池的线程一旦有空闲,就会从任务队列中获取任务对象进行处理;线程池中的多个线程并发处理当前未处理的任务对象;线程处理任务对象时,记账操作的结果会按时间片段累计存放在内存共享区。调整线程根据这些记账操作的结果调整线程池的线程数量,以控制记账操作的并发数,从而解决热点账户问题。
实施例2
基于相同的发明构思,本申请还提供一种解决支付热点账户问题的装置,如图5所示,该装置包括:
获取模块501,用于响应于报文抓取指令,通过主线程获取待处理的支付报文;
处理模块502,用于根据所述待处理的支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象;
统计模块503,用于确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,其中,记账操作结果包括是否在预设的时间阈值内处理完成所述记账操作;
加权模块504,用于响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标;
调整模块505,用于根据所述综合超时指标调整线程池中的并发线程的数量。
可选地,统计模块503确定在处理任务对象过程中的记账操作结果后还用于:
确定任一线程处理当前任务对象过程中的记账操作的时间超时后,对超时的所述记账操作发起冲正处理,冲正成功后将所述超时的记账操作对应的支付报文进行特殊状态标记;
指定线程定时获取所述特殊状态的支付报文,并采用串行处理方式重新进行包括发起记账操作的处理。
可选地,处理模块502根据所述待处理的支付报文生成包括记账操作的任务对象之后,还用于:
确定任务队列中任务对象数量未超过设定值,且存在未放入任务队列的任务对象时,将所述未放入任务队列的任务对象依次放入任务队列至达到设定数量;
确定任务队列中任务对象数量超过设定值,将未放入队列中的任务对象进行销毁,所述任务对象对应的支付报文将被重新获取;
确定所述线程池中存在空闲线程,从所述任务队列中获取任务对象交给所述空闲线程进行处理,将该获取的任务对象从所述任务队列中移除。
可选地,统计模块503具体用于:
响应于时间片段对象初始化指令,初始化内存中预设数量个时间片段对象,时间片段对象为数量个且与自然时间的时间片段循环对应,且每隔固定时间,对将要使用的多个时间片段对象进行批量初始化。
可选地,加权模块504具体用于:
根据当前时间计算所述当前时间对应的时间片段对象在内存中的位置,获取所述时间片段对象之前的若干个时间片段对象,计算所述时间片段对象的超时指标,对所述超时指标进行加权处理确定综合超时指标。
可选地,统计模块503具体用于:
按照预设的时间片段分别统计各时间片段内记账操作的总次数;
按照预设的时间片段分别统计各时间片段内记账操作超时的次数;
根据各时间片段对应的记账操作超时的次数与记账操作的总次数的比值,得到该时间片段对应的超时率。
可选地,加权模块504具体用于:
获取当前时间之前邻近的多个时间片段的超时指标,按照距离当前时间越近,对应权重越大的原则确定各时间片段的权重;
根据确定的权重对获取的超时指标进行加权处理确定综合超时指标。
可选地,调整模块505具体用于:
根据所述综合超时指标确定线程池的预期并发线程数,所述预期并发线程数为大于1的整数,且综合超时指标对应超时程度越高,对应的预期并发线程数越少;
确定当前线程池中的并发线程中的数量超过所述预期并发线程数,待线程处理完当前任务对象后销毁对应的线程,至线程池中的并发线程数量达到所述预期并发线程数;
确定当前线程池中的并发线程数小于所述预期并发线程数,创建新的线程至线程池中的并发线程数量达到所述预期并发线程数。
可选地,所述综合超时指标为对多个时间片段的超时率加权处理得到的综合超时率,调整模块505具体用于:
预期并发线程数=max{Floor(预设正常值*(1-综合超时率)),1}。
在介绍了本申请示例性实施方式的解决支付热点账户问题的方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本申请的电子设备可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的解决支付热点账户问题的方法中的步骤。
下面参照图6来描述根据本申请的这种实施方式的电子设备130,即上述解决支付热点账户问题的设备。图6显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的一种解决支付热点账户问题的方法的各个方面还可以实现为一种程序产品的形式,包括计算机程序指令,所述计算机程序指令被处理器执行本说明书上述描述的根据本申请各种示例性实施方式的一种解决支付热点账户问题的方法的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在一些可能的实施方式中,本申请提供的一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行本说明书上述描述的根据本申请各种示例性实施方式的一种解决支付热点账户问题的方法的步骤。
本申请的实施方式的用于监控的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务端上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和方框图来描述的。应理解可由计算机程序指令实现流程图和方框图中的每一流程和/或方框、以及流程图和方框图中的流程和方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种解决支付热点账户问题的方法,其特征在于,所述方法包括:
响应于报文抓取指令,通过主线程获取待处理的支付报文;
根据所述待处理的支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象;
确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,其中,记账操作结果包括是否在预设的时间阈值内处理完成所述记账操作;
响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标;
根据所述综合超时指标调整线程池中的并发线程的数量。
2.根据权利要求1所述的方法,其特征在于,确定在处理任务对象过程中的记账操作结果后,还包括:
确定任一线程处理当前任务对象过程中的记账操作的时间超时后,对超时的所述记账操作发起冲正处理,冲正成功后将所述超时的记账操作对应的支付报文进行特殊状态标记;
指定线程定时获取所述特殊状态的支付报文,并采用串行处理方式重新进行包括发起记账操作的处理。
3.根据权利要求1所述的方法,其特征在于,根据所述待处理的支付报文生成包括记账操作的任务对象之后,所述方法还包括:
确定任务队列中任务对象数量未超过设定值,且存在未放入任务队列的任务对象时,将所述未放入任务队列的任务对象依次放入任务队列至达到设定数量;
确定任务队列中任务对象数量超过设定值,将未放入队列中的任务对象进行销毁,所述任务对象对应的支付报文将被重新获取;
确定所述线程池中存在空闲线程,从所述任务队列中获取任务对象交给所述空闲线程进行处理,将该获取的任务对象从所述任务队列中移除。
4.根据权利要求1所述的方法,其特征在于,确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,包括:
响应于时间片段对象初始化指令,初始化内存中预设数量个时间片段对象,时间片段对象为数量个且与自然时间的时间片段循环对应,且每隔固定时间,对将要使用的多个时间片段对象进行批量初始化;
获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标,包括:
根据当前时间计算所述当前时间对应的时间片段对象在内存中的位置,获取所述时间片段对象之前的若干个时间片段对象,计算所述时间片段对象的超时指标,对所述超时指标进行加权处理确定综合超时指标。
5.根据权利要求1所述的方法,其特征在于,按照预设的时间片段分别统计各时间片段对应的超时指标,包括:
按照预设的时间片段分别统计各时间片段内记账操作的总次数;
按照预设的时间片段分别统计各时间片段内记账操作超时的次数;
根据各时间片段对应的记账操作超时的次数与记账操作的总次数的比值,得到该时间片段对应的超时率。
6.根据权利要求1~5任一所述的方法,其特征在于,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标,包括:
获取当前时间之前邻近的多个时间片段的超时指标,按照距离当前时间越近,对应权重越大的原则确定各时间片段的权重;
根据确定的权重对获取的超时指标进行加权处理确定综合超时指标。
7.根据权利要求1~5任一所述的方法,其特征在于,根据所述综合超时指标调整线程池中的并发线程的数量,包括:
根据所述综合超时指标确定线程池的预期并发线程数,所述预期并发线程数为大于1的整数,且综合超时指标对应超时程度越高,对应的预期并发线程数越少;
确定当前线程池中的并发线程中的数量超过所述预期并发线程数,待线程处理完当前任务对象后销毁对应的线程,至线程池中的并发线程数量达到所述预期并发线程数;
确定当前线程池中的并发线程数小于所述预期并发线程数,创建新的线程至线程池中的并发线程数量达到所述预期并发线程数。
8.根据权利要求7所述的方法,其特征在于,所述综合超时指标为对多个时间片段的超时率加权处理得到的综合超时率,根据所述综合超时指标确定并发线程的预期并发线程数,包括:
预期并发线程数=max{Floor(预设正常值*(1-综合超时率)),1}。
9.一种解决支付热点账户问题的装置,其特征在于,所述装置包括:
获取模块,用于响应于报文抓取指令,通过主线程获取待处理的支付报文;
处理模块,用于根据所述待处理的支付报文生成包括记账操作的任务对象,通过线程池中多个线程并发处理当前未处理的任务对象;
统计模块,用于确定在处理任务对象过程中的记账操作结果,按照预设的时间片段分别统计各时间片段对应的超时指标,其中,记账操作结果包括是否在预设的时间阈值内处理完成所述记账操作;
加权模块,用于响应于线程数量调整指令,获取当前时间之前邻近的多个时间片段的超时指标,对获取的超时指标进行加权处理确定综合超时指标;
调整模块,用于根据所述综合超时指标调整线程池中的并发线程的数量。
10.一种电子设备,其特征在于,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-8中任何一项所述的方法。
11.一种计算机程序产品,其特征在于,包括计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-8任一项所述的方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如权利要求1-8中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111638738.7A CN114283007A (zh) | 2021-12-29 | 2021-12-29 | 一种解决支付热点账户问题的方法及装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111638738.7A CN114283007A (zh) | 2021-12-29 | 2021-12-29 | 一种解决支付热点账户问题的方法及装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114283007A true CN114283007A (zh) | 2022-04-05 |
Family
ID=80877901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111638738.7A Pending CN114283007A (zh) | 2021-12-29 | 2021-12-29 | 一种解决支付热点账户问题的方法及装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114283007A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116051117A (zh) * | 2023-03-07 | 2023-05-02 | 天津金城银行股份有限公司 | 热点账户余额的控制方法、装置和电子设备 |
-
2021
- 2021-12-29 CN CN202111638738.7A patent/CN114283007A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116051117A (zh) * | 2023-03-07 | 2023-05-02 | 天津金城银行股份有限公司 | 热点账户余额的控制方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813513B (zh) | 基于分布式的实时任务调度方法、装置、设备及介质 | |
CN111049705B (zh) | 一种监控分布式存储系统的方法及装置 | |
CN107592345B (zh) | 交易限流装置、方法及交易系统 | |
CN109788315A (zh) | 视频转码方法、装置及系统 | |
CN104156296B (zh) | 智能监控大规模数据中心集群计算节点的系统和方法 | |
CN108021487B (zh) | 一种gpu图形处理性能监测与分析方法 | |
US10367719B2 (en) | Optimized consumption of third-party web services in a composite service | |
CN102541460A (zh) | 一种多磁盘场景下的磁盘管理方法和设备 | |
CN108491255B (zh) | 自助式MapReduce数据优化分配方法及系统 | |
CN113010576A (zh) | 云计算系统容量评估的方法、装置、设备和存储介质 | |
CN108549592A (zh) | 一种数据库连接池的监控方法及监控设备、应用服务器 | |
CN111275415A (zh) | 资源通道的切换方法、装置、设备及存储介质 | |
CN114780253B (zh) | 一种大数据智能分析系统 | |
CN108519920A (zh) | 一种调度重试方法及装置 | |
CN114283007A (zh) | 一种解决支付热点账户问题的方法及装置、电子设备 | |
CN107861878A (zh) | Java应用程序性能问题定位的方法、装置和设备 | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN109800085B (zh) | 资源配置的检测方法、装置、存储介质和电子设备 | |
US10666575B2 (en) | Asymmetric co-operative queue management for messages | |
CN108664322A (zh) | 数据处理方法及系统 | |
WO2023088462A1 (zh) | 用于处理数据的方法、装置、设备以及存储介质 | |
CN112817687A (zh) | 一种数据同步方法和装置 | |
CN115168042A (zh) | 监控集群的管理方法及装置、计算机存储介质、电子设备 | |
CN110493071B (zh) | 消息系统资源均衡装置、方法及设备 | |
CN114500255B (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 |