一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式事务的超时检测方法、装置及设备与流程

2022-10-26 09:16:39 来源:中国专利 TAG:


1.本技术涉及数据检测技术领域,特别是涉及一种分布式事务的超时检测方法、装置及设备。


背景技术:

2.为了实现银行交易的自主可控,将原运行于大型主机的核心系统下移至x86环境下进行微服务方案改造,并将核心系统拆分为贷款、存款、支付、客户、参数、批量等多个模块。
3.核心系统提供的各类交易有交易时长的要求,如果超出了设定的超时时间,需要回滚之前的操作,所以,需要对交易进行超时检测。现有技术是saga协调器和原子接口通过分布式事务超时提供的软件开发包来实现交易的超时检测,但是,这种实现方式会对代码造成一定的侵入性。
4.因此,如何降低超时检测对代码所造成的侵入性,即一种“无感”的超时检测方法,是本领域技术人员急需解决的技术问题。


技术实现要素:

5.基于上述问题,本技术提供了一种分布式事务的超时检测方法、装置及设备,以解决通过调用软件开发包完成分布式事务超时检测对代码所造成的侵入性的问题。
6.一种分布式事务的超时检测方法,应用于saga协调器,其特征在于,包括:
7.获取交易结束时间;所述交易为一种分布式事务;
8.调用所述交易中的原子服务,获取所述原子服务的结束时间;
9.根据当前时间与所述原子服务的结束时间对所述交易进行第一超时检测,得到第一超时检测结果;
10.若所述第一超时检测结果为未超时,等待所述原子服务返回并对所述原子服务的返回结果进行检测;
11.若所述原子服务的返回结果正常,则根据所述当前时间与所述交易结束时间,对所述交易进行第二超时检测,得到第二超时检测结果。
12.可选地,所述调用所述交易中的原子服务,获取所述原子服务结束时间,包括:
13.mybatis拦截器对超时时间序列进行拦截;
14.通过对所述超时时间序列进行反序列获取所述原子服务结束时间。
15.可选地,根据当前时间与所述原子服务结束时间对交易进行第一超时检测,得到第一超时检测结果,包括:
16.若所述当前时间早于所述原子服务结束时间,则第一超时检测结果为未超时。
17.可选地,所述获取交易结束时间,包括:
18.根据交易开始时间与预先设定的交易超时时间,获得所述交易结束时间;所述预先设定的交易超时时间是通过后缀为.yml的配置文件配置的。
19.可选地,在所述调用原子服务之前,还包括:
20.根据所述当前时间以及所述交易结束时间,对所述交易进行第三超时检测,得到第三超时检测结果;
21.若所述第三超时检测结果为未超时,则调用所述原子服务。
22.可选地,还包括:
23.若所述第一超时检测结果、所述第二超时检测结果或所述第三超时检测结果中任一结果为超时,则令所述交易重新执行。
24.可选地,还包括:
25.若所述第二超时检测结果为未超时,则调用下一个原子服务。
26.为解决上述技术问题,本技术提供了分布式事务的超时检测装置,包括:
27.超时检测单元,用于对交易进行超时检测;所述交易为一种分布式事务;
28.交易结束时间获取单元,用于获取所述交易结束时间;
29.原子服务结束时间获取单元,用于获取所述交易中原子服务结束时间。
30.所述超时检测单元,具体包括:
31.第一超时检测子单元,用于根据当前时间与所述原子服务结束时间进行第一超时检测;
32.第二超时检测子单元,用于根据所述当前时间与所述交易结束时间进行第二超时检测;
33.第三超时检测子单元,用于根据所述当前时间与所述交易结束时间进行第三超时检测。
34.为解决上述技术问题,本技术提供了分布式事务的超时检测设备,包括:
35.存储器,用于存储计算机程序;
36.处理器,用于执行所述计算机程序时实现如上所述分布式事务的超时检测方法的步骤。
37.本技术公开了一种分布式事务的超时检测方法、装置及设备,在该方案中,先获取交易结束时间,调用交易中的原子服务并获得原子服务的结束时间,再根据当前时间与原子服务结束时间进行第一超时检测;若未超时,则根据当前时间与交易结束时间进行第二超时检测。通过在原子服务执行过程中对交易进行第一超时检测以及原子服务执行完毕对交易进行第二超时检测相结合的方式,使得超时检测不再需要额外的软件开发包,所以,超时检测对代码不具有侵入性。
附图说明
38.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
39.图1为本技术提供的一种分布式事务的超时检测方法的流程示意图;
40.图2为本技术提供的另一种分布式事务的超时检测方法的流程示意图;
41.图3为本技术提供的一种分布式事务的超时检测装置的结构示意图;
42.图4为本技术提供的一种分布式事务的超时检测设备的硬件结构示意图。
具体实施方式
43.正如前文描述,随着微服务架构的兴起,越来越多的公司会在实际场景中遇到分布式事务的问题。特别是在金融应用场景,几个跨进程的应用共同完成一个任务,就更离不开分布式事务的参与。而对于分布式事务而言,2pc、tcc也是经常被提到了,不过在面对长业务流程时很难进行tcc改造的场景,会选择使用saga分布式事务。
44.银行的核心系统分为贷款、存款、支付、客户、参数、批量等多个模块,而由核心系统所提供的各类交易都有交易时长的要求,如果发生了超时,需要回滚之前的所有操作,所以需要对交易进行超时检测。基于上述的交易均是长业务,所以需要结合saga的调度来实现对交易的超时检测。现有技术中saga协调器和原子接口需要分布式事务超时提供的软件开发包来实现对交易的超时检测,当代码引入了一个开发包,会导致其他代码或者设计做出相应的更改来适应该软件开发包。所以,该软件开发包对于代码而言是有侵入性的。
45.发明人经过研究,提供一种分布式事务的超时检测方法、装置及设备。通过将交易的超时检测以程序的方式加以实现,不再采用软件开发包,进而有效避免了软件开发包的侵入性。
46.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
47.第一实施例
48.本实施例中,提供一种分布式事务的超时检测方法。该方法应用于saga调度系统中,该saga调度系统可以实现交易的超时检测以及交易的回滚操作。
49.参见图1,该图为本技术提供的一种分布式事务的超时检测方法的流程示意图。
50.该方法包括:
51.s110:获取交易结束时间;所述交易为一种分布式事务。
52.交易可以有时长限制,所以,可以通过交易的开始时间获得交易的结束时间;
53.由于银行的核心系统可以分为贷款、存款、支付、客户、参数、批量等多个模块,核心系统所提供的所述交易可以涉及多个模块。所以,交易可以看作是一种分布式事务。
54.s120:调用所述交易中的原子服务,获取所述原子服务结束时间。
55.交易可以包括一个或多个所述原子服务,原子服务是构成所述交易的不可再分解的基本服务单元,也是操作系统能够进行管控、权限分配的最小单元;此处不对原子服务的个数进行限制;
56.原子服务可以有时间限制也可以没有时间限制,当原子服务有时长限制时,可以获取原子服务的结束时间。
57.s130:根据当前时间与所述原子服务结束时间对交易进行第一超时检测,得到第一超时检测结果。
58.第一超时检测可以发生在原子服务的执行过程中,可以比较当前时间与原子服务时间的大小进行超时检测;
59.第一超时检测结果可以是未超时,还可以是超时。
60.s140:若所述第一超时检测结果为未超时,等待所述原子服务返回并对所述原子服务的返回结果进行检测;
61.原子服务是交易的组成部分,完成交易的部分功能,原子服务返回时,会返回对应的结果;
62.作为示例,交易可以是atm取钱交易,其中的一个原子服务可以是输入密码,所以其返回结果可以有密码正确和密码错误两种结果。
63.s150:若所述原子服务的返回结果正常,则根据所述当前时间与所述交易结束时间,对所述交易进行第二超时检测,得到第二超时检测结果。
64.第二超时检测可以发生在原子服务结束之后,可以通过比较当前时间与所述交易超时时间的方式进行,当当前时间小于所述交易结束时间,第二超时检测结果可以是未超时;当当前时间大于所述交易结束时间,第二超时检测结果可以是超时。
65.通过在原子服务执行过程中对交易进行第一超时检测以及原子服务执行完毕对交易进行第二超时检测的方式,使得超时检测不再需要额外的软件开发包,所以,超时检测对代码不具有侵入性。
66.第二实施例
67.参见图2,该图为本技术提供的另一种分布式事务的超时检测方法的流程示意图。
68.s210:通过后缀为.yml的配置文件配置交易超时时间。
69.超时时间的大小可以根据核心系统提供的任务而有所不同,交易的最大超长时间可以是40s;
70.作为示例,通过配置中心进行下发,配置默认超时时间及按照分组方式配置各类交易配置,可通过feign、resettemplate方式传递并传递给原子交易分布事务的开始时间、接收时间、剩余时间并还原成上下文方式可以通过spring开发框架@refreshscope动态刷新机制实现参数动态生效,无需重启服务器,可以随时调整随时生效;
71.除此之外,还可以通过后缀为.yml配置文件进行配置的方式配置所述原子服务超时时间。
72.s220:根据交易开始时间与所述交易超时时间,获得所述交易结束时间;所述交易为一种分布式事务。
73.交易结束时间endtime可以通过以下方式获取:saga协调器接收到交易请求,通过交易码获取所述交易超时时间t,当交易发起时,saga协调器入口记录所述交易开始时间starttime,根据starttime t得到所述交易结束时间endtime。
74.s230:根据所述当前时间以及所述交易结束时间,对所述交易进行第三超时检测,若未超时,则执行s240。
75.第三超时检测可以是在调用原子服务前对交易进行超时检测,可以根据检测结果,决定是否调用所述原子服务;
76.第三超时检测可以通过当前时间curtime与交易结束时间endtime之间的关系来判断;当前时间curtime可以通过saga协调器在调用原子服务前通过查看本地时钟的方式进行获取,当curtime《endtime时,第三超时检测结果为未超时;当curtime》=endtime时,第三超时检测结果为超时;
77.第三超时检测的作用可以是在调用原子服务前对交易进行超时检测,虽然在上一个原子服务结束后也进行了超时检测,但是,通过在调用原子服务前进行超时检测可以使得对于交易超时检测的判断更加准确。
78.s240:所述第三超时检测结果为未超时,调用所述交易中的原子服务,mybatis拦截器对超时时间序列进行检测,通过反序列获取所述原子服务结束时间。
79.超时时间序列可以是预先设定好的,其内容可以包括交易的超时时间t,还可以包括原子服务的超时时间
tstep

