System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及分布式事务,特别是涉及一种分布式事务处理方法、装置、电子设备及存储介质。
技术介绍
1、随着业务需求和网络架构的变化,越来越多的业务需要依赖于分布式系统中不同服务节点的交互实现,不同的服务节点可以提供不同的微服务。
2、相关技术中,各个服务节点的数据库均为原生支持本地事务acid(atom icity-consistency-isolation-durability,不可分割性-一致性-隔离性-持久性)特性,例如,mysql数据库。相应的,针对一个业务请求,可以开启该业务请求对应的全局事务,该全局事务可以包含各个服务节点的本地事务,各个服务节点之间最终数据的一致性可以通过各数据库本地事务的acid特性实现。
3、然而,针对服务节点的数据库原生不支持本地事务的acid特性情况,如何实现各个服务节点之间的最终数据的一致性成为亟待解决的问题。
技术实现思路
1、本专利技术实施例的目的在于提供一种分布式事务处理方法、装置、电子设备及存储介质,针对服务节点的数据库原生不支持本地事务的acid特性的情况,也能够保证各个服务节点之间的最终数据的一致性。具体技术方案如下:
2、在本专利技术实施的第一方面,首先提供了一种分布式事务处理方法,所述方法应用于第一服务节点,所述方法包括:
3、当接收到携带有全局事务的事务标识(xid,transaction identifier)的第一消息时,获取本地数据库的锁;
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、本文档来自技高网...
【技术保护点】
1.一种分布式事务处理方法,其特征在于,所述方法应用于第一服务节点,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
3.根据权利要求1或2所述的方法,其特征在于,所述第一服务节点为开启所述全局事务的节点;
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
6.根据权利要求1或2所述的方法,其特征在于,所述第一服务节点为:参与所述全局事务的所有服务节点中,除开启所述全局事务的节点外的节点;所述第一消息为:调用所述第一服务节点的第三服务节点发送的远程调用请求;
7.根据权利要求1所述的方法,其特征在于,所述第一服务节点部署有分布式事务中间件中用于执行本地事务的组件;
8.一种分布式事务处理装置,其特征在于,所述装置应用于第一服务节点,所述装置包括:
9.一种电子设备,其特征在于,包括
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
...【技术特征摘要】
1.一种分布式事务处理方法,其特征在于,所述方法应用于第一服务节点,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
3.根据权利要求1或2所述的方法,其特征在于,所述第一服务节点为开启所述全局事务的节点;
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,在将所述待修改键的值修改为所述第二预设键中记录的值之后,所述方法还包括:
6.根据权利要求1或2所述的方法,其特征在于,所述第一服务节点为:参与所述全局事务的所有服务节点中,除...
【专利技术属性】
技术研发人员:郭宇,
申请(专利权)人:北京爱奇艺科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。