CN112596801A - 事务处理方法、装置、设备、存储介质、数据库 - Google Patents
事务处理方法、装置、设备、存储介质、数据库 Download PDFInfo
- Publication number
- CN112596801A CN112596801A CN201910870661.2A CN201910870661A CN112596801A CN 112596801 A CN112596801 A CN 112596801A CN 201910870661 A CN201910870661 A CN 201910870661A CN 112596801 A CN112596801 A CN 112596801A
- Authority
- CN
- China
- Prior art keywords
- data
- data node
- transaction
- write
- instruction
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 27
- 238000012790 confirmation Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 abstract description 16
- 238000004891 communication Methods 0.000 abstract description 7
- 230000001960 triggered effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 239000002253 acid Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种事务处理方法、装置、设备、存储介质、数据库,该事务处理方法包括:接收分布式事务,分布式事务对应有多个数据读写操作;向多个数据读写操作各自对应的数据节点发送对应的数据读写指令;若多个数据读写操作涉及多个数据节点,则从多个数据节点中确定主数据节点和从数据节点;向主数据节点发送事务日志写入指令;采用二阶段提交协议控制从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制主数据节点提交接收到的数据读写指令和事务日志写入指令。由于在上述分布式事务的提交过程中,主数据节点上使用的是一阶段提交协议而非二阶段提交协议,从而,降低了整体的网络通信次数,以有助于提高事务提交的处理效率。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种事务处理方法、装置、设备、存储介质、数据库。
背景技术
事务是为了实现特定的业务功能而访问数据库的最小逻辑工作单位,由一个操作序列构成。
在分布式数据库中,一般采用二阶段提交(Two-phase Commit)协议来保证分布式事务的ACID(原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability))性质。所谓二阶段包括准备提交阶段和提交阶段。在执行二阶段提交协议时,涉及到两个角色:协调者(也称为事务管理器)和参与者(也称为资源管理器),对于一个分布式事务来说,该分布式事务所涉及到的各数据节点作为参与者。协调者执行二阶段提交协议时,在每个阶段都需要分别向各个参与者发送相关指令,从而在分布式事务提交的过程中常常需要进行多次网络通信,导致分布式事务提交的处理效率低下。
发明内容
本发明实施例提供一种事务处理方法、装置、设备、存储介质、数据库,用以高效地实现分布式事务的提交处理。
第一方面,本发明实施例提供一种事务处理方法,该方法包括:
接收分布式事务,所述分布式事务对应有多个数据读写操作;
向所述多个数据读写操作各自对应的数据节点发送对应的数据读写指令;
若所述多个数据读写操作涉及多个数据节点,则从所述多个数据节点中确定主数据节点和从数据节点;
向所述主数据节点发送事务日志写入指令;
采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令。
第二方面,本发明实施例提供一种事务处理装置,该装置包括:
接收模块,用于接收分布式事务,所述分布式事务对应有多个数据读写操作;
发送模块,用于向所述多个数据读写操作各自对应的数据节点发送对应的数据读写指令;
确定模块,用于若所述多个数据读写操作涉及多个数据节点,则从所述多个数据节点中确定主数据节点和从数据节点;
所述发送模块,还用于向所述主数据节点发送事务日志写入指令;
提交模块,用于采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令。
第三方面,本发明实施例提供一种电子设备,其中包括处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现第一方面中的事务处理方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现第一方面中的事务处理方法。
在本发明实施例中,当业务侧产生对应有多个数据读写操作的分布式事务时,首先,将该多个数据读写操作分别下发到各自对应的数据节点中,即向多个数据读写操作各自对应的数据节点发送对应的数据读写指令。如果这些数据读写操作涉及的各数据节点没有异常,而且如果这些数据读写操作涉及到多个数据节点,则从多个数据节点中确定主数据节点和从数据节点。之后,采用不同的方式对主数据节点和从数据节点进行事务提交的控制。具体来说,针对主数据节点来说,一方面,向主数据节点发送事务日志写入指令,以便最终可以将分布式事务对应的事务日志写入到主数据节点中,另一方面,采用一阶段提交协议控制主数据节点提交接收到的数据读写指令和事务日志写入指令。针对从数据节点来说,采用二阶段提交协议控制从数据节点提交接收到的数据读写指令。
由于在上述分布式事务的提交过程中,主数据节点上使用的是一阶段提交协议而非二阶段提交协议,从而,降低了整体的网络通信次数,以有助于提高事务提交的处理效率。另外,在分布式事务提交过程中,需要各数据节点的数据状态与事务日志中记录的操作行为保持一致,即需要各数据节点对应的数据读写操作的提交状态与事务日志的提交状态保持一致,通过将分布式事务的事务日志写入操作也作为主数据节点需要执行的一系列操作中的一部分,在对主数据节点触发一阶段提交协议时,便可以使得主数据节点既完成被下发的数据读写操作的提交,也完成了事务日志的写入,从而高效地保证了主数据节点的数据读写操作的提交状态与事务日志的提交状态保持一致,其他数据节点通过二阶段提交协议保证了各自的数据读写操作的提交状态与事务日志的提交状态保持一致。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的事务处理方法的流程图;
图2为图1所示事务处理方法的一种实现方式的流程图;
图3为本发明另一实施例提供的事务处理方法的流程图;
图4为图3所示事务处理方法的一种实现方式的流程图;
图5为本发明一实施例提供的事务处理装置的结构示意图;
图6为与图5所示实施例提供的事务处理装置对应的电子设备的结构示意图;
图7为本发明一实施例提供的数据库的组成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
先对本文实施例中涉及到的几个概念进行说明:
分布式数据库系统是指数据分存在计算机网络中的多个数据节点(即多台计算机)上的数据库系统。
事务是为了实现特定的业务功能而访问数据库的最小逻辑工作单位,由一个操作序列构成。只有这个操作序列包含的全部操作都成功完成,才能使得数据库从一种状态转换为另一种状态。如果这个操作序列中的任意一个操作发生错误,那么就需要回滚之前已经完成的操作。也就是说,同一个事务中的所有操作,要么全都正确执行,要么全都不要执行。
由于在分布式数据库中数据是分布的,一个事务的执行可能会涉及到多个数据节点上存储的数据,因此,可以将分布式数据库中的事务称为分布式事务。
图1为本发明一实施例提供的事务处理方法的流程图,如图1所示,可以包括如下步骤:
101、接收分布式事务,分布式事务对应有多个数据读写操作。
102、向多个数据读写操作各自对应的数据节点发送对应的数据读写指令。
103、若多个数据读写操作涉及多个数据节点,则从多个数据节点中确定主数据节点和从数据节点。
104、向主数据节点发送事务日志写入指令,采用二阶段提交协议控制从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制主数据节点提交接收到的数据读写指令和事务日志写入指令。
本发明实施例提供的事务处理方法可以由一种数据库服务(程序)来执行,该服务可以部署在服务器等电子设备中。
分布式事务由业务侧(或者说用户侧)触发。比如,在某种转账业务中,用户A给用户B转账金额1000元,那么此时会触发与该转账对应的分布式事务,简单来说,该分布式事务可以包括两种操作:在用户A的账号中扣除1000元,在用户B的账号中增加1000元。可以理解的是,如果说该分布式事务正确提交,那就意味着上述两个操作都成功,如果上述两个操作中的任一个不成功,那么该分布式事务提交失败,此时,用户A的账号以及用户B的账号都恢复(回滚)到该分布式事务之前的状态。
值得说明的是,由于分布式事务是由业务侧触发的,用户触发的分布式事务中描述的操作可以认为是逻辑操作,并非是可以直接由分布式数据库系统中的数据节点执行的物理操作,因此,在实际应用中,一般需要将分布式事务中包含的逻辑操作序列转换为物理操作序列,进而,将转换后的物理操作序列逐个下发到对应的数据节点。基于此,上述步骤101中所说的“分布式事务对应有多个数据读写操作”可以认为是将分布式事务中包含的各逻辑操作转换为物理操作后得到的,因为对分布式数据库中的数据所进行的操作可以概括为是数据读写操作,因此这里将物理操作称为多个数据读写操作。
在一种实际应用中,当分布式事务中包括多个逻辑操作时,并不一定是同时将该多个逻辑操作都转换为物理操作,进而同时下发到各自对应的数据节点的,而是按照多个逻辑操作的触发顺序,顺次针对每个逻辑操作进行物理操作的转化以及下发的。
下面结合图2所示实施例来示例性说明分布式事务对应的多个数据读写操作向各自对应的数据节点的下发过程。在图2中,假设某分布式事务包括两个逻辑操作:逻辑操作1、逻辑操作2,并且假设逻辑操作1转化为的物理操作称为物理操作1,逻辑操作2转化为的物理操作称为物理操作2。
基于该假设,如图2所示,分布式事务对应的多个数据读写操作向各自对应的数据节点的下发过程包括如下步骤:
201、业务侧向分布式数据库服务发送事务开始指令。
实际应用中,业务侧产生一个分布式事务时,在将该分布式事务发送给分布式数据库服务的时候,需要告知分布式数据库服务即将有个分布式事务下发给它。而由于一个分布式事务中往往包括多个逻辑操作,因此,需要界定一个分布式事务的起始和结束,而界定一个分布式事务的起始和结束是通过业务侧在发起一个分布式事务的时候,先触发事务开始指令,以告知分布式数据库服务有一个分布式事务将下发,并在将构成分布式事务的多个逻辑操作都发送完毕后,业务侧向分布式数据库服务发送事务结束指令,以告知分布式数据库服务该分布式事务已经下发完毕。
因此,当业务侧有一个分布式事务产生并需要提交时,首先会触发该事务开始指令,以表明接下来触发的多个逻辑操作是属于一个分布式事务的。
202、分布式数据库服务生成分布式事务标识,以标记一个分布式事务开始。
203、分布式数据库服务向业务侧反馈确认信息。
分布式数据库服务在接收到上述事务开始指令后,标记该分布式事务,具体地,可以生成一个与该分布式事务对应的标识信息。之后,向业务侧反馈确认信息,以告知业务侧可以进行后续的处理。
204、业务侧向分布式数据库服务发送逻辑操作1。
205、分布式数据库服务向数据节点1发送本地事务开始指令以及物理操作1。
206、数据节点1向分布式数据库服务反馈确认信息。
207、分布式数据库服务向业务侧反馈确认信息。
其中,分布式数据库服务在接收到分布式事务中包含的第一个逻辑操作:逻辑操作1时,将该逻辑操作1转化为物理操作1。举例来说,假设逻辑操作1是:在用户A的账号中扣除1000元。那么,分布式数据库服务可以基于已知的各数据节点中包含的用户账号的信息确定出与该逻辑操作1对应的数据节点为数据节点1。物理操作1比如可以是:在数据节点1中查找用户A的账号所对应的一行数据,进而,从这行数据中对存款金额这个字段做减去1000的计算。
可以理解的是,上述步骤中所述的向数据节点1发送物理操作1,是一种简单说法,严谨地说,应该描述为向数据节点1发送与物理操作1对应的数据读写指令,下文中出现的类似说法与之同理,不赘述。
另外,在步骤205中,分布式数据库服务之所以向数据节点1发送事务开始指令,是因为对于业务侧当前触发的分布式事务来说,物理操作1是第一个向数据节点1下发的物理操作,是为了告知数据节点1当前有一个分布式事务需要它处理,亦即告知数据节点1启动一个本地事务的处理流程。
形象地说,相当于业务侧触发了一个包含多个任务的请求,这多个任务被分配给不同的数据节点处理,对于其中的每个数据节点,都需要其在接收到分配给自己的全部任务后再一起执行,那么对于每个数据节点来说,需要知道接收任务的起止点,亦即需要知道哪些任务是需要一起执行的,而事务起始指令和事务结束指令便起到界定数据节点所需执行的任务的起止点的作用。
数据节点1在接收到事务开始指令和物理操作1后,如果本地没有故障,则会向分布式数据库服务反馈确认信息,进而,分布式数据库服务向业务侧反馈确认信息,以使业务侧得知其逻辑操作1已经被正常下发给对应的数据节点。当然,如果数据节点1存在故障,比如网络连接中断、宕机等,分布式数据库服务在设定的时间内可能无法接收到数据节点1反馈的确认信息,此时,分布式数据库服务确定分布式事务结束,即无法完整该分布式事务的提交,向业务侧反馈错误提示信息。
值得说明的是,数据节点1在接收到物理操作1时,可以暂时不执行该物理操作1,只是保存该物理操作1。当然,也可以执行该物理操作1,只是,执行结果并不生效,亦即并不提交该物理操作1。此时,如果数据节点1执行该物理操作1,相当于只是数据节点1预执行物理操作1,仅是看自己是否具有执行该物理操作1的能力,而不真的令物理操作1的执行结果作用到对应的数据上。举例来说,假设物理操作1是在用户A的账号中扣除1000元,那么,不提交该物理操作1的含义是指,即使执行在用户A的账号的余额中减去1000元的操作,该操作结果也不会被更新到用户A的账号中。
208、业务侧向分布式数据库服务发送逻辑操作2。
209、分布式数据库服务向数据节点2发送本地事务开始指令以及物理操作2。
210、数据节点2向分布式数据库服务反馈确认信息。
211、分布式数据库服务向业务侧反馈确认信息。
212、业务侧向分布式数据库服务发送事务结束指令。
业务侧接收到针对逻辑操作1的确认反馈后,进行逻辑操作2的下发。这里假设逻辑操作2对应的数据节点为数据节点2,物理操作为物理操作2。由于对于业务侧当前触发的分布式事务来说,物理操作2是向数据节点2下发的第一个物理操作,因此,与向数据节点1发送上述事务开始指令相似地,此时,分布式数据库服务也向数据节点2发送事务开始指令,以使数据节点2开启一个本地事务的处理流程。数据节点2接收到物理操作2后的处理过程参见数据节点1接收到物理操作1的处理过程,在此不赘述。
当业务侧接收到针对逻辑操作2的确认信息后,可以继续进行下一个逻辑操作的下发。本实施例中,假设分布式事务中仅包括逻辑操作1和逻辑操作2,因此,业务侧接收到针对逻辑操作2的确认信息后,向分布式数据库服务发送事务结束指令,以告知分布式数据库服务当前触发的分布式事务已经下发完毕。
通过上述过程即可完成:向分布式事务所涉及的各数据节点下发数据读写指令的目的,该数据读写指令即对应于上述举例的物理操作1、物理操作2所表示的数据读写操作。
在将与分布式事务对应的多个数据读写操作(即为上文中的物理操作)所各自对应的数据读写指令发送至对应的数据节点后,进行多个数据读写指令的提交处理,亦即进行这多个数据读写操作的提交处理,亦即进行分布式事务的提交处理。
概括来说,在这多个数据读写操作的提交过程中,若多个数据读写操作涉及多个数据节点,则从多个数据节点中确定主数据节点和从数据节点,进而,向主数据节点发送事务日志写入指令,采用二阶段提交协议控制从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制主数据节点提交接收到的数据读写指令和事务日志写入指令。也就是说,针对主数据节点和从数据节点,分别采用不同的提交协议。
其中,可选地,从多个数据节点中确定主数据节点和从数据节点,可以实现为:随机地从多个数据节点中选择一个作为主数据节点,其他的数据节点作为从数据节点。
其中,可选地,从多个数据节点中确定主数据节点和从数据节点,还可以实现为:根据多个数据读写操作的处理顺序,确定最先处理的数据读写操作所对应的数据节点为主数据节点,其他的数据读写操作所对应的数据节点为从数据节点。比如,在图2的举例中,物理操作1先于物理操作2被处理,所以,可以确定物理操作1对应的数据节点1作为主数据节点,物理操作2对应的数据节点2作为从数据节点。
其中,二阶段提交协议包括准备阶段和提交阶段这两个阶段,一阶段提交协议仅包括提交阶段这一个阶段。从而,由于在上述分布式事务的提交过程中,主数据节点上使用的是一阶段提交协议而非二阶段提交协议,从而,降低了整体的网络通信次数,以有助于提高事务提交的处理效率。
仍结合上述举例,假设主数据节点为数据节点1、从数据节点为数据节点2,下面继续结合图2所示实施例来说明上述步骤104的具体实现过程:
213、分布式数据库服务向数据节点2发送准备提交指令。
214、数据节点2向分布式数据库服务反馈确认信息。
由于对于从数据节点采用的是二阶段提交协议,而二阶段提交协议中包括准备阶段和提交阶段,因此,针对从数据节点来说,首先向从数据节点发送准备提交指令,一般表示为prepare指令。
在图2中,假设从数据节点为数据节点2,因此,向数据节点2发送准备提交指令。与现有技术中二阶段提交协议的执行过程相一致地,数据节点2在接收到该准备提交指令后,可以进行诸如加锁、写日志等处理。之后,如果数据节点2无异常,则向分布式数据库服务反馈确认信息。
215、分布式数据库服务向数据节点1发送事务日志写入指令和提交指令。
216、数据节点1提交接收到的物理操作1和事务日志写入指令。
217、数据节点1向分布式数据库服务反馈确认信息。
分布式事务要保证ACID的完整性,必须依靠事务日志做跟踪。事务日志是一个与数据库文件分开的文件,用于记录所有分布式事务以及每个分布式事务所做的数据库修改。每一个操作在真正写入数据数据库之前,先写入到日志文件中。
本文中,将事务日志写入主数据节点中,以提高整体的事务提交处理效率。
具体来说,首先,分布式数据库服务向数据节点1发生事务日志写入指令,即分布式数据库服务生成与当前的分布式事务对应的事务日志,将该事务日志下发到数据节点1。数据节点1在接收到该事务日志的时候,可以先暂时不将该事务日志添加到日志文件中。
继而,分布式数据库服务基于一阶段提交协议向数据节点1发送提交指令,一般表示为commit指令。数据节点1基于该提交指令,提交接收到的数据读写指令和事务日志写入指令,亦即提交接收到的数据读写操作(即上述举例的物理操作1)和事务日志写入操作,此时,数据节点1真正地对数据库中的数据执行该数据读写操作,以及将事务日志添加到日志文件中。
值得说明的是,实际应用中,向数据节点1发送的上述事务日志写入指令和提交指令可以是分开发送的,也可以将事务日志写入指令和提交指令封装在一个数据报文中发送至数据节点1,以减少与数据节点1间的网络通信次数。
218、分布式数据库服务向数据节点2发送提交指令。
219、数据节点2提交接收到的物理操作2。
220、数据节点2向分布式数据库服务反馈确认信息。
221、分布式数据库服务向业务侧反馈确认信息。
在数据节点1完成事务日志的提交以及被下发的物理操作1的提交后,向分布式数据库服务反馈确认信息,从而,分布式数据库服务针对从数据节点——数据节点2执行第二阶段即提交阶段的控制。具体地,分布式数据库服务向数据节点2发送提交指令,数据节点2提交接收到的数据读写指令,即完成被下发的物理操作2的提交。
在分布式事务提交过程中,需要各数据节点的数据状态与事务日志中记录的操作行为保持一致,即需要各数据节点对应的数据读写操作的提交状态与事务日志的提交状态保持一致。通过将分布式事务的事务日志写入操作也作为主数据节点需要执行的一系列操作中的一部分,在对主数据节点触发一阶段提交协议时,便可以使得主数据节点既完成被下发的数据读写操作的提交,也完成了事务日志的写入,从而高效地保证了主数据节点的数据读写操作的提交状态与事务日志的提交状态保持一致,其他数据节点通过二阶段提交协议保证了各自的数据读写操作的提交状态与事务日志的提交状态保持一致。
图3为本发明另一实施例提供的事务处理方法的流程图,如图3所示,该方法可以包括如下步骤:
301、接收分布式事务,分布式事务对应有多个数据读写操作。
302、向多个数据读写操作各自对应的数据节点发送对应的数据读写指令。
303、若多个数据读写操作仅涉及一个数据节点,则采用一阶段提交协议控制所述数据节点提交接收到的数据读写指令。
本实施例中,当某个分布式事务仅涉及一个数据节点时,则可以直接采用一阶段提交协议来完成该分布式事务的提交。具体来说,步骤303具体可以实现为:分布式数据库服务直接向上述数据节点发送提交指令,以使该数据节点提交接收到的数据读写指令。
下面结合图4所示实施例来示例性说明此时分布式事务的处理过程。如图4中所示,可以包括如下步骤:
401、业务侧向分布式数据库服务发送事务开始指令。
402、分布式数据库服务生成分布式事务标识,以标记一个分布式事务开始。
403、分布式数据库服务向业务侧反馈确认信息。
404、业务侧向分布式数据库服务发送逻辑操作1。
405、分布式数据库服务向数据节点1发送本地事务开始指令以及物理操作1。
本实施例中假设逻辑操作1对应的数据节点为数据节点1。
406、数据节点1向分布式数据库服务反馈确认信息。
407、分布式数据库服务向业务侧反馈确认信息。
408、业务侧向分布式数据库服务发送逻辑操作2。
409、分布式数据库服务向数据节点1发送物理操作2。
本实施例中假设逻辑操作2对应的数据节点也为数据节点1。
410、数据节点1向分布式数据库服务反馈确认信息。
411、分布式数据库服务向业务侧反馈确认信息。
412、业务侧向分布式数据库服务发送事务结束指令。
413、分布式数据库服务向数据节点1发送提交指令。
414、数据节点1提交接收到的物理操作1和物理操作2。
415、数据节点1向分布式数据库服务反馈确认信息。
416、分布式数据库服务向业务侧反馈确认信息。
综上各实施例可以看出:1)当分布式事务仅涉及一个数据节点时,分布式事务的处理流程和单机事务的流程一致,仅需要采用一阶段提交协议,而仅在分布式事务涉及多个数据节点时,才会使用处理分布式事务所需的二阶段提交协议。2)对于多个数据节点参与的分布式事务,实际上仅有N-1个数据节点上需要执行二阶段提交协议,去除了不必要的二阶段提交代价,效率更优。3)避免使用中心化的协调者(即事务管理器),使得吞吐量不受事务管理器的限制。
以下将详细描述本发明的一个或多个实施例的事务处理装置。本领域技术人员可以理解,这些事务处理装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图5为本发明一实施例提供的事务处理装置的结构示意图,如图5所示,该虚假事务处理装置包括:接收模块11、发送模块12、确定模块13、提交模块14。
接收模块11,用于接收分布式事务,所述分布式事务对应有多个数据读写操作。
发送模块12,用于向所述多个数据读写操作各自对应的数据节点发送对应的数据读写指令。
确定模块13,用于若所述多个数据读写操作涉及多个数据节点,则从所述多个数据节点中确定主数据节点和从数据节点。
所述发送模块12,还用于向所述主数据节点发送事务日志写入指令。
提交模块14,用于采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令。
可选地,所述提交模块14具体用于:通过所述发送模块12向所述从数据节点发送准备提交指令;若通过所述接收模块11接收到所述从数据节点反馈的确认信息,则通过所述发送模块12向所述主数据节点发送所述事务日志写入指令和提交指令,以使所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令;若通过所述接收模块11接收到所述主数据节点反馈的确认信息,则通过所述发送模块12向所述从数据节点发送所述提交指令,以使所述从数据节点提交接收到的数据读写指令。
可选地,所述发送模块12具体可以用于:将所述事务日志写入指令和提交指令封装在一个数据报文中发送至所述主数据节点。
可选地,所述确定模块13可以用于:根据所述多个数据读写操作的处理顺序,确定最先处理的数据读写操作所对应的数据节点为主数据节点,其他的数据读写操作所对应的数据节点为从数据节点。
可选地,所述确定模块13可以用于:随机地从所述多个数据节点中选择一个作为主数据节点,其他的数据节点作为从数据节点。
可选地,所述提交模块14还可以用于:若所述多个数据读写操作仅涉及一个数据节点,则采用一阶段提交协议控制所述数据节点提交接收到的数据读写指令。
具体地,在采用一阶段提交协议控制所述数据节点提交接收到的数据读写指令的过程中,所述提交模块14具体可以用于:通过所述发送模块12向所述数据节点发送提交指令,以使所述数据节点提交接收到的数据读写指令。
图5所示事务处理装置可以执行前述图1至图4所示实施例中提供的方法,本实施例未详细描述的部分,可参考前述实施例的相关说明,在此不再赘述。
在一个可能的设计中,上述图5所示的事务处理装置的结构可实现为一电子设备。如图6所示,该电子设备可以包括:处理器21、存储器22。其中,存储器22上存储有可执行代码,当所述可执行代码被处理器21执行时,至少使处理器21可以实现如前述图1至图4所示实施例中提供的事务处理方法。
其中,该电子设备的结构中还可以包括通信接口23,用于与其他设备或通信网络通信。
其中,处理器21可以是中央处理器(Central Processing Unit,简称CPU),也可以是现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)、图形处理器(Graphics Processing Unit,简称GPU)、网络处理器(network process units,简称NPU)、人工智能(Artificial Intelligence,简称AI)芯片等具有计算能力的器件。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行前述图1至图4所示实施例中提供的事务处理方法。
图7为本发明一实施例提供的数据库的组成示意图,如图7所示,该数据库可以是分布式数据库,其中包括多个数据节点(比如图7中示意的数据节点1、2、3)以及数据库服务。
该数据库服务,用于接收分布式事务,该分布式事务对应有多个数据读写操作;向多个数据读写操作各自对应的数据节点发送对应的数据读写指令;若多个数据读写操作涉及多个数据节点,则从多个数据节点中确定主数据节点和从数据节点,向主数据节点发送事务日志写入指令;采用二阶段提交协议控制从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制主数据节点提交接收到的数据读写指令和事务日志写入指令。
其中,该数据库服务其实可以理解为是提供数据库访问功能的程序。
可选地,该数据库服务还可以用于执行前述图1至图4所示实施例中涉及到的各个步骤。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的各个模块可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种事务处理方法,其特征在于,包括:
接收分布式事务,所述分布式事务对应有多个数据读写操作;
向所述多个数据读写操作各自对应的数据节点发送对应的数据读写指令;
若所述多个数据读写操作涉及多个数据节点,则从所述多个数据节点中确定主数据节点和从数据节点;
向所述主数据节点发送事务日志写入指令;
采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令。
2.根据权利要求1所述的方法,其特征在于,所述采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令,包括:
向所述从数据节点发送准备提交指令;
若接收到所述从数据节点反馈的确认信息,则向所述主数据节点发送所述事务日志写入指令和提交指令,以使所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令;
若接收到所述主数据节点反馈的确认信息,则向所述从数据节点发送所述提交指令,以使所述从数据节点提交接收到的数据读写指令。
3.根据权利要求2所述的方法,其特征在于,所述向所述主数据节点发送所述事务日志写入指令和提交指令,包括:
将所述事务日志写入指令和提交指令封装在一个数据报文中发送至所述主数据节点。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述从所述多个数据节点中确定主数据节点和从数据节点,包括:
根据所述多个数据读写操作的处理顺序,确定最先处理的数据读写操作所对应的数据节点为主数据节点,其他的数据读写操作所对应的数据节点为从数据节点。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述从所述多个数据节点中确定主数据节点和从数据节点,包括:
随机地从所述多个数据节点中选择一个作为主数据节点,其他的数据节点作为从数据节点。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述多个数据读写操作仅涉及一个数据节点,则采用一阶段提交协议控制所述数据节点提交接收到的数据读写指令。
7.一种事务处理装置,其特征在于,包括:
接收模块,用于接收分布式事务,所述分布式事务对应有多个数据读写操作;
发送模块,用于向所述多个数据读写操作各自对应的数据节点发送对应的数据读写指令;
确定模块,用于若所述多个数据读写操作涉及多个数据节点,则从所述多个数据节点中确定主数据节点和从数据节点;
所述发送模块,还用于向所述主数据节点发送事务日志写入指令;
提交模块,用于采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令。
8.一种电子设备,其特征在于,包括:存储器、处理器;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至6中任一项所述的事务处理方法。
9.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至6中任一项所述的事务处理方法。
10.一种数据库,其特征在于,包括:
多个数据节点以及数据库服务;
所述数据库服务,用于接收分布式事务,所述分布式事务对应有多个数据读写操作;向所述多个数据读写操作各自对应的数据节点发送对应的数据读写指令;若所述多个数据读写操作涉及多个数据节点,则从所述多个数据节点中确定主数据节点和从数据节点,向所述主数据节点发送事务日志写入指令;采用二阶段提交协议控制所述从数据节点提交接收到的数据读写指令,采用一阶段提交协议控制所述主数据节点提交接收到的数据读写指令和所述事务日志写入指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910870661.2A CN112596801B (zh) | 2019-09-16 | 事务处理方法、装置、设备、存储介质、数据库 | |
PCT/CN2020/114455 WO2021052237A1 (zh) | 2019-09-16 | 2020-09-10 | 事务处理方法、装置、设备、存储介质、数据库 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910870661.2A CN112596801B (zh) | 2019-09-16 | 事务处理方法、装置、设备、存储介质、数据库 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112596801A true CN112596801A (zh) | 2021-04-02 |
CN112596801B CN112596801B (zh) | 2024-06-25 |
Family
ID=
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115905402A (zh) * | 2022-09-26 | 2023-04-04 | 北京奥星贝斯科技有限公司 | 处理事务日志的方法及装置 |
CN116701544A (zh) * | 2023-08-07 | 2023-09-05 | 金篆信科有限责任公司 | 分布式数据库日志处理方法和装置、电子设备和存储介质 |
WO2024114284A1 (zh) * | 2022-12-02 | 2024-06-06 | 华为云计算技术有限公司 | 基于云服务的事务处理方法、装置和计算设备集群 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150248308A1 (en) * | 2014-02-28 | 2015-09-03 | Red Hat, Inc. | Systems and methods for semi-durable transaction log storage in two-phase commit protocol transaction processing |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及系统 |
CN109684048A (zh) * | 2018-11-22 | 2019-04-26 | 华为技术有限公司 | 事务提交系统中处理事务的方法及装置 |
CN110134735A (zh) * | 2019-04-10 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 分布式事务日志的存储方法及装置 |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150248308A1 (en) * | 2014-02-28 | 2015-09-03 | Red Hat, Inc. | Systems and methods for semi-durable transaction log storage in two-phase commit protocol transaction processing |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及系统 |
CN109684048A (zh) * | 2018-11-22 | 2019-04-26 | 华为技术有限公司 | 事务提交系统中处理事务的方法及装置 |
CN110134735A (zh) * | 2019-04-10 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 分布式事务日志的存储方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115905402A (zh) * | 2022-09-26 | 2023-04-04 | 北京奥星贝斯科技有限公司 | 处理事务日志的方法及装置 |
WO2024114284A1 (zh) * | 2022-12-02 | 2024-06-06 | 华为云计算技术有限公司 | 基于云服务的事务处理方法、装置和计算设备集群 |
CN116701544A (zh) * | 2023-08-07 | 2023-09-05 | 金篆信科有限责任公司 | 分布式数据库日志处理方法和装置、电子设备和存储介质 |
CN116701544B (zh) * | 2023-08-07 | 2023-11-24 | 金篆信科有限责任公司 | 分布式数据库日志处理方法和装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021052237A1 (zh) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018103318A1 (zh) | 分布式事务处理方法和系统 | |
JP2000163372A (ja) | トランザクション処理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
US20120011100A1 (en) | Snapshot acquisition processing technique | |
WO2012000997A1 (en) | An apparatus for processing a batched unit of work | |
CN110287151B (zh) | 分布式存储系统、数据写入方法、装置和存储介质 | |
CN111258976A (zh) | 分布式锁实现方法、系统、设备及存储介质 | |
CN109783204A (zh) | 一种分布式事务处理方法、装置及存储介质 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
WO2019149032A1 (zh) | 分布式事务处理方法及装置 | |
CN112446786A (zh) | 一种异常交易处理方法、装置、电子设备和可读存储介质 | |
CN112053149A (zh) | 一种防止重复支付的方法、装置、电子设备和可读存储介质 | |
CN106815094B (zh) | 一种用于实现主备同步模式下事务提交的方法与设备 | |
CN110121694B (zh) | 一种日志管理方法、服务器和数据库系统 | |
EP1247182B1 (en) | Preserving consistency of passively-replicated non-deterministic objects | |
KR20140047230A (ko) | 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템 | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
CN111143041B (zh) | 一种数据一致性方法、分布式协调器及中央协调器 | |
CN115098528B (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 | |
CN112596801B (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN112596801A (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN110413686B (zh) | 一种数据写入方法、装置、设备及存储介质 | |
CN113051044A (zh) | 一种基于无服务架构的分布式事务处理方法及装置 | |
CN111754348A (zh) | 场景化组合交易方法及装置 | |
CN114116141A (zh) | 分布式系统的事务处理方法和装置、存储介质和电子装置 | |
CN117453750B (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 |