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

分布式事务处理方法、装置、电子设备及计算机存储介质与流程

2022-02-22 23:29:16 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体而言,涉及一种分布式事务处理方法、装置、电子设备及计算机存储介质。


背景技术:

2.现有的分布式事务相关业务的处理,绝大多数都是通过引入第三方框架实现的,比较典型的就是tcc分布式事务框架,但是tcc分布式事务框架的业务逻辑处理流程复杂。并且,由于第三方框架的引入,开发成本及维护成本也比较高。


技术实现要素:

3.本技术实施例的目的在于提供一种分布式事务处理方法、装置、电子设备及计算机存储介质,用以解决现有分布式事务处理需要引入第三方框架,处理流程复杂,成本较高的问题。
4.本技术实施例提供了一种分布式事务处理方法,包括:
5.每当接收到分布式事务请求时,根据所述分布式事务请求生成对应的数据操作记录,每一条所述数据操作记录包括数据内容操作信息、事务标识信息以及操作提交状态;
6.对所述数据操作记录中的数据内容操作信息进行预提交;
7.根据所述事务标识信息筛选出同一分布式事务请求对应的数据操作记录,在确认对同一所述分布式事务请求对应的所有数据内容操作信息预提交成功时,实际提交对应的数据内容操作信息,并将实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态;
8.根据同一所述分布式事务请求对应的数据操作记录中当前记录的操作提交状态,确认该分布式事务请求是否被成功响应。
9.在上述实现过程中,针对接收到的分布式事务请求,通过其对应的数据操作记录中操作提交状态的值以及事务标识信息确认该分布式事务请求对应的数据内容操作信息是否实际提交成功,进而可以确定该分布式事务请求是否被成功响应,无需引入第三方框架便可实现分布式事务处理,流程简单,降低了开发及维护成本。
10.进一步地,在接收到分布式事务请求时,根据所述分布式事务请求生成的数据操作记录中的操作提交状态为预提交状态。
11.在上述实现过程中,将生成的数据内容操作信息对应的操作提交状态设置为预提交状态,以便于对数据内容操作信息的提交情况进行区分。
12.进一步地,在所述根据所述分布式事务请求生成数据操作记录之后,还包括:
13.将所述数据操作记录与本地线程绑定;
14.所述对所述数据操作记录信息中的数据内容操作信息进行预提交,包括:
15.从本地线程中获取所述数据内容操作信息,并依次进行预提交。
16.在上述实现过程中,直接从本地线程获取数据内容操作信息进行预提交,提升响
应速度。
17.进一步地,所述方法还包括:
18.在确认对同一所述分布式事务请求对应的至少一个数据内容操作信息预提交失败时,生成回滚消息,以指示回滚失败的预提交操作或回滚所述分布式事务请求对应的所有预提交操作。
19.在上述实现过程中,在预提交失败时生成回滚消息,防止分布式事务请求错误响应。
20.进一步地,根据同一所述分布式事务请求对应的数据操作记录中当前记录的操作提交状态,确认该分布式事务请求是否被成功响应,包括:
21.在每一所述分布式事务请求对应的所有数据操作记录中的操作提交状态均为已实际提交状态时,确认所述分布式事务请求被成功响应,否则,确认所述分布式事务请求未被成功响应。
22.在上述实现过程中,根据同一分布式事务请求对应的所有数据操作记录中的操作提交状态是否均为已实际提交状态,来判断该分布式事务请求是否被成功响应,保证响应结果的准确性、可靠性。
23.进一步地,所述方法还包括:
24.针对实际提交失败的所述数据内容操作信息,将其加入数据实际入库重试队列重新进行实际提交,并在实际提交成功后将其对应的操作提交状态更新为已实际提交状态。
25.在上述实现过程中,针对实际提交失败的数据内容操作信息重新进行实际提交,提供错误冗余机制,保证分布式事务请求能成功响应。
26.进一步地,所述方法还包括:
27.接收数据查询请求,生成携带已实际提交状态信息的查询语句;
28.根据所述查询语句在所述数据操作记录中进行查询,并返回查询结果。
29.在上述实现过程中,可以针对实际提交成功的有效数据生成查询条件并返回查询结果。
30.本技术实施例还提供了一种分布式事务处理装置,包括:
31.记录生成模块,用于在每当接收到分布式事务请求时,根据所述分布式事务请求生成对应的数据操作记录,每一条所述数据操作记录包括数据内容操作信息、事务标识信息以及操作提交状态;
32.预提交模块,用于对所述数据操作记录中的数据内容操作信息进行预提交;
33.实际提交模块,用于根据所述事务标识信息筛选出同一分布式事务请求对应的数据操作记录,在确认对同一所述分布式事务请求对应的所有数据内容操作信息预提交成功时,实际提交对应的数据内容操作信息,并生成操作提交状态更改指令,以指示将实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态;
34.确认模块,用于根据同一所述分布式事务请求对应的数据操作记录中当前记录的操作提交状态确认该分布式事务请求是否被成功响应。
35.本技术实施例还提供了一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序,以实现上述任一种的分布式事务处理方法。
36.本技术实施例中还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时,以实现上述任一种的分布式事务处理方法。
附图说明
37.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
38.图1为本技术实施例一提供的分布式事务处理方法的流程示意图;
39.图2为本技术实施例一提供的数据操作记录的结构示意图;
40.图3为本技术实施例二提供的分布式事务处理方法的流程示意图;
41.图4为本技术实施例三提供的分布式事务处理装置的结构示意图;
42.图5为本技术实施例四提供的电子设备的结构示意图。
具体实施方式
43.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
44.实施例一:
45.为解决现有的分布式事务处理方法需要引入第三方框架,处理流程复杂,成本较高的问题,本技术实施例中提供了一种新的分布式事务处理方法,该方法可以应用于服务器上,也可以应用于终端上,具体的可以参见图1所示,图1为本技术实施例中提供的分布式事务处理方法的流程示意图,包括:
46.s101:每当接收到分布式事务请求时,根据分布式事务请求生成对应的数据操作记录,每一条数据操作记录包括数据内容操作信息、事务标识信息以及操作提交状态。
47.步骤s101中生成的数据操作记录可以参见图2所示,针对每一条数据操作记录,开发人员可以预先设置数据内容操作字段、事务标识字段以及操作提交状态字段,每当接收到分布式事务请求时,针对对应的分布式事务请求生成事务标识信息以及数据内容操作信息,事务标识信息表示接收到的分布式事务请求的全局唯一码,可以由程序自动生成32位的uuid(universally unique identifier,通用唯一识别码)填充对应的事务标识字段,保证每次请求的唯一码都不会重复,用于标识该条数据操作记录是针对具体哪一条分布式事务请求生成的,数据内容操作信息包括但不限于用户id信息、创建时间信息、修改时间信息、与业务相关的数据修改信息等等。应当说明的是,本实施例中可以针对每一分布式事务请求在本地另行生成数据操作记录,即,可以单独生成一个数据操作记录表,或者也可以在数据库原业务表的基础上增加事务标识信息字段和操作提交状态字段,以区分数据所处的提交状态,以便于后续确认实际提交是否成功。
48.可以理解的是,sql(structured query language,结构化查询语言)拦截器可以统一拦截分布式事务请求,分析同一分布式事务请求所有的sql,收集待执行且需要分布式处理的相关数据库连接信息、表信息、表字段信息等,同一分布式事务请求中可能需要操作的数据库存在多个,同一数据库下待操作的表、字段也可能不一致,所以在接收到分布式事
务请求时需确定实现该请求需要操作的数据库、表以及字段之间的映射关系,根据该映射关系生成对应的数据操作记录,也即是说,本实施例中同一分布式事务请求对应的数据内容操作信息可以是针对不同数据库的操作信息,也可以是针对同一数据库的操作信息。
49.s102:对数据操作记录中的数据内容操作信息进行预提交。
50.步骤s102中对数据内容操作信息进行预提交实质上是指将数据内容操作信息提交至数据库,但数据尚未生效的过程。
51.应当说明的是,在第一种示例中,步骤s101中在生成数据操作记录时,可以直接将数据内容操作信息对应的操作提交状态设置为预提交状态,也即,将操作提交状态字段填充为预提交状态,此时预提交状态是数据内容操作信息的默认状态。在第二种示例中,步骤s101中在生成数据操作记录时,可以只生成数据内容操作信息以及事务标识信息,此时操作提交状态的值为空,可以在步骤s102进行预提交的过程中将对应的操作提交状态字段填充为预提交状态。在第三种示例中,步骤s101中在生成数据操作记录时,可以将操作提交状态字段填充为初始态,然后在步骤s102进行预提交的过程中将对应的操作提交状态字段由初始态更新为预提交状态。
52.在一些实施例中,在步骤s101之后,可以将生成的数据操作记录与本地线程绑定,此时步骤s102就是从本地线程获取数据内容操作信息,然后针对数据内容操作信息依次进行预提交。
53.s103:根据事务标识信息筛选出同一分布式事务请求对应的数据操作记录,在确认对同一分布式事务请求对应的所有数据内容操作信息预提交成功时,实际提交对应的数据内容操作信息,并生成操作提交状态更改指令,以指示将实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态。
54.步骤s103中在确认对同一分布式事务请求对应的所有数据内容操作信息预提交成功时,可以实际提交对应的数据内容操作信息,这里的实际提交是指将数据内容操作信息提交至数据库,并使对应操作生效,当同一分布式事务请求对应的至少一个数据内容操作信息预提交失败时,可以生成回滚消息,以指示回滚失败的预提交操作或回滚分布式事务请求对应的所有预提交操作。在上述实现过程中,在预提交失败时生成回滚消息,可以防止分布式事务请求错误响应。
55.应当说明的是,步骤s103中生成的操作提交状态更改指令可以直接指示自身将本地存储的数据操作记录中、实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态。在其他的一些实施例中,若步骤s101中生成的数据操作记录中需要操作的数据在不同的数据库中,执行步骤s101的服务器可以发送操作提交状态更改指令,以指示其他服务器上的数据库将相应的数据内容操作信息对应的操作提交状态更新为已实际提交状态。
56.s104:根据同一分布式事务请求对应的数据操作记录中当前记录的操作提交状态,确认该分布式事务请求是否被成功响应。
57.具体的,步骤s104中可以根据以下方式确认分布式事务请求是否被成功响应:
58.在每一分布式事务请求对应的所有数据操作记录中的数据内容操作信息的操作提交状态均为已实际提交状态时,确认该分布式事务请求被成功响应,否则,确认该分布式事务请求未被成功响应。
59.应当理解的是,步骤s102-步骤s104可以由事务管理器实现,针对步骤s103中实际提交失败的数据内容操作信息,事务管理器可以将其加入数据实际入库重试队列重新进行实际提交,并在实际提交成功后将其对应的操作提交状态更新为已实际提交状态,可以通过操作提交状态字段记录的值来判断实际提交是否成功,数据内容操作信息对应的操作提交状态未更新为实际提交状态则说明该数据内容操作信息暂未实际提交成功,需要重新进行实际提交,本实施例针对实际提交失败的数据内容操作信息重新进行实际提交,提供错误冗余机制,保证分布式事务请求能成功响应。
60.本实施例提供的分布式事务处理方法还可以包括如下步骤:
61.接收数据查询请求,生成携带已实际提交状态信息的查询语句;
62.根据该查询语句在数据操作记录中进行查询,并返回查询结果。
63.本实施例可以针对实际提交成功的有效数据生成查询条件并返回查询结果给上层调用者。
64.本实施例提供的分布式事务处理方法针对接收到的分布式事务请求,可以通过其对应的数据操作记录中操作提交状态的值以及事务标识信息确认该分布式事务请求对应的数据内容操作信息是否实际提交成功,进而可以确定该分布式事务请求是否被成功响应,无需引入第三方框架便可实现分布式事务处理,流程简单,降低了开发及维护成本。
65.实施例二:
66.为了更好的理解本发明提供的方案,本实施例提供一个更加具体的方案,具体流程请参见图3所示,包括:
67.s301:每当接收到分布式事务请求时,根据分布式事务请求生成对应的数据操作记录。
68.步骤s301中生成的每一条数据操作记录包括数据内容操作信息、事务标识信息以及操作提交状态的信息,这里的操作提交状态可以为预提交状态。开发人员可以预先设置数据操作记录所包括的条目,例如,数据操作记录可以包括数据内容操作字段、事务标识字段(下文简称k字段)以及操作提交状态字段(下文简称s字段),字段s定义有两种状态,1表示预提交状态,也即初始默认状态,2表示已实际提交状态,本实施例提供的分布式事务处理方法可以应用于电子设备,电子设备在接收到分布式事务请求时,自动生成对应的数据操作记录,包括自动填充s字段和k字段的内容。
69.s302:将生成的数据操作记录与本地线程绑定。
70.s303:从本地线程获取数据内容操作信息,然后针对数据内容操作信息依次进行预提交。
71.s304:根据事务标识信息筛选出同一分布式事务请求对应的数据操作记录。
72.s305:判断对同一分布式事务请求对应的所有数据内容操作信息预提交是否成功,如是,转至s306,否则,转至309。
73.s306:实际提交对应的数据内容操作信息,并将实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态。
74.s307:判断同一分布式事务请求对应的数据操作记录中当前记录的操作提交状态是否全部为已实际提交状态,如是,转至s308,否则,转至s310。
75.s308:确认该分布式事务请求被成功响应,结束流程。
76.s309:生成回滚消息,以指示回滚该分布式事务请求对应的所有预提交操作。
77.s310:对实际提交失败的数据内容操作信息重新进行实际提交,并在实际提交成功后将其对应的操作提交状态更新为已实际提交状态。
78.应当说明的是,步骤s310中可以周期性的向对应的数据库发送请求将s字段设置为2直至成功。
79.实施例三:
80.请参见图4所示,本实施例提供一种分布式事务处理装置,包括:记录生成模块401、预提交模块402、实际提交模块403以及确认模块404;其中,记录生成模块401用于在每接收到分布式事务请求时,根据分布式事务请求生成对应的数据操作记录,每一条数据操作记录包括数据内容操作信息、事务标识信息以及操作提交状态;预提交模块402用于对数据操作记录中的数据内容操作信息进行预提交;实际提交模块403用于根据事务标识信息筛选出同一分布式事务请求对应的数据操作记录,在确认对同一分布式事务请求对应的所有数据内容操作信息预提交成功时,实际提交对应的数据内容操作信息,并生成操作提交状态更改指令,以指示将实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态;确认模块404用于根据同一分布式事务请求对应的数据操作记录中当前记录的操作提交状态确认该分布式事务请求是否被成功响应。
81.针对每一条数据操作记录的结构,开发人员可以预先设置数据内容操作字段、事务标识字段以及操作提交状态字段,每当接收到分布式事务请求时,针对对应的分布式事务请求生成事务标识信息以及数据内容操作信息,事务标识信息表示接收到的分布式事务请求的全局唯一码,可以由程序自动生成32位的uuid(universally unique identifier,通用唯一识别码)填充对应的事务标识字段,保证每次请求的唯一码都不会重复,用于标识该条数据操作记录是针对具体那一条分布式事务请求生成的,数据内容操作信息包括但不限于用户id信息、创建时间信息、修改时间信息、与业务相关的数据修改信息等等。应当说明的是,本实施例中可以针对每一分布式事务请求在本地另行生成数据操作记录,也即是可以单独生成一个数据操作记录表,或者也可以在数据库原业务表的基础上增加事务标识信息字段和操作提交状态字段,以区分数据所处的提交状态,以便于后续确认实际提交是否成功。
82.可以理解的是,sql(structured query language,结构化查询语言)拦截器可以统一拦截分布式事务请求,分析同一分布式事务请求所有的sql,收集待执行且需要分布式处理的相关数据库连接信息、表信息、表字段信息等,同一分布式事务请求中可能需要操作的数据库存在多个,同一数据库下待操作的表、字段也可能不一致,所以在接收到分布式事务请求时需确定实现该请求需要操作的数据库、表以及字段之间的映射关系,根据该映射关系生成对应的数据操作记录,也即是说,本实施例中同一分布式事务请求对应的数据内容操作信息可以是针对不同数据库的操作信息,也可以是针对同一数据库的操作信息。
83.预提交模块402对数据内容操作信息进行预提交实质上是指将数据内容操作信息提交至数据库,但数据尚未生效。
84.应当说明的是,在第一种示例中,记录生成模块401在生成数据操作记录时,可以直接将数据内容操作信息对应的操作提交状态设置为预提交状态,也即将操作提交状态字段填充为预提交状态,此时预提交状态是数据内容操作信息的默认状态。在第二种示例中,
记录生成模块401在生成数据操作记录时,可以只生成数据内容操作信息以及事务标识信息,此时操作提交状态的值为空,可以在预提交模块402进行预提交时,再由该记录生成模块401将对应的操作提交状态字段填充为预提交状态。在第三种示例中,记录生成模块401在生成数据操作记录时,可以将操作提交状态字段填充为初始态,然后在预提交模块402进行预提交的过程中,由该记录生成模块401将对应的操作提交状态字段由初始态更新为预提交状态。
85.在一些实施例中,分布式事务处理装置还可以包括绑定模块,用于在记录生成模块401生成数据操作记录后,将生成的数据操作记录与本地线程绑定,此时预提交模块402可以从本地线程获取数据内容操作信息,然后针对数据内容操作信息依次进行预提交。
86.在确认对同一分布式事务请求对应的所有数据内容操作信息预提交成功时,实际提交模块403可以实际提交对应的数据内容操作信息,这里的实际提交是指将数据内容操作信息提交至数据库,并使对应操作生效,当同一分布式事务请求对应的至少一个数据内容操作信息预提交失败时,可以由回滚消息生成模块生成回滚消息,以指示回滚失败的预提交操作或回滚分布式事务请求对应的所有预提交操作。在上述实现过程中,在预提交失败时生成回滚消息,可以防止分布式事务请求错误响应。
87.应当说明的是,实际提交模块403中可以直接将本地存储的数据操作记录中、实际提交成功的数据内容操作信息对应的操作提交状态更新为已实际提交状态。在其他的一些实施例中,若记录生成模块401生成的数据操作记录中需要操作的数据在不同的数据库中,实际提交模块403可以发送操作提交状态更改指令,以指示其他服务器上的数据库将相应的数据内容操作信息对应的操作提交状态更新为已实际提交状态。
88.本实施例中的确认模块404可以在每一分布式事务请求对应的所有数据操作记录中的数据内容操作信息的操作提交状态均为已实际提交状态时,确认该分布式事务请求被成功响应,否则,确认该分布式事务请求未被成功响应。
89.本实施例提供的分布式事务处理装置中的实际提交模块403还用于将实际提交失败的数据内容操作信息加入数据实际入库重试队列重新进行实际提交,并在实际提交成功后将其对应的操作提交状态更新为已实际提交状态,具体的,可以通过操作提交状态字段记录的值来判断实际提交是否成功,数据内容操作信息对应的操作提交状态未更新为实际提交状态则说明该数据内容操作信息暂未实际提交成功,需要重新进行实际提交,本实施例针对实际提交失败的数据内容操作信息重新进行实际提交,提供错误冗余机制,保证分布式事务请求能成功响应。
90.本实施例提供的分布式事务处理装置还可以包括查询语句生成模块以及查询模块,其中,查询语句生成模块用于根据接收到的数据查询请求生成携带已实际提交状态信息的查询语句查询模块,查询模块用于根据该查询语句在数据操作记录中进行查询,并返回查询结果。
91.本实施例提供的分布式事务处理装置针对接收到的分布式事务请求,可以通过其对应的数据操作记录中操作提交状态的值以及事务标识信息确认该分布式事务请求对应的数据内容操作信息是否实际提交成功,进而可以确定该分布式事务请求是否被成功响应,无需引入第三方框架便可实现分布式事务处理,流程简单,降低了开发及维护成本。
92.实施例四:
93.基于同一发明构思,本实施例提供一种电子设备,请参见图5所示,该设备包括处理器501和存储器502,存储器502中存储有计算机程序,处理器501和存储器502通过通信总线实现通信,处理器501执行该计算机程序,以实现上述实施例一和/或实施例二中分布式事务处理方法的各步骤,在此不再赘述。可以理解,图5所示的结构仅为示意,设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
94.处理器501可以是一种集成电路芯片,具有信号处理能力。上述处理器501可以是通用处理器,包括中央处理器(centralprocessing unit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本技术实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
95.存储器502可以包括但不限于随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-onlymemory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electrically erasable programmable read-only memory,eeprom)等。
96.本实施例还提供了一种计算机存储介质,如软盘、光盘、硬盘、闪存、u盘、sd(secure digital memory card,安全数码卡)卡、mmc(multimedia card,多媒体卡)卡等,在该计算机存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器501执行,以实现上述实施例一和/或实施例二中分布式事务处理方法的各步骤,在此不再赘述。
97.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献