CN111639089B - 事务处理方法、装置、电子设备和计算机可读存储介质 - Google Patents

事务处理方法、装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN111639089B
CN111639089B CN202010476868.4A CN202010476868A CN111639089B CN 111639089 B CN111639089 B CN 111639089B CN 202010476868 A CN202010476868 A CN 202010476868A CN 111639089 B CN111639089 B CN 111639089B
Authority
CN
China
Prior art keywords
transaction
data
node
commit
line
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.)
Active
Application number
CN202010476868.4A
Other languages
English (en)
Other versions
CN111639089A (zh
Inventor
朱博帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202010476868.4A priority Critical patent/CN111639089B/zh
Publication of CN111639089A publication Critical patent/CN111639089A/zh
Application granted granted Critical
Publication of CN111639089B publication Critical patent/CN111639089B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种事务处理方法、装置、电子设备和计算机可读存储介质,方法应用于分布式集群中的第一节点,包括:接收针对第一事务的提交请求;如果第一事务所要处理的行数据中存在第二节点负责的第一行数据,向第二节点发送,第一事务中针对第一行数据的操作对应的第一预提交请求;如果在发送第一预提交请求后的预设时长内,未接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,返回执行向第二节点发送,第一事务中针对第一行数据的操作对应的预提交请求,基于上述处理,能够提高分布式集群业务处理的效率。

Description

事务处理方法、装置、电子设备和计算机可读存储介质
技术领域
本发明涉及数据库技术领域,特别是涉及一种事务处理方法、装置、电子设备和计算机可读存储介质。
背景技术
事务是指访问以及更新数据库中各种数据项的一个程序执行单元。在关系数据库中,一个事务可以是一条SQL(Structured Query Language,结构化查询语言)语句,或者,也可以是一组SQL语句。支持事务的分布式集群可以为事务分配事务标识,一个事务的事务标识可以包括该事务所要处理的各行数据各自对应的事务标识,进而,可以根据该事务的事务标识,进行事务的提交、回滚等操作,以保证数据库中数据的一致性。
相关技术中,可以在分布式集群中添加一个组件,该组件可以为事务分配事务标识,进而,分布式集群可以根据事务标识对事务进行处理,然而,该组件是整个分布式集群的单点,受其性能的影响,可能会成为分布式集群的瓶颈。
可见,相关技术中,基于分布式集群中的一个组件分配的事务标识进行业务处理,可能会降低分布式集群业务处理的效率。
发明内容
本发明实施例的目的在于提供一种事务处理方法、装置、电子设备和计算机可读存储介质,能够提高分布式集群业务处理的效率。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种事务处理方法,所述方法应用于分布式集群中的第一节点,所述方法包括:
接收针对第一事务的提交请求;
如果所述第一事务所要处理的行数据中,存在所述分布式集群中的第二节点负责的第一行数据,向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的第一预提交请求,以使所述第二节点更新所述第一行数据对应的事务标识,以及对所述第一事务中针对所述第一行数据的操作进行预提交处理;
如果在发送所述第一预提交请求后的预设时长内,未接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,返回执行所述向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的预提交请求步骤。
可选的,所述方法还包括:
当接收到所述第二节点发送的,第二事务中针对所述第一节点负责的第二行数据的操作对应的第二预提交请求时,更新所述第二行数据对应的事务标识;
当判定所述第二事务中针对所述第二行数据的操作预提交失败时,向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息。
可选的,在所述向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息之前,所述方法还包括:
如果当前正在对针对所述第二行数据的操作进行预提交处理,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
可选的,在所述向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息之前,所述方法还包括:
如果当前所述第二行数据所在的存储设备异常,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
可选的,所述方法还包括:
如果所述第一事务所要处理的行数据中,存在所述第一节点负责的第三行数据,更新所述第三行数据对应的事务标识,并对所述第一事务中针对所述第三行数据的操作进行预提交处理。
可选的,所述方法还包括:
如果在向所述第二节点发送所述第一预提交请求后的预设时长内,接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,且所述第一事务中针对所述第三行数据的操作预提交成功,则对所述第一事务进行提交处理。
可选的,所述方法还包括:
如果所述第一事务中针对所述第三行数据的操作预提交失败,确定所述第一事务提交失败。
在本发明实施的第二方面,还提供了一种事务处理装置,所述装置应用于分布式集群中的第一节点,所述装置包括:
接收模块,用于接收针对第一事务的提交请求;
发送模块,用于如果所述第一事务所要处理的行数据中,存在所述分布式集群中的第二节点负责的第一行数据,向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的第一预提交请求,以使所述第二节点更新所述第一行数据对应的事务标识,以及对所述第一事务中针对所述第一行数据的操作进行预提交处理;
第一处理模块,用于如果在发送所述第一预提交请求后的预设时长内,未接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,触发所述发送模块。
可选的,所述装置还包括:
第二处理模块,用于当接收到所述第二节点发送的,第二事务中针对所述第一节点负责的第二行数据的操作对应的第二预提交请求时,更新所述第二行数据对应的事务标识;
当判定所述第二事务中针对所述第二行数据的操作预提交失败时,向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息。
可选的,所述装置还包括:
第一判定模块,用于如果当前正在对针对所述第二行数据的操作进行预提交处理,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
可选的,所述装置还包括:
第二判定模块,用于如果当前所述第二行数据所在的存储设备异常,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
可选的,所述装置还包括:
第三处理模块,用于如果所述第一事务所要处理的行数据中,存在所述第一节点负责的第三行数据,更新所述第三行数据对应的事务标识,并对所述第一事务中针对所述第三行数据的操作进行预提交处理。
可选的,所述装置还包括:
提交模块,用于如果在向所述第二节点发送所述第一预提交请求后的预设时长内,接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,且所述第一事务中针对所述第三行数据的操作预提交成功,则对所述第一事务进行提交处理。
可选的,所述装置还包括:
第四处理模块,用于如果所述第一事务中针对所述第三行数据的操作预提交失败,确定所述第一事务提交失败。
在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的事务处理方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的事务处理方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的事务处理方法。
本发明实施例提供的一种事务处理方法,第一节点可以接收针对第一事务的提交请求,如果第一事务所要处理的行数据中,存在第二节点负责的第一行数据,则第一节点可以向第二节点发送,第一事务中针对第一行数据的操作对应的第一预提交请求。进而,第二节点可以更新第一行数据对应的事务标识,以及对第一事务中针对第一行数据的操作进行预提交处理。如果在发送第一预提交请求后的预设时长内,未接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,表明第一事务中针对第一行数据的操作预提交失败,进而,第一节点可以再次向第二节点发送,第一事务中针对第一行数据的操作对应的预提交请求,即,第一节点可以重新发起针对第一事务的预提交请求,以对第一事务重新进行提交。
基于上述处理,分布式集群中的节点可以对自身负责的行数据的事务标识进行更新,即,针对数据库中的每一行数据,其事务标识由所属的节点进行更新,也就是说,可以由分布式集群中的多个节点对事务标识进行更新,可以避免由一个组件分配事务标识导致的分布式集群的瓶颈,进而,能够提高分布式集群业务处理的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中提供的一种事务处理方法的流程图;
图2为本发明实施例中提供的一种事务处理方法的流程图;
图3为本发明实施例中提供的一种事务处理方法示例的流程图;
图4为本发明实施例中提供的一种事务处理装置的结构图;
图5为本发明实施例中提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
相关技术中,基于分布式集群中的一个组件分配的事务标识进行业务处理,可能会降低分布式集群业务处理的效率。
为了解决上述问题,本发明实施例提供了一种事务处理方法,参见图1,该方法可以应用于分布式集群中的第一节点,第一节点可以为分布式集群中的任一节点。节点可以为分布式集群中的服务器,或者,也可以分布式集群的服务器中开启的进程。该方法可以包括以下步骤:
S101:接收针对第一事务的提交请求。
S102:如果第一事务所要处理的行数据中,存在分布式集群中的第二节点负责的第一行数据,向第二节点发送,第一事务中针对第一行数据的操作对应的第一预提交请求。
使得第二节点更新第一行数据对应的事务标识,以及对第一事务中针对第一行数据的操作进行预提交处理。
S103:如果在发送第一预提交请求后的预设时长内,未接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,返回执行向第二节点发送,第一事务中针对第一行数据的操作对应的第一预提交请求步骤。
基于本发明实施例提供的事务处理方法,分布式集群中的节点可以对自身负责的行数据的事务标识进行更新,即,针对数据库中的每一行数据,其事务标识由所属的节点进行更新,也就是说,可以由分布式集群中的多个节点对事务标识进行更新,可以避免由一个组件分配事务标识导致的分布式集群的瓶颈,进而,能够提高分布式集群业务处理的效率。
另外,由于每一行数据的事务标识由所属的节点进行更新,即,随着分布式集群中节点的横向扩展,能够提高分布式集群分配事务标识的能力。
进一步地,本发明实施例的事务处理方法,并不依赖于分布式集群中服务器的系统时间,能够提高本发明实施例的方法的适应性。
在步骤S101中,客户端可以对分布式集群的数据库中的数据进行操作,例如,客户端可以读取数据库中的行数据、在数据库中的行数据中写入新数据、对数据库中的行数据的进行修改等。
一种实现方式中,客户端可以基于事务的方式,对数据库中的多个行数据进行操作,即,客户端可以向分布式集群中的第一节点发送针对第一事务的提交请求,第一事务可以包括对分布式集群的数据库中的多个行数据的操作。
第一节点可以根据该提交请求,对第一事务包含的操作进行提交,以在第一事务所要处理的各行数据所在的存储设备中完成相应的操作。
在步骤S102中,第二节点可以为一个,也可以为多个。
分布式集群中的各节点可以对应不同行数据,节点负责对对应的行数据进行操作,并对对应的行数据的事务标识进行更新。
因此,如果第一事务所要处理的行数据中存在第二节点负责的行数据(即本发明实施例中的第一行数据),第一节点可以向第二节点发送,第一事务中针对第一行数据的操作对应的预提交请求(即本发明实施例中的第一预提交请求),即,第一节点可以向第二节点,请求对第一事务中针对第一行数据的操作进行预提交。
进而,在第二节点接收到第一预提交请求时,第二节点可以更新第一行数据对应的事务标识,还可以对第一事务中针对第一行数据的操作进行预提交处理。
一种实现方式中,行数据的事务标识可以用行数据的标识和针对该行数据的事务的序号确定。
例如,行数据的事务标识可以用db_table_uniquekey_X(DataBase_table_uniquekey_X,数据库_数据表_唯一索引_X)表示,db表示该行数据所在的数据库,table表示该行数据所在的数据表,uniquekey表示该行数据的索引值,X表示针对该行数据的事务的序号。
每一节点本地可以记录该节点负责的行数据的事务标识中X的最大值,每当接收到新的针对该行数据的操作对应的预提交请求时,也即,分布式集群接收到针对该行数据的新的事务的提交请求时,该节点可以根据记录的X的最大值,对该行数据的事务标识进行更新。
例如,X可以从1开始计算,当节点第一次接收到针对某一行数据的操作对应的预提交请求时,可以确定当前该行数据的事务标识中的X为1,并记录在本地;当节点再次接收到针对该行数据的操作对应的预提交请求时,可以获取本地记录的该行数据的事务标识中X的值,并将获取的X值加1,以更新该行数据的事务标识中的X的值,即,更新该行数据的事务标识。
在步骤S103中,预设时长可以由技术人员根据经验进行设置。
如果在发送第一预提交请求后的预设时长内,第一节点未接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,表明第一事务中针对第一行数据的操作预提交失败。
进而,为了保证数据的一致性,第一节点可以确定第一事务预提交失败,此时,第一节点无法对第一事务进行提交,第一节点可以再次向第二节点,请求对第一事务中针对第一行数据的操作进行预提交。
一种实现方式中,在发送第一预提交请求后的预设时长内,如果第二节点预提交第一事务中针对第一行数据的操作失败,第二节点可以向第一节点发送,第一事务中针对第一行数据的操作对应的预提交失败消息,进而,第一节点可以确定第一事务预提交失败。
另一种实现方式中,在发送第一预提交请求后的预设时长内,第一节点未接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交失败消息,也未接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,第一节点也可以确定第一事务预提交失败。
可以理解的是,如果第二节点为多个,针对任意一个第二节点,如果在发送第一预提交请求后的预设时长内,第一节点未接收到该第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,第一节点可以确定第一事务预提交失败。
相应的,在发送第一预提交请求后的预设时长内,只有当第一节点接收到所有第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息时,第一节点确定第一事务预提交成功。
在一个实施例中,参见图2,该方法还可以包括以下步骤:
S104:当接收到第二节点发送的,第二事务中针对第一节点负责的第二行数据的操作对应的第二预提交请求时,更新第二行数据对应的事务标识。
在本发明实施例中,如果第二节点接收到针对第二事务的提交请求,且第二事务所要处理的行数据中包含第一节点负责的行数据(即本发明实施例中的第二行数据),则第二节点可以向第一节点发送,第二事务中针对第二行数据的操作对应的预提交请求(即本发明实施例中的第二预提交请求)。
第一节点可以根据第二预提交请求,更新第二行数据对应的事务标识,第一节点更新第二行数据对应的事务标识的方法,可以参考上述实施例中对行数据的事务标识进行更新的详细介绍。
S105:当判定第二事务中针对第二行数据的操作预提交失败时,向第二节点发送,第二事务中针对第二行数据的操作对应的预提交失败消息。
在本发明实施例中,在接收到第二预提交请求时,第一节点还可以对第二事务中针对第二行数据的操作进行预提交,相应的,当判定第二事务中针对第二行数据的操作预提交失败时,第一节点可以向第二节点发送,第二事务中针对第二行数据的操作对应的预提交失败消息。
其中,针对行数据的操作预提交失败,可能是由于多副本一致性协议导致分布式集群中的leader(领导节点)切换造成的,或者,也可能是网络故障、存储设备异常导致的。
相应的,第二节点可以再次向第一节点,请求对第二事务中针对第二行数据的操作进行预提交。
本发明实施例中,对于S101-S103和S104-S105的执行顺序并不进行限定。
基于上述处理,能够保证数据的一致性,且使得分布式集群能够对第二行数据重新预提交,避免业务中断。
在一个实施例中,在S105之前,该方法还可以包括以下步骤:
如果当前正在对针对第二行数据的操作进行预提交处理,则判定第二事务中针对第二行数据的操作预提交失败。
在本发明实施例中,在接收到第二预提交请求时,如果第一节点当前正在对针对第二行数据的操作进行预提交处理,即,当前存在其他事务(可以称为第三事务)需要对第二行数据的操作进行预提交处理,且未完成第三事务的提交,此时,为了避免数据出错,第一节点可以确定当前无法对第二事务中针对第二行数据的操作进行预提交,即,第一节点可以判定第二事务中针对第二行数据的操作预提交失败。
基于上述处理,能够在事务发生冲突时,保证数据的一致性。
在一个实施例中,在S105之前,该方法还可以包括以下步骤:
如果当前第二行数据所在的存储设备异常,则判定第二事务中针对第二行数据的操作预提交失败。
其中,第二行数据所在的存储设备可以为磁盘或者其他用于存储数据的设备。
在本发明实施例中,在接收到第二预提交请求时,如果第一节点判定当前第二行数据所在的存储设备异常,即,此时,第一节点当前无法对第二事务中针对第二行数据的操作进行预提交,进而,第一节点可以判定第二事务中针对第二行数据的操作预提交失败。
基于上述处理,能够在存储设备异常时,保证数据的一致性。
在一个实施例中,该方法还可以包括以下步骤:如果第一事务所要处理的行数据中,存在第一节点负责的第三行数据,更新第三行数据对应的事务标识,并对第一事务中针对第三行数据的操作进行预提交处理。
在本发明实施例中,如果第一事务所要处理的行数据中,存在第一节点负责的行数据(即本发明实施例中的第三行数据),此时,第一节点可以更新第三行数据对应的事务标识,另外,第一节点还可以对第一事务中针对第三行数据的操作进行预提交处理。
第一节点更新第三行数据对应的事务标识的方法,可以参考上述实施例中对行数据的事务标识进行更新的详细介绍。
基于上述处理,能够保证数据的一致性。
在一个实施例中,该方法还可以包括以下步骤:如果在发送第一预提交请求后的预设时长内,接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,且第一事务中针对第三行数据的操作预提交成功,则对第一事务进行提交处理。
在本发明实施例中,如果在发送第一预提交请求后的预设时长内,第一节点接收到第二节点发送的,第一事务中针对第一行数据的操作对应的预提交成功消息,表明第一事务中针对第一行数据的操作预提交成功。进而,如果第一事务中针对第三行数据的操作也预提交成功,表明第一事务中针对所要处理的各行数据的操作均预提交成功,此时,第一节点可以提交第一事务。
基于上述处理,能够准确地完成第一事务的提交,避免业务中断。
在一个实施例中,该方法还可以包括以下步骤:如果第一事务中针对第三行数据的操作预提交失败,确定第一事务提交失败。
在本发明实施例中,如果第一事务中针对第三行数据的操作预提交失败,为了保证数据的一致性,此时,第一节点可以确定第一事务提交失败。
进而,第一节点可以重新提交第一事务,例如,第一节点可以再次向第二节点发送,第一事务中针对第一行数据的操作对应的预提交请求,以及,再次对第一事务中针对第三行数据的操作进行预提交处理。
参见图3,图3为本申请实施例提供的一种事务处理方法示例的流程图,该方法可以应用于分布式集群中的第一节点和第二节点,该方法可以包括以下步骤:
S301:第一节点接收针对第一事务的提交请求。
S302:第一节点更新第一事务所要处理的行数据中,第一节点负责的第三行数据对应的事务标识,并对第一事务中针对第三行数据的操作进行预提交处理。
S303:第一节点向第二节点发送,第一事务中针对第一行数据的操作对应的第一预提交请求。
其中,第一行数据为第一事务所要处理的行数据中第二节点负责的行数据。
S304:第二节点更新第一行数据对应的事务标识。
S305:第二节点判断当前是否正在对针对第一行数据的操作进行预提交处理,如果是,执行S306,如果否,执行S307。
S306:第二节点向第一节点发送,第一事务中针对第一行数据的操作对应的预提交失败消息。
S307:第二节点判断当前第一行数据所在的存储设备是否异常,如果是,执行S306,如果否,执行S308。
S308:第二节点向第一节点发送,第一事务中针对第一行数据的操作对应的预提交成功消息。
S309:第一节点重新对第一事务进行预提交。
S3010:如果第一事务中针对第三行数据的操作预提交成功,第一节点确定提交第一事务。
基于相同的发明构思,参见图4,为本发明实施例还提供了一种事务处理装置的结构图,所述装置应用于分布式集群中的第一节点,所述装置包括:
接收模块401,用于接收针对第一事务的提交请求;
发送模块402,用于如果所述第一事务所要处理的行数据中,存在所述分布式集群中的第二节点负责的第一行数据,向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的第一预提交请求,以使所述第二节点更新所述第一行数据对应的事务标识,以及对所述第一事务中针对所述第一行数据的操作进行预提交处理;
第一处理模块403,用于如果在发送所述第一预提交请求后的预设时长内,未接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,触发所述发送模块402。
可选的,所述装置还包括:
第二处理模块,用于当接收到所述第二节点发送的,第二事务中针对所述第一节点负责的第二行数据的操作对应的第二预提交请求时,更新所述第二行数据对应的事务标识;
当判定所述第二事务中针对所述第二行数据的操作预提交失败时,向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息。
可选的,所述装置还包括:
第一判定模块,用于如果当前正在对针对所述第二行数据的操作进行预提交处理,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
可选的,所述装置还包括:
第二判定模块,用于如果当前所述第二行数据所在的存储设备异常,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
可选的,所述装置还包括:
第三处理模块,用于如果所述第一事务所要处理的行数据中,存在所述第一节点负责的第三行数据,更新所述第三行数据对应的事务标识,并对所述第一事务中针对所述第三行数据的操作进行预提交处理。
可选的,所述装置还包括:
提交模块,用于如果在向所述第二节点发送所述第一预提交请求后的预设时长内,接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,且所述第一事务中针对所述第三行数据的操作预提交成功,则对所述第一事务进行提交处理。
可选的,所述装置还包括:
第四处理模块,用于如果所述第一事务中针对所述第三行数据的操作预提交失败,确定所述第一事务提交失败。
基于本发明实施例提供的事务处理装置,分布式集群中的节点可以对自身负责的行数据的事务标识进行更新,即,针对数据库中的每一行数据,其事务标识由所属的节点进行更新,也就是说,可以由分布式集群中的多个节点对事务标识进行更新,可以避免由一个组件分配事务标识导致的分布式集群的瓶颈,进而,能够提高分布式集群业务处理的效率。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
接收针对第一事务的提交请求;
如果所述第一事务所要处理的行数据中,存在所述分布式集群中的第二节点负责的第一行数据,向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的第一预提交请求,以使所述第二节点更新所述第一行数据对应的事务标识,以及对所述第一事务中针对所述第一行数据的操作进行预提交处理;
如果在发送所述第一预提交请求后的预设时长内,未接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,返回执行所述向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的预提交请求步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个存储设备存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的事务处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的事务处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种事务处理方法,其特征在于,所述方法应用于分布式集群中的第一节点,所述第一节点为所述分布式集群中的任一节点,所述方法包括:
接收针对第一事务的提交请求;
如果所述第一事务所要处理的行数据中,存在所述分布式集群中的第二节点负责的第一行数据,向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的第一预提交请求,以使所述第二节点更新所述第一行数据对应的事务标识,以及对所述第一事务中针对所述第一行数据的操作进行预提交处理;其中,一个行数据对应的事务标识为:基于该行数据的标识和针对该行数据的事务的序号确定的;
如果在发送所述第一预提交请求后的预设时长内,未接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,返回执行所述向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的预提交请求步骤。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到所述第二节点发送的,第二事务中针对所述第一节点负责的第二行数据的操作对应的第二预提交请求时,更新所述第二行数据对应的事务标识;
当判定所述第二事务中针对所述第二行数据的操作预提交失败时,向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息。
3.根据权利要求2所述的方法,其特征在于,在所述向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息之前,所述方法还包括:
如果当前正在对针对所述第二行数据的操作进行预提交处理,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
4.根据权利要求2所述的方法,其特征在于,在所述向所述第二节点发送,所述第二事务中针对所述第二行数据的操作对应的预提交失败消息之前,所述方法还包括:
如果当前所述第二行数据所在的存储设备异常,则判定所述第二事务中针对所述第二行数据的操作预提交失败。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述第一事务所要处理的行数据中,存在所述第一节点负责的第三行数据,更新所述第三行数据对应的事务标识,并对所述第一事务中针对所述第三行数据的操作进行预提交处理。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
如果在发送所述第一预提交请求后的预设时长内,接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,且所述第一事务中针对所述第三行数据的操作预提交成功,则对所述第一事务进行提交处理。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
如果所述第一事务中针对所述第三行数据的操作预提交失败,确定所述第一事务提交失败。
8.一种事务处理装置,其特征在于,所述装置应用于分布式集群中的第一节点,所述第一节点为所述分布式集群中的任一节点,所述装置包括:
接收模块,用于接收针对第一事务的提交请求;
发送模块,用于如果所述第一事务所要处理的行数据中,存在所述分布式集群中的第二节点负责的第一行数据,向所述第二节点发送,所述第一事务中针对所述第一行数据的操作对应的第一预提交请求,以使所述第二节点更新所述第一行数据对应的事务标识,以及对所述第一事务中针对所述第一行数据的操作进行预提交处理;其中,一个行数据对应的事务标识为:基于该行数据的标识和针对该行数据的事务的序号确定的;
第一处理模块,用于如果在发送所述第一预提交请求后的预设时长内,未接收到所述第二节点发送的,所述第一事务中针对所述第一行数据的操作对应的预提交成功消息,触发所述发送模块。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
CN202010476868.4A 2020-05-29 2020-05-29 事务处理方法、装置、电子设备和计算机可读存储介质 Active CN111639089B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010476868.4A CN111639089B (zh) 2020-05-29 2020-05-29 事务处理方法、装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010476868.4A CN111639089B (zh) 2020-05-29 2020-05-29 事务处理方法、装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111639089A CN111639089A (zh) 2020-09-08
CN111639089B true CN111639089B (zh) 2024-03-08

Family

ID=72331586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010476868.4A Active CN111639089B (zh) 2020-05-29 2020-05-29 事务处理方法、装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111639089B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106855821A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 一种分布式事务处理方法及装置
CN109325073A (zh) * 2018-08-14 2019-02-12 阿里巴巴集团控股有限公司 分布式事务的实现方法和装置
CN109783204A (zh) * 2018-12-28 2019-05-21 咪咕文化科技有限公司 一种分布式事务处理方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936578B2 (en) * 2017-06-01 2021-03-02 Sap Se Client-driven commit of distributed write transactions in a database environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106855821A (zh) * 2015-12-08 2017-06-16 阿里巴巴集团控股有限公司 一种分布式事务处理方法及装置
CN109325073A (zh) * 2018-08-14 2019-02-12 阿里巴巴集团控股有限公司 分布式事务的实现方法和装置
CN109783204A (zh) * 2018-12-28 2019-05-21 咪咕文化科技有限公司 一种分布式事务处理方法、装置及存储介质

Also Published As

Publication number Publication date
CN111639089A (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
CN108897628B (zh) 一种分布式锁的实现方法、装置及电子设备
CN110661658B (zh) 一种区块链网络的节点管理方法、装置及计算机存储介质
CN110535692B (zh) 故障处理方法、装置、计算机设备、存储介质及存储系统
CN111355600B (zh) 一种主节点确定方法和装置
CN112835885B (zh) 一种分布式表格存储的处理方法、装置及系统
CN111125240B (zh) 一种分布式事务实现方法、装置、电子设备及存储介质
CN112598529B (zh) 数据处理方法及装置、计算机可读存储介质、电子设备
CN112015595B (zh) 主从数据库的切换方法、计算设备及存储介质
CN111639089B (zh) 事务处理方法、装置、电子设备和计算机可读存储介质
CN111125168B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN113810216A (zh) 一种集群的故障切换方法、装置及电子设备
CN115037653B (zh) 业务流量监控方法、装置、电子设备和存储介质
CN110955460A (zh) 一种服务进程启动方法、装置、电子设备和存储介质
CN115858668A (zh) 分布式事务处理方法、装置、电子装置及存储介质
CN112860746B (zh) 一种基于缓存削减的方法、设备及系统
CN112711466B (zh) 悬挂事务巡检方法和装置、电子设备和存储介质
CN115438020A (zh) 一种数据库资源调度方法、装置、设备及介质
CN112905322B (zh) 资源加锁的方法、计算设备及计算机存储介质
CN111884932B (zh) 一种链路确定方法、装置、设备和计算机可读存储介质
CN111629054B (zh) 消息处理方法、装置、系统、电子设备及可读存储介质
CN110113187B (zh) 一种配置更新方法、装置、配置服务器及配置系统
CN112596867A (zh) 一种悬挂事务处理方法及一种分布式数据库系统
EP4170518A1 (en) Distributed transaction processing method, terminal and computer readable storage medium
US12001450B2 (en) Distributed table storage processing method, device and system
CN112860708B (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
GR01 Patent grant
GR01 Patent grant