80.原子服务可以通过mybatis拦截器对超时时间序列进行拦截,进而可以通过反序列的方式获得所述原子服务开始时间stepstarttime;
81.通过原子服务开始时间stepstarttime以及原子服务超时时间
tstep
,通过stepstarttime
tstep
可以获得原子服务结束时间stependtime;
82.除此之外,作为示例,当没有预先设定的所述原子服务的超时时间时,第二超时检测可以通过比较当前时间curtime与交易结束时间endtime之间的关系进行,当curtime《endtime,第二超时检测结果可以是未超时,当curtime》endtime,第二超时检测结果为超时。
83.s250:根据当前时间与所述原子服务结束时间对交易进行第一超时检测,得到第一超时检测结果。
84.例如,当sql操作被mybatis拦截器拦截时,第一超时检测可以通过比较当前时间curtime与原子服务结束时间stependtime的大小进行,当curtime《stependtime时,第一超时检测结果可以是未超时;当curtime》stependtime时,第一超时检测结果可以是超时;
85.通过在原子服务的执行过程中对所述交易进行超时检测,如果在过程中就发生了超时,可以提前回滚之前的交易操作,提高交易执行的效率;除此之外采用mybatis拦截器拦截sql检测记录的方式,可以实现整体及细粒度化的控制实现超时时间毫秒级感应。
86.s260:若所述第一超时检测结果为未超时,等待所述原子服务返回并对所述原子服务的返回结果进行检测。
87.原子服务是交易的组成部分,完成交易的部分功能,原子服务返回时,会返回对应的结果;
88.作为示例,交易可以是atm取钱交易,其中的一个原子服务可以是输入密码,所以其返回结果可以有密码正确和密码错误两种结果;若原子服务的返回结果正常,则执行s270;若原子服务的结果异常,则重新执行所述交易。
89.s270:若所述原子服务的返回结果正常,则根据所述当前时间与所述交易结束时间,对所述交易进行第二超时检测,得到第二超时检测结果。
90.第二超时检测可以在原子服务调用结束之后进行,第二超时检测可以通过比较当前时间curtime与交易结束时间endtime来进行,当curtime《endtime时,第二超时检测结果可以是未超时,当curtime》endtime时,第二超时检测结果可以是超时。
91.s280:若所述第一超时检测结果、所述第二超时检测结果或所述第三超时检测结果中任一结果为超时,则令所述交易重新执行;若所述第二检测结果为未超时,则继续调用下一个所述原子服务。
92.通过调用原子服务前对交易进行第三超时检测,在原子服务执行过程中进行第一
超时检测以及原子服务执行完毕后进行第二超时检测相结合的方式,提高了交易超时检测的效率,降低了超时检测的时间粒度。
93.第三实施例
94.参见图3,该图为本技术提供的一种分布式事务的超时检测装置的结构示意图。
95.本实施例提供的分布式事务的超时检测装置,包括:
96.超时检测单元500,用于对交易进行超时检测,超时检测可以包括调用原子服务前的第三超时检测,原子服务执行过程中的第一超时检测以及原子服务调用结束之后的第二超时检测;交易为一种分布式事务;
97.交易结束时间获取单元300,用于根据交易的开始时间以及交易超时时间获取交易结束时间;
98.原子服务结束时间获取单元400,用于通过接收到的超时时间序列获取交易中原子服务结束时间。
99.可选地,超时检测单元,具体包括:
100.第一超时检测子单元,用于根据当前时间与原子服务结束时间进行第一超时检测;
101.第二超时检测子单元,用于根据当前时间与交易结束时间进行第二超时检测;
102.第三超时检测子单元,用于根据当前时间与交易结束时间进行第三超时检测。
103.可选地,装置还包括:
104.超时时间设定单元,用于设定交易的整体超时时间,还可以用于设定各原子服务的超时时间;
105.可选地,装置还包括:
106.交易开始时间获取单元,用于获取交易的开始时间;
107.超时时间序列拦截单元,用于对超时时间序列进行拦截,将拦截的时间序列发送给原子服务结束时间获取单元。
108.可选地,装置还包括:
109.原子服务编号单元,用于对交易中的原子服务进行编号,进而方便saga协调器调用。
110.可选地,装置还包括:
111.原子服务返回结果检测单元,用于对原子服务的返回结果进行判断,进而决定是否进行第二超时检测。
112.基于前述实施例提供的分布式事务的超时检测方法、装置,本技术还提供一种分布式事务超时检测设备。
113.参见图4,该图为本实施例提供的分布式事务超时检测设备硬件结构图。
114.如图4所示,分布式超时检测设备包括:存储介质901、处理器902、通信总线903以及通信接口904。
115.其中,存储介质901上存储有可在处理器中运行的程序,程序执行时实现本技术第一实施例和第二实施例提供的分布式事务超时检测方法中部分或全部步骤。
116.在该分布式事务超时检测设备中,处理器902与存储介质901通过通信总线903传输信令、指令等。该分布式事务超时检测设备能够通过通信接口904与其他设备进行通信交
互。
117.通过程序执行上述方法,可以避免采用调用软件开发包的方式实现分布式事务超时检测。从而避免软件开发包对代码造成侵入性。
118.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
119.需要说明的是,本发明提供的一种分布式事务的超时检测方法、装置及设备可用于分布式领域或金融领域。上述仅为示例,并不对本发明提供的一种分布式事务的超时检测方法、装置及设备的应用领域进行限定。
120.以上所述,仅为本技术的一种具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献