一种交易超时监控方法及装置与流程

文档序号:16467552发布日期:2019-01-02 22:52阅读:355来源:国知局
一种交易超时监控方法及装置与流程

本发明涉及数据处理技术领域,尤其涉及一种交易超时监控方法及装置。



背景技术:

现有的技术监控交易超时,主要通过轮询数据库流水表的记录来批量处理。例如一笔交易信息存入数据库时会设定处理起始时间和处理结束时间,当交易结束时会设定交易状态标记。在交易框架中存在一个单独的进程进行数据库轮询,每隔x秒进行一次轮询,以检测数据库流水中是否有超时标记未结束,但已经超过了处理时长的交易。对这些超时交易,轮询进程会更新超时标记后进行交易超时处理。对于超时的交易立即进行处理,对未达到交易处理时长的交易则等待至下一个轮询周期进行超时判定。

现有技术中的方法实现较为简单,但是有着很明显的缺点。超时轮询进程会每隔一段时间进行一次轮询,对于未到处理结束时间的交易会等待到下一次轮询处理。这样的工作方式无法正确的处理处在超时临界点的交易。假设轮询周期有30s,当一笔交易被轮询进程轮询到时还差1s到达处理结束时间,由于本次无法标记为超时交易,只能等待30s以后的下一次轮询才能处理,这样就会产生很大处理延时。



技术实现要素:

本申请提供一种交易超时监控方法及装置,用以降低超时交易的处理延时。

本发明实施例提供的一种交易超时监控方法,包括:

确定交易的交易处理时长;

根据所述交易的交易处理时长将所述交易划分至监控分组中;

在不同的时间点对相应监控分组中的交易进行超时判断;

将判定为超时的交易进行交易超时处理。

可选的,一个监控分组为时间轮定时器的一个数组槽;

所述根据所述交易的交易处理时长将所述交易划分至监控分组中,包括:

根据所述交易的交易处理时长以及所述时间轮定时器的数组槽数量,确定所述交易对应的数组槽的编号以及所述交易的轮询次数;

将所述交易放入对应的数组槽中;

所述在不同的时间点对相应监控分组中的交易进行超时判定,包括:

确定所述时间轮定时器的槽指针指向的待判定数组槽;

判定所述待判定数据槽中轮询次数为0的交易为超时交易;

所述时间轮定时器的槽指针按规定时间间隔进行跳转,每跳转一次所述槽指针指向相邻的下一数组槽;

所述时间轮定时器的槽指针每指向一个数组槽,将所述槽指针指向的数组槽中各交易的轮询次数减1。

可选的,根据以下公式计算所述交易对应的数组槽编号:

n=(t+m)mod(l·s)

根据以下公式计算所述交易的轮询次数:

r=(t+m)div(l·s)

其中,n为所述交易对应的数据槽编号;r为所述交易的轮询次数;t为所述交易的交易处理时长;m为当前所述槽指针指向的数组槽的编号;l为所述时间轮定时器的数组槽的数量;s为所述槽指针跳转一次的时间间隔。

可选的,所述将判定为超时的交易进行交易超时处理包之前,还包括:

接收到所述交易的交易完成消息;

将所述交易从所述监控分组中移除。

本发明实施例还提供一种交易超时监控装置,包括:

解析单元,用于确定交易的交易处理时长;

划分单元,用于根据所述交易的交易处理时长将所述交易划分至监控分组中;

判定单元,用于在不同的时间点对相应监控分组中的交易进行超时判断;

处理单元,用于将判定为超时的交易进行交易超时处理。

可选的,一个监控分组为时间轮定时器的一个数组槽;

所述划分单元,具体用于:

根据所述交易的交易处理时长以及所述时间轮定时器的数组槽数量,确定所述交易对应的数组槽的编号以及所述交易的轮询次数;

将所述交易放入对应的数组槽中;

所述判定单元,具体用于:

确定所述时间轮定时器的槽指针指向的待判定数组槽;

判定所述待判定数据槽中轮询次数为0的交易为超时交易;

所述时间轮定时器的槽指针按规定时间间隔进行跳转,每跳转一次所述槽指针指向相邻的下一数组槽;

所述时间轮定时器的槽指针每指向一个数组槽,将所述槽指针指向的数组槽中各交易的轮询次数减1。

可选的,所述划分单元,具体用于根据以下公式计算所述交易对应的数组槽编号:

n=(t+m)mod(l·s)

所述划分单元,具体用于根据以下公式计算所述交易的轮询次数:

r=(t+m)div(l·s)

其中,n为所述交易对应的数据槽编号;r为所述交易的轮询次数;t为所述交易的交易处理时长;m为当前所述槽指针指向的数组槽的编号;l为所述时间轮定时器的数组槽的数量;s为所述槽指针跳转一次的时间间隔。

可选的,所述处理单元,还用于:

接收到所述交易的交易完成消息;

将所述交易从所述监控分组中移除。

本发明实施例还提供一种电子设备,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述方法。

本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述方法。

本发明实施例中,收到需要进行超时监控的交易,首先确定交易的交易处理时长,根据交易的交易处理时长将该笔交易划分至对应的监控分组中。也就是说,数据库中的所有被监控的交易被划分至不同的监控分组中。不同的监控分组对应不同的时间点,在不同的时间点对相应监控分组中的交易进行超时判断,将判定位超时的交易进行交易超时处理。本发明实施例针对不同交易处理时长对交易进行超时监控,确保每个交易处理的及时性,降低了超时交易的处理延时。此外,本发明实施例分组对交易进行监控,每个时间点只需监控一个分组内的交易,降低了进程轮询整个数据库带来的数据库压力。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种交易超时监控方法的流程示意图;

图2为本发明实施例提供的时间轮定时器的结构示意图;

图3为本发明实施例提供的交易超时监控模块的结构示意图;

图4为本发明实施例适用的一种系统的结构示意图;

图5为本发明实施例提供的一种交易超时监控装置的结构示意图;

图6为本发明实施例提供的电子设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例提供了一种交易超时监控方法。如图1所示,本发明实施例提供的交易超时监控方法,包括以下步骤:

步骤101、确定交易的交易处理时长。

步骤102、根据所述交易的交易处理时长将所述交易划分至监控分组中。

步骤103、在不同的时间点对相应监控分组中的交易进行超时判断。

步骤104、将判定为超时的交易进行交易超时处理。

本发明实施例中,收到需要进行超时监控的交易,首先确定交易的交易处理时长,根据交易的交易处理时长将该笔交易划分至对应的监控分组中。也就是说,数据库中的所有被监控的交易被划分至不同的监控分组中。不同的监控分组对应不同的时间点,在不同的时间点对相应监控分组中的交易进行超时判断,将判定位超时的交易进行交易超时处理。本发明实施例针对不同交易处理时长对交易进行超时监控,确保每个交易处理的及时性,降低了超时交易的处理延时。此外,本发明实施例分组对交易进行监控,每个时间点只需监控一个分组内的交易,降低了进程轮询整个数据库带来的数据库压力。

本发明实施例中,利用时间轮定时器来管理交易。一个监控分组为时间轮定时器的一个数组槽。

所述根据所述交易的交易处理时长将所述交易划分至监控分组中,包括:

根据所述交易的交易处理时长以及所述时间轮定时器的数组槽数量,确定所述交易对应的数组槽的编号以及所述交易的轮询次数;

将所述交易放入对应的数组槽中;

所述在不同的时间点对相应监控分组中的交易进行超时判定,包括:

确定所述时间轮定时器的槽指针指向的待判定数组槽;

判定所述待判定数据槽中轮询次数为0的交易为超时交易;

所述时间轮定时器的槽指针按规定时间间隔进行跳转,每跳转一次所述槽指针指向相邻的下一数组槽;

所述时间轮定时器的槽指针每指向一个数组槽,将所述槽指针指向的数组槽中各交易的轮询次数减1。

时间轮定时器,如图2所示,是指有一条时间闭环履带,每一节代表等长时间,每一节对应一个数组槽,一个数组槽中维护一条交易监控链表,用于统计当前时间点需要进行超时判定的交易。假想有一个槽指针在这条履带圆心转动,转动速度恒定。当转到某一节时候,对这节对应的数组槽中的交易进行判定。时间轮定时器中的这个槽指针按照规定的时间间隔进行跳转,每跳转一次槽指针指向相邻的下一个数组槽。槽指针一直转动,那么就可以按照规定的时间间隔判定数组槽中的交易。本发明实施例中,对需进行超时监控的交易进行解析,确定其交易处理时长,根据交易处理时长以及设定的时间轮定时器的数组槽数量,确定维护该交易的数组槽以及该交易的轮询次数。

时间轮定时器的槽指针每指向一个数组槽,将该槽指针指向的数组槽中各交易的轮询次数减1。也就是说,交易的轮询次数用于对交易进行超时判定,判定待判定数组槽中轮询次数为0的交易为超时交易。

具体地,根据以下公式计算所述交易对应的数组槽编号:

n=(t+m)mod(l·s)…………公式1

根据以下公式计算所述交易的轮询次数:

r=(t+m)div(l·s)…………公式2

其中,n为所述交易对应的数据槽编号;r为所述交易的轮询次数;t为所述交易的交易处理时长;m为当前所述槽指针指向的数组槽的编号;l为所述时间轮定时器的数组槽的数量;s为所述槽指针跳转一次的时间间隔。

举例来说,设定时间轮定时器包括有30数组槽,对应的数组槽编号分别为0、1、2……29。时间轮定时器的槽指针每隔s秒跳转到下一相邻的数组槽,若s为2,即槽指针每隔2秒跳转一次。也就是说,第0秒,槽指针指向数组槽0;第2秒,槽指针指向数组槽1;以此类推,第58秒,槽指针指向数组槽29;到第60秒,槽指针又指向数组槽0。

若交易的交易处理时长为2分钟,当前槽指针指向的数组槽的编号为3,即接收到进行监控的交易的时刻,槽指针指向数组槽3。则该交易对应的数组槽编号为n=(120+3)mod(30×2)=3,交易的轮询次数为r=(120+3)div(30×2)=2,即将交易放入数据槽3中,槽指针第二次指向数据槽3时,该交易的轮询次数减为0,判断该交易超时。

当确定交易超时后,对该交易进行交易超时处理。对于进行交易超时处理的交易,本发明实施例可以选择删除该交易在数组槽中的信息,或者选择对其进行重新监控,若对该交易进行重新监控需对其进行超时修改。首先解析该交易信息,确定该笔交易在数组槽中的位置,再根据该交易的交易超时处理信息,计算该笔交易在数组槽中的新位置。将该笔交易从时间轮定时器的当前的数组槽中移除,插入到新的数组槽中。

为了便于查找交易在时间轮定时器中的位置,本发明实施例利用哈希结构管理交易的位置信息。键值采用交易的标记,如交易流水号,可以快速检索时间轮定时器的数组槽中维护的各交易。本发明实施例中,交易在哈希节点中维护的信息与交易在数组槽中维护的信息一致,其结构举例如下:

(1)uimt64_ttrams_id;//交易流水号号

(2)uimt64_ttimeout;//超时时间

(3)structtrams_timer*mext;//哈希表后继

(4)structtrams_timer**amchor_ptr;//哈希表前驱

(5)structtrams_timer*slot_mext;//超时交易链表后继

(6)structtrams_timer**slot_amchor_ptr;//超时交易链表前驱

(7)timer_fumccb;//回调函数

(8)uimt32_trotatiom;//时间轮循环次数

(9)uimt8_tslot_idx;//时间轮下标

(10)uimt8_trepeat;//是否重复

(11)uimt8_tcategory;//交易类型

(12)charhamdle_svc[16];//超时处理服务

此外,本发明实施例中,所述将判定为超时的交易进行交易超时处理包之前,还包括:

接收到所述交易的交易完成消息;

将所述交易从所述监控分组中移除。

具体来说,本发明实施例中,交易在被判定为超时之前,若收到该交易的交易完成消息,则确定该笔交易已正常处理结束,需对其进行超时注销,即将该交易从数组槽中移除。具体来说,可以通过哈希表中维护的交易信息查找到该交易所位于的时间轮定时器中的数组槽位置。首先移除时间轮定时器的数组槽中该交易的信息,再从哈希表中删除该交易的信息。

为了更清楚地理解本发明,下面以具体的实施例对上述流程进行详细描述。本发明实施例提供的交易超时监控模块的结构如图3所示,包括:解析子模块301、管理子模块302和处理子模块303,采用单进程多线程的结构。

解析子模块301主要对接收到需要进行超时监控的交易进行解析,确定该交易的流水号、交易处理时长、交易类型等,再通过内部数据格式传输给管理子模块302。

管理子模块302主要管理各个交易的超时监控信息,以及进行时间统计。如图3所示,管理子模块302由时间轮定时器304和信息表305两部分组成。时间轮定时器304为数组结构,每个数组槽维护一条交易监控链表,用于统计当前时间点需要进行超时判定的交易。信息表305采用哈希结构进行存储,键值采用交易流水号何交易类型组成。

时间轮定时器304的槽指针跳转计时可以通过termfd机制处理,这样就可以将时间轮定时器304的时间规划操作转变为读写操作,与交易处理响应的管道操作一同采用epoll/kqueue进行控制,从而避免管理子模块302产生锁处理问题,提高管理子模块302的处理效率。

处理子模块303用于接收来自管理子模块302指派的交易处理任务,处理子模块303获得的数据包含判定为超时的交易的具体信息,例如交易流水号,交易类型和交易处理时长等。处理子模块303专门用于处理判定为超时的交易以减轻管理子模块302的计算压力,保证管理子模块302的精确性。

本发明实施例还创建多个管道描述符,用于各个子模块之间的通信。

本发明实施例中,管理子模块302创建一个时间描述符,每隔1秒产生一次可读状态变化,并通过epoll/kqueue等操作将请求描述符(管道描述符的读端)和时间描述符共同管理起来。时间描述符会每隔1秒产生响应,对时间轮定时器的槽指针指向进行更新。当槽指针指向数据槽0时,管理子模块302遍历数据槽0中的所有交易信息,查看数据槽0中各个交易的是否为超时交易;1秒以后槽指针指向数据槽1,管理子模块302遍历数据槽1中的所有交易信息,查看数据槽1中各个交易的是否为超时交易;1秒以后槽指针指向数据槽2,管理子模块302遍历数据槽2中的所有交易信息,查看数据槽2中各个交易的是否为超时交易,以此类推。

上述三个子模块的具体工作流程如下:

解析子模块301接收到外部发送的交易超时监控请求,对请求进行解析,确定交易的交易流水号、交易处理时长、交易类型等信息,通过管道传输给管理子模块302。

管理子模块302接收到解析子模块301发来的交易超时监控请求,根据交易的流水号和交易类型将交易信息添加到信息表305中,并根据当前时间轮定时器304的数组槽数量和交易处理时长计算出该交易所需插入的数组槽。

管理子模块302对槽指针指向的数组槽中的交易进行判定,当检测到有交易超时后,将该超时交易发送给处理子模块303。

处理子模块303对该超时交易进行处理。处理子模块303确定超时交易的交易流水号后,需要设定交易超时标记以保证正常的处理流程能够在超过交易处理时长后正常终止,随后可以进行正常的交易处理。

若在交易未到交易处理时长之前已正常处理结束,解析子模块301会接收到交易完成消息。解析子模块301对交易完成消息解析后,向管理子模块302转发交易完成消息。管理子模块302根据接收到的交易流水号,从信息表305中查找到该交易。首先从时间轮定时器304的数组槽中将该交易移除,再从信息表305中删除该交易。

本发明实施例所适用一种系统如图4所示,包括一个或多个部署有上述交易超时监控模块的计算机。若系统包括多个计算机,可以对交易进行联机处理。

当计算机401将交易发往外部系统时,计算机401上的交易超时监控模块会进行时钟统计,对内部管理的交易按照时间轮定时器的周期进行交易超时监控。当交易反馈按原路应答时,计算机401的交易处理模块通过和交易超时监控模块交互,删除或修改注册的超时交易,以便交易再次进行转发或做结束处理。

当交易发往外部系统时,并在交易反馈回传时产生跨机处理,则处理该交易的计算机402首先获取对该交易进行超时监控的计算机401的地址。计算机402的交易处理模块获取到该笔交易的超时监控模块的计算机401地址后,产生跨机请求以更新当前交易在计算机401的超时监控模块中的交易信息。

本发明实施例还提供了一种交易超时监控装置,如图5所示,包括:

解析单元501,用于确定交易的交易处理时长;

划分单元502,用于根据所述交易的交易处理时长将所述交易划分至监控分组中;

判定单元503,用于在不同的时间点对相应监控分组中的交易进行超时判断;

处理单元504,用于将判定为超时的交易进行交易超时处理。

可选的,一个监控分组为时间轮定时器的一个数组槽;

所述划分单元502,具体用于:

根据所述交易的交易处理时长以及所述时间轮定时器的数组槽数量,确定所述交易对应的数组槽的编号以及所述交易的轮询次数;

将所述交易放入对应的数组槽中;

所述判定单元503,具体用于:

确定所述时间轮定时器的槽指针指向的待判定数组槽;

判定所述待判定数据槽中轮询次数为0的交易为超时交易;

所述时间轮定时器的槽指针按规定时间间隔进行跳转,每跳转一次所述槽指针指向相邻的下一数组槽;

所述时间轮定时器的槽指针每指向一个数组槽,将所述槽指针指向的数组槽中各交易的轮询次数减1。

可选的,所述划分单元502,具体用于根据以下公式计算所述交易对应的数组槽编号:

n=(t+m)mod(l·s)

所述划分单元,具体用于根据以下公式计算所述交易的轮询次数:

r=(t+m)div(l·s)

其中,n为所述交易对应的数据槽编号;r为所述交易的轮询次数;t为所述交易的交易处理时长;m为当前所述槽指针指向的数组槽的编号;l为所述时间轮定时器的数组槽的数量;s为所述槽指针跳转一次的时间间隔。

可选的,所述处理单元504,还用于:

接收到所述交易的交易完成消息;

将所述交易从所述监控分组中移除。

基于相同的原理,本发明还提供一种电子设备,如图6所示,包括:

包括处理器601、存储器602、收发机603、总线接口604,其中处理器601、存储器602与收发机603之间通过总线接口604连接;

所述处理器601,用于读取所述存储器602中的程序,执行下列方法:

确定交易的交易处理时长;

根据所述交易的交易处理时长将所述交易划分至监控分组中;

在不同的时间点对相应监控分组中的交易进行超时判断;

将判定为超时的交易进行交易超时处理。

进一步地,所述处理器601具体用于:

根据所述交易的交易处理时长以及所述时间轮定时器的数组槽数量,确定所述交易对应的数组槽的编号以及所述交易的轮询次数;

将所述交易放入对应的数组槽中;

确定所述时间轮定时器的槽指针指向的待判定数组槽;

判定所述待判定数据槽中轮询次数为0的交易为超时交易;

所述时间轮定时器的槽指针按规定时间间隔进行跳转,每跳转一次所述槽指针指向相邻的下一数组槽;

所述时间轮定时器的槽指针每指向一个数组槽,将所述槽指针指向的数组槽中各交易的轮询次数减1。

进一步地,所述处理器601具体用于:

根据以下公式计算所述交易对应的数组槽编号:

n=(t+m)mod(l·s)

根据以下公式计算所述交易的轮询次数:

r=(t+m)div(l·s)

其中,n为所述交易对应的数据槽编号;r为所述交易的轮询次数;t为所述交易的交易处理时长;m为当前所述槽指针指向的数组槽的编号;l为所述时间轮定时器的数组槽的数量;s为所述槽指针跳转一次的时间间隔。

进一步地,所述处理器601具体用于:

接收到所述交易的交易完成消息;

将所述交易从所述监控分组中移除。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

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