CN112162988A - 一种分布式事务的处理方法、装置和电子设备 - Google Patents
一种分布式事务的处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112162988A CN112162988A CN202010976014.2A CN202010976014A CN112162988A CN 112162988 A CN112162988 A CN 112162988A CN 202010976014 A CN202010976014 A CN 202010976014A CN 112162988 A CN112162988 A CN 112162988A
- Authority
- CN
- China
- Prior art keywords
- transaction
- branch
- execution
- retry
- distributed
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种分布式事务的处理方法、装置和电子设备。该方法包括:若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;记录所述分支事务的执行状态;若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。通过采用本申请所提供的技术方案,可以通过按照数据源将分布式事务划分为多个分支事务来处理,实现了对分布式事务进行高效处理的目的,既满足了处理速度的要求,又可以充分利用节点的事务处理能力。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种分布式事务的处理方法、装置和电子设备。
背景技术
随着科学技术的发展,海量数据的产生,对数据采用分布式存储已经成为业界常用的数据存储方式。对于数据库事务而言,在无外部服务调用的单一服务节点或者单体应用中,且只存在单一数据源,本地数据库事务支持就可以保证事务的完整性。但在微服务架构里面,一个应用包含一系列独立的服务共同组成,它可能包含多个数据源,应用内部的服务相互依赖,同时可能还依赖外部第三方服务。在这种情况下,各个服务节点都需要全面使用约定的技术及规范,在有项目改造需求的情况下,项目改造工作量比较大,不能充分利用各个节点的事务处理性能。
发明内容
本发明实施例提供一种分布式事务的处理方法、装置和电子设备,可以通过按照数据源将分布式事务划分为多个分支事务来处理,实现了对分布式事务进行高效处理的目的,既满足了处理速度的要求,又可以充分利用节点的事务处理能力。
第一方面,本发明实施例提供了一种分布式事务的处理方法,该方法包括:
若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
记录所述分支事务的执行状态;
若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
进一步的,在得到至少一个分支事务之后,所述方法还包括:
确定所述分支事务根据包括的服务调用数量是否为至少两个;
若是,则根据所述服务调用对所述分支事务进行划分,得到至少两个子分支事务;并记录所述子分支事务的执行状态。
进一步的,在接收到分布式事务处理请求之后,所述方法还包括:
根据分布式事务的服务调用对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务为一个服务调用。
进一步的,在得到至少一个分支事务之后,所述方法还包括:
确定所述分支事务根据关联的数据源数量是否为至少两个;
若是,则根据关联的数据源对所述分支事务进行划分,得到至少两个子分支事务;并记录所述子分支事务的执行状态。
进一步的,在记录所述分支事务的执行状态之后,所述方法还包括:
根据所述分布式事务包含的分支事务,拟合动态有向图;
相应的,若所有所述分支事务的执行状态为执行完成,包括:
根据所述动态有向图的各个节点的执行状态跟踪结果,确定所有所述分支事务的执行状态是否为执行完成。
进一步的,在拟合动态有向图之后,所述方法还包括:
确定所述动态有向图的各个节点中的目标节点;
采用预设规则确定所述目标节点的重试策略,以在所述目标节点满足重试条件时,执行所述重试策略。
进一步的,所述重试策略包括:
根据预先设定的重试次数与各次重试时间的关系,确定各次重试次数的重试执行时间;或者,
确定总重试次数,若达到总重试次数且重试执行结果为失败,则重试终止;或者,
确定总重试时长,若达到总重试时长且重试执行结果为失败,则重试终止;或者,
确定重试结束时间,若达到所述重试结束时间且重试执行结果为失败,则重试终止。
进一步的,在得到至少一个分支事务之后,所述方法还包括:
构建事务管理进程,并根据所述事务管理进程确定所述至少一个分支事务针对幂等任务采用分布式锁机制的执行方式。
第二方面,本发明实施例还提供了一种在线分布式事务的处理装置,该装置包括:
分布式事务划分模块,用于若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
执行状态记录模块,用于记录所述分支事务的执行状态;
事务执行完成确定模块,用于若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的分布式事务的处理方法。
第四方面,本申请实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的分布式事务的处理方法。
本申请实施例所提供的技术方案,若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;记录所述分支事务的执行状态;若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。本申请所提供的技术方案,可以通过按照数据源将分布式事务划分为多个分支事务来处理,实现了对分布式事务进行高效处理的目的,既满足了处理速度的要求,又可以充分利用节点的事务处理能力。
附图说明
图1是本发明实施例一提供的分布式事务的处理方法的流程图;
图2是本发明实施例二提供的分布式事务的处理方法的流程图;
图3是本发明实施例二提供的动态有向图的示意图;
图4是本发明实施例三提供的分布式事务的处理装置的结构示意图;
图5是本申请实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1是本发明实施例一提供的分布式事务的处理方法的流程图,本实施例可适用于分布式事务的处理情况,该方法可以由本发明实施例所提供的分布式事务的处理装置来执行,该装置可以由软件和/或硬件的方式来实现,并可集成于用于处理分布式事务的电子设备中。
如图1所示,所述分布式事务的处理方法包括:
S110、若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源。
其中,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。分布式事务处理系统旨在协助在分布式环境中跨异类的事务、识别资源的事务。在分布式系统的支持下,应用程序可以将不同的活动合并为一个事务性单元,这些活动包括从“消息队列”检索消息、将消息存储在MicrosoftSQL Server数据库中、将所有现有的消息引用从Oracle Server数据库中移除,等等。因为分布式事务跨多个数据库资源,故强制ACID属性维护所有资源上的数据一致性是很重要的。
A特性为原子性(Atomicity)。原子性是指事务作为整体来执行,要么全部执行,要么全不执行。C特性为一致性(Consistency)。一致性是指事务应确保数据从一个一致的状态转变为另一个一致的状态。I特性为隔离性(Isolation)。隔离性是指多个事务并发执行时,一个事务的执行不应影响其他事务的执行。D特性为持久性(Durability)。持久性是指已提交的事务修改数据会被持久保存。
分布式事务的请求可以是用户触发的,例如用户通过扫描二维码,通过点击某个按键,以及通过人脸验证等方式。由于分布式事务的关联的数据源的个数为至少一个,因此可以对所述分布式事务进行划分,得到至少一个分支事务;可以理解的,经过划分分支事务之后,每个分支事务关联一个数据源。
S120、记录所述分支事务的执行状态。
每个物理节点或者虚拟节点通过其关联的单一数据源记录分支事务的状态,因为本节点的业务操作与分支事务状态记录操作在单一数据源下的一个事务里面,它保证了其整个事务的完整性。
本方案当本地事务完成后,后续可以通过同步或者异步方式调用分支事务请求,如果是异步方式,这些独立的业务还可以按业务分组批量处理,通过减少通信次数和传输数据量最大化的提升性能。
在本方案中,可选的,在得到至少一个分支事务之后,所述方法还包括:
确定所述分支事务根据包括的服务调用数量是否为至少两个;
若是,则根据所述服务调用对所述分支事务进行划分,得到至少两个子分支事务;并记录所述子分支事务的执行状态。
可以理解的,在按照关联的数据源进行分布式事务的划分之后,还可以根据各个分支事务所涉及到的服务调用的数量,来对分支事务进行再次划分。例如同样涉及到采用某银行卡进行扣款,关联的数据源相同,但是具体的扣款方式包括一部分直接付款,和另一部分批量付款,采用了不同的服务调用,因此可以对该分支事务进行再次划分,得到子分支事务。本方案通过这样的设置,可以更好的实现通过各个物理节点,甚至虚拟节点对各个子分支事务进行处理的目的。
S130、若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
可以理解的,当所有的分支事务执行状态为执行完成时,可以确定分布式事务执行完成。
以往的代码逻辑为:
1,记录交易成功数据到数据库;
2,调用外部服务标记优惠券已经被使用。
本方案的代码逻辑:
1,记录交易成功数据到数据库;
2,记录优惠券调用事件;
2.1,异步调用外部服务标记优惠券已经被使用;
2.2,成功后删除优惠券调用事件;
2.3,失败后稍后重试。
本发明充分利用每个单一数据源自有的本地事务处理能力,提供了一种基于动态有向图的确保分布式事务最终数据一致性的方法,可以广泛适用于智能手机、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、车载终端等客户端,以及各种采用不同技术栈、不同体系架构的服务器端,只要各个节点的单一数据源自身支持事务,不管它是关系型数据库系统,还是支持简单事务的NoSQL数据库。
在上述技术方案的基础上,可选的,在得到至少一个分支事务之后,所述方法还包括:
构建事务管理进程,并根据所述事务管理进程确定所述至少一个分支事务针对幂等任务采用分布式锁机制的执行方式。
每个服务提供方需要支持幂等性,保证其任意多次执行对资源本身所产生的影响均与一次执行的影响。幂等使得客户端逻辑处理变得简单,在服务改变状态的业务逻辑前,保证防重复提交的逻辑,保证了整个事务处理的正确和准确性。
对于本地消息队列来说核心是把大事务转变为小事务。举个用100元去买一瓶水的例子。
1.当你扣钱的时候,你需要在你扣钱的服务器上新增加一个本地消息表,你需要把你扣钱和写入减去水的库存到本地消息表放入同一个事务(依靠数据库本地事务保证一致性。
2.这个时候有个定时任务去轮询这个本地事务表,把没有发送的消息,扔给商品库存服务器,叫他减去水的库存,到达商品服务器之后这个时候得先写入这个服务器的事务表,然后进行扣减,扣减成功后,更新事务表中的状态。
3.商品服务器通过定时任务扫描消息表或者直接通知扣钱服务器,扣钱服务器本地消息表进行状态更新。
4.针对一些异常情况,定时扫描未成功处理的消息,进行重新发送,在商品服务器接到消息之后,首先判断是否是重复的,如果已经接收,在判断是否执行,如果执行在马上又进行通知事务,如果未执行,需要重新执行需要由业务保证幂等,也就是不会多扣一瓶水。
本地消息队列是BASE理论,是最终一致模型,适用于对一致性要求不高的。实现这个模型时需要注意重试的幂等。
在本技术方案中,可选的,分布式事务幂等任务执行提供了一种基于分布式锁的机制,具体包括:
通过分布式锁机制保证单一幂等任务在同一个时刻只有一台机器可以执行或者重试。避免重复并行执行浪费不必要的资源。
其中,可以通过分布式锁的形式,减少并行执行时间以及资源消耗,提高系统的分布式事务的处理效率。
实施例二
图2是本发明实施例二提供的分布式事务的处理方法的流程图,本实施例是在上述实施例的基础上的进一步的优化。如图2所示,所述分布式事务的处理方法包括:
S210、若接收到分布式事务处理请求,根据分布式事务的服务调用对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务为一个服务调用。
本方案中,可以根据分布式事务涉及到的服务调用进行划分,得到至少一个分支事务。可以理解的,每个分支事务为一个服务调用。
在得到至少一个分支事务之后,所述方法还包括:
确定所述分支事务根据关联的数据源数量是否为至少两个;
若是,则根据关联的数据源对所述分支事务进行划分,得到至少两个子分支事务;并记录所述子分支事务的执行状态。
其中,通过对每个分支事务中关联的数据源,对各个分支事务再次进行划分,得到子分支事务,可以实现各个子分支事务只关联到一个数据源的效果。
S220、记录所述分支事务的执行状态。
S230、若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
本实施例在上述实施例的基础上,采用了不同的对分布式事务进行划分的方式。通过这样的设置,可以解决现有技术改造实施破坏性比较大,额外性能损失比较大的问题。
在本技术方案中,可选的,在记录所述分支事务的执行状态之后,所述方法还包括:
根据所述分布式事务包含的分支事务,拟合动态有向图;
相应的,若所有所述分支事务的执行状态为执行完成,包括:
根据所述动态有向图的各个节点的执行状态跟踪结果,确定所有所述分支事务的执行状态是否为执行完成。
图3是本发明实施例二提供的动态有向图的示意图。如图3所示,当本地事务完成后,后续可以通过同步或者异步方式调用分支事务请求,如果是异步方式,这些独立的业务还可以按业务分组批量处理,通过减少通信次数和传输数据量最大化的提升性能。
另一方面,每个服务提供方需要支持幂等性,保证其任意多次执行对资源本身所产生的影响均与一次执行的影响。幂等使得客户端逻辑处理变得简单,在服务改变状态的业务逻辑前,保证防重复提交的逻辑,保证了整个事务处理的正确和准确性。
另一方面,如果一个节点出现多个数据源时,可以把它分解成多个虚拟的只有一个数据源的节点,然后遵循其他条件确保整体事务的最终一致性。
在上述技术方案中,可选的,在拟合动态有向图之后,所述方法还包括:
确定所述动态有向图的各个节点中的目标节点;
采用预设规则确定所述目标节点的重试策略,以在所述目标节点满足重试条件时,执行所述重试策略。
上述各方案的基础上,可选的,所述重试策略包括:
根据预先设定的重试次数与各次重试时间的关系,确定各次重试次数的重试执行时间;或者,
确定总重试次数,若达到总重试次数且重试执行结果为失败,则重试终止;或者,
确定总重试时长,若达到总重试时长且重试执行结果为失败,则重试终止;或者,
确定重试结束时间,若达到所述重试结束时间且重试执行结果为失败,则重试终止。
如果首次分支事务执行失败,定时任务会基于重试策略重新执行直到完成或者放弃。具体策略包含:
1.基于重试次数决定下次执行时间,确定变化的两次执行间隔;
2.可以限定最多重试执行次数;
3.可以指定距离首次执行到最后一次执行的最终结束时间;
4.可以指定一个确定的结束时间。
如果最后分支任务不能被成功执行而放弃,系统将需要人工干预保证所有任务被确保正确处理。
另外,分布式事务的在XA协议中分为两阶段:
第一阶段:事务管理器要求每个涉及到事务的数据库预提交(precommit)此操作,并反映是否可以提交.
第二阶段:事务协调器要求每个数据库提交数据,或者回滚数据。
优点:尽量保证了数据的强一致,实现成本较低,在各大主流数据库都有自己实现,对于MySQL是从5.5代开始支持的。
缺点:单点问题:事务管理器在整个流程中扮演的角色很关键,如果其宕机,比如在第一阶段已经完成,在第二阶段正准备提交的时候事务管理器宕机,资源管理器就会一直阻塞,导致数据库无法使用。同步阻塞:在准备就绪之后,资源管理器中的资源一直处于阻塞,直到提交完成,释放资源。数据不一致:两阶段提交协议虽然为分布式数据强一致性所设计,但仍然存在数据不一致性的可能,比如在第二阶段中,假设协调者发出了事务commit的通知,但是因为网络问题该通知仅被一部分参与者所收到并执行了commit操作,其余的参与者则因为没有收到通知一直处于阻塞状态,这时候就产生了数据的不一致性。
总的来说,XA协议比较简单,成本较低,但是其单点问题,以及不能支持高并发(由于同步阻塞)依然是其最大的弱点。
本申请实施例所提供的技术方案,若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;记录所述分支事务的执行状态;若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。本申请所提供的技术方案,可以通过按照数据源将分布式事务划分为多个分支事务来处理,实现了对分布式事务进行高效处理的目的,既满足了处理速度的要求,又可以充分利用节点的事务处理能力。
实施例三
图4是本发明实施例三提供的分布式事务的处理装置的结构示意图。如图4所示,所述分布式事务的处理装置,包括:
分布式事务划分模块410,用于若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
执行状态记录模块420,用于记录所述分支事务的执行状态;
事务执行完成确定模块430,用于若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例四
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种分布式事务的处理方法,该方法包括:
若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
记录所述分支事务的执行状态;
若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
存储介质——任何的各种类型的存储器电子设备或存储电子设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到计算机系统。第二计算机系统可以提供程序指令给计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的在线分布式事务的处理操作,还可以执行本申请任意实施例所提供的分布式事务的处理方法中的相关操作。
实施例五
本申请实施例提供了一种电子设备,该电子设备中可集成本申请实施例提供的图像的排版装置。图5是本申请实施例五提供的一种电子设备的结构示意图。如图5所示,本实施例提供了一种电子设备500,其包括:一个或多个处理器520;存储装置510,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器520运行,使得所述一个或多个处理器520实现本申请实施例所提供的图像的排版方法,该方法包括:
若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
记录所述分支事务的执行状态;
若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
当然,本领域技术人员可以理解,处理器520还可以实现本申请任意实施例所提供的图像的排版方法的技术方案。
图5显示的电子设备500仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,该电子设备500包括处理器520、存储装置510、输入装置530和输出装置540;电子设备中处理器520的数量可以是一个或多个,图5中以一个处理器520为例;电子设备中的处理器520、存储装置510、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线550连接为例。
存储装置510作为一种计算机可读存储介质,可用于存储软件程序、计算机可运行程序以及模块单元,如本申请实施例中的图像的排版方法对应的程序指令。
存储装置510可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置510可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置510可进一步包括相对于处理器520远程设置的存储器,这些远程存储器可以通过网络连接。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字、字符信息或语音信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏、扬声器等电子设备。
本申请实施例提供的电子设备,可以通过按照数据源将分布式事务划分为多个分支事务来处理,实现了对分布式事务进行高效处理的目的,既满足了处理速度的要求,又可以充分利用节点的事务处理能力。
上述实施例中提供的图像的排版装置、介质及设备可运行本申请任意实施例所提供的图像的排版方法,具备运行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的图像的排版方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种分布式事务的处理方法,其特征在于,包括:
若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
记录所述分支事务的执行状态;
若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
2.根据权利要求1所述的方法,其特征在于,在得到至少一个分支事务之后,所述方法还包括:
确定所述分支事务根据包括的服务调用数量是否为至少两个;
若是,则根据所述服务调用对所述分支事务进行划分,得到至少两个子分支事务;并记录所述子分支事务的执行状态。
3.根据权利要求1所述的方法,其特征在于,在接收到分布式事务处理请求之后,所述方法还包括:
根据分布式事务的服务调用对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务为一个服务调用。
4.根据权利要求3所述的方法,其特征在于,在得到至少一个分支事务之后,所述方法还包括:
确定所述分支事务根据关联的数据源数量是否为至少两个;
若是,则根据关联的数据源对所述分支事务进行划分,得到至少两个子分支事务;并记录所述子分支事务的执行状态。
5.根据权利要求1所述的方法,其特征在于,在记录所述分支事务的执行状态之后,所述方法还包括:
根据所述分布式事务包含的分支事务,拟合动态有向图;
相应的,若所有所述分支事务的执行状态为执行完成,包括:
根据所述动态有向图的各个节点的执行状态跟踪结果,确定所有所述分支事务的执行状态是否为执行完成。
6.根据权利要求5所述的方法,其特征在于,在拟合动态有向图之后,所述方法还包括:
确定所述动态有向图的各个节点中的目标节点;
采用预设规则确定所述目标节点的重试策略,以在所述目标节点满足重试条件时,执行所述重试策略。
7.根据权利要求6所述的方法,其特征在于,所述重试策略包括:
根据预先设定的重试次数与各次重试时间的关系,确定各次重试次数的重试执行时间;或者,
确定总重试次数,若达到总重试次数且重试执行结果为失败,则重试终止;或者,
确定总重试时长,若达到总重试时长且重试执行结果为失败,则重试终止;或者,
确定重试结束时间,若达到所述重试结束时间且重试执行结果为失败,则重试终止。
8.根据权利要求1或3所述的方法,其特征在于,在得到至少一个分支事务之后,所述方法还包括:
构建事务管理进程,并根据所述事务管理进程确定所述至少一个分支事务针对幂等任务采用分布式锁机制的执行方式。
9.一种分布式事务的处理装置,其特征在于,包括:
分布式事务划分模块,用于若接收到分布式事务处理请求,根据分布式事务的关联的至少一个数据源对所述分布式事务进行划分,得到至少一个分支事务;其中,每个分支事务关联一个数据源;
执行状态记录模块,用于记录所述分支事务的执行状态;
事务执行完成确定模块,用于若所有所述分支事务的执行状态为执行完成,则确定所述分布式事务执行完成。
10.一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8中任一所述的分布式事务的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010976014.2A CN112162988A (zh) | 2020-09-16 | 2020-09-16 | 一种分布式事务的处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010976014.2A CN112162988A (zh) | 2020-09-16 | 2020-09-16 | 一种分布式事务的处理方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112162988A true CN112162988A (zh) | 2021-01-01 |
Family
ID=73858142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010976014.2A Pending CN112162988A (zh) | 2020-09-16 | 2020-09-16 | 一种分布式事务的处理方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112162988A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273028A1 (zh) * | 2021-06-29 | 2023-01-05 | 深圳市商汤科技有限公司 | 事务处理方法及相关产品 |
-
2020
- 2020-09-16 CN CN202010976014.2A patent/CN112162988A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273028A1 (zh) * | 2021-06-29 | 2023-01-05 | 深圳市商汤科技有限公司 | 事务处理方法及相关产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230100223A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
Hellings et al. | Byshard: Sharding in a byzantine environment | |
US7900085B2 (en) | Backup coordinator for distributed transactions | |
US7624112B2 (en) | Asynchronously storing transaction information from memory to a persistent storage | |
US11681683B2 (en) | Transaction compensation for single phase resources | |
US8352421B2 (en) | Recording distributed transactions using probabalistic data structures | |
US20230106118A1 (en) | Distributed processing of transactions in a network using timestamps | |
EP4216061A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
CN110018884B (zh) | 分布式事务处理方法、协调装置、数据库及电子设备 | |
WO2023082992A1 (zh) | 数据处理方法以及系统 | |
CN110431580B (zh) | 使用随机数表来减少并发区块链交易失败 | |
CN108415758B (zh) | 分布式事务协调方法及装置 | |
CN115994053A (zh) | 数据库备机的并行回放方法、装置、电子设备及介质 | |
CN113076304A (zh) | 一种分布式版本管理方法、装置和系统 | |
CN112181723A (zh) | 一种金融灾备方法、装置、存储介质及电子设备 | |
JP2013045356A (ja) | トランザクション同時実行制御システム、トランザクション同時実行制御方法、およびプログラム | |
CN115617571A (zh) | 一种数据备份方法、装置、系统、设备及存储介质 | |
Hellings et al. | Byshard: Sharding in a byzantine environment | |
CN110532069A (zh) | 一种分布式事务提交方法及装置 | |
CN112162988A (zh) | 一种分布式事务的处理方法、装置和电子设备 | |
CN115774754A (zh) | 基于分布式事务的元数据管理方法、装置、设备及介质 | |
CN111143040A (zh) | 事务处理方法、装置、系统及存储介质 | |
CN112988775B (zh) | 处理批量交易的方法、计算设备和存储介质 | |
CN114579260A (zh) | 一种事务处理方法及系统 | |
CN113190624A (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 |