CN111666132A - 分布式事务实现方法、装置、计算机系统及可读存储介质 - Google Patents
分布式事务实现方法、装置、计算机系统及可读存储介质 Download PDFInfo
- Publication number
- CN111666132A CN111666132A CN202010469594.6A CN202010469594A CN111666132A CN 111666132 A CN111666132 A CN 111666132A CN 202010469594 A CN202010469594 A CN 202010469594A CN 111666132 A CN111666132 A CN 111666132A
- Authority
- CN
- China
- Prior art keywords
- module
- message data
- participating
- execution
- service
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000007246 mechanism Effects 0.000 claims abstract description 63
- 230000002159 abnormal effect Effects 0.000 claims abstract description 37
- 238000012163 sequencing technique Methods 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012790 confirmation Methods 0.000 claims description 4
- 238000013473 artificial intelligence Methods 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 9
- 230000005856 abnormality Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000010365 information processing Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001178520 Stomatepia mongo Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及人工智能技术领域,公开了分布式事务实现方法、装置、计算机系统及可读存储介质,包括:按照最终一致机制对参与模块进行排序,及根据排序依次控制各参与模块按照强一致机制执行业务数据,并接收参与模块发送的消息数据或执行异常信号;判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知事务组模块出现执行异常;判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知事务组模块执行正常;通过事务组模块根据执行异常控制各参与模块回滚,或根据执行正常控制各参与模块提交消息数据。本发明解决了目前分布式事务不能支持多个服务操作同一数据源且性能低下,以及应用程序被阻塞的问题。
Description
技术领域
本发明涉及人工智能的事务处理过程优化技术领域,尤其涉及一种分布式事务实现方法、装置、计算机系统及可读存储介质。
背景技术
个人出单微服务系统,在一个服务操作多个数据源,或者多个服务操作同一个数据源的场景下,有些服务操作数据成功,有些服务操作失败,按传统的单机事物来处理,就会导致数据的不一致性。
因此,当前通常采用引入分布式事务来解决,例如:JPA分布式事务方案;但是,目前的分布式事务不能支持多个服务操作同一数据源(参与模块)且性能低下,并且,这些分布式事务需要收集各个资源管理器(参与模块)的响应消息(消息数据),如果其中一个或多个一直不返回消息,则事务管理器一直等待,应用程序也被阻塞,甚至可能永久阻塞。
发明内容
本发明的目的是提供一种分布式事务实现方法、装置、计算机系统及可读存储介质,用于解决现有技术存在的分布式事务不能支持多个服务操作同一数据源且性能低下,导致如果其中一个或多个一直不返回消息,则事务管理器一直等待,应用程序也被阻塞,甚至可能永久阻塞的问题。本申请可应用于智慧政务场景中,从而推动智慧城市的建设。为实现上述目的,本发明提供一种分布式事务实现方法,包括:
按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号;
判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;
判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;
通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
上述方案中,在按照最终一致机制对参与模块进行排序之前,包括:
接收业务信息,根据分类映射表识别所述业务信息的业务类型、参与模块、技术选型和语言框架,根据所述业务类型、技术选型和语言框架获得执行逻辑并将其载入所述业务信息形成业务数据,将所述业务数据发送所述参与模块。
上述方案中,在接收业务信息之前,包括:
创建分类映射表;其中,所述分类映射表包括用于区分业务数据的业务类型的业务边界,用于区分业务数据的相关模块的工作边界,用于区分业务数据的技术选型和语言框架的应用边界;
创建事务组模块,接收所述事务组模块发送的创建成功信号。
上述方案中,所述最终一致机制是指在所述排序中,控制位于上一位的参与模块执行业务数据并接收所述参与模块发送的消息数据,储存所述消息数据并修改所述上一位的参与模块中该消息数据的状态,根据所述状态控制下一位的参与模块执行业务数据的序列操作过程。
上述方案中,所述强一致机制是保证一旦参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,控制该参与模块再次执行业务数据直至形成正确的消息数据的数据处理管理机制。
上述方案中,控制参与模块按照强一致机制执行业务数据的步骤,包括:
向参与模块发送预算请求,使所述参与模块对所述业务数据进行业务检查,以判断所述参与模块中的模块数据是否能够满足业务数据的执行;若是,则在所述参与模块中预留用于执行所述业务数据所需的业务资源;若否,则接收所述参与模块生成的执行异常信号;
根据所述业务资源向参与模块发送执行请求,使所述参与模块通过所述业务资源执行业务数据形成消息数据并将所述消息数据的状态设为待发送状态,及根据所述消息数据释放所述业务资源。
上述方案中,接收所述参与模块发送的消息数据或执行异常信号的步骤,包括:
控制所述参与模块定时轮询待发送状态的消息数据,及发送所述消息数据;
记录所述参与模块发送消息数据的时间,判断在预设的重发时间内是否接收到所述消息数据;若是,则通过队列将所述消息数据储存至预设的存储器,接收所述存储器在储存消息数据成功时所生成的储存确认信号;若否,则控制所述参与模块再次发送所述消息数据,直至接收到所述消息数据为止;其中,所述存储器为区块链存储设备。
为实现上述目的,本发明还提供一种分布式事务实现装置,包括:
最终强一致模块,用于按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号;
异常判断模块,用于判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;
消息判断模块,用于判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;
提交回滚模块,用于通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
为实现上述目的,本发明还提供一种计算机系统,其包括多个计算机设备,各计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述多个计算机设备的处理器执行所述计算机程序时共同实现上述分布式事务实现方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其包括多个存储介质,各存储介质上存储有计算机程序,所述多个存储介质存储的所述计算机程序被处理器执行时共同实现上述分布式事务实现方法的步骤。
本发明提供的分布式事务实现方法、装置、计算机系统及可读存储介质,通过对应用服务分别提供服务的最终一致机制,使各应用服务可根据各自的最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块执行业务数据;通过强一致机制执行业务数据,保证参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,能够控制该参与模块再次执行业务数据或再次发送消息数据直至接收到正确的消息数据为止。解决了目前的分布式事务不能支持多个服务操作同一数据源且性能低下,以及如果其中一个或多个参与模块一直不返回消息,则事务管理器一直等待,应用程序也被阻塞,甚至可能永久阻塞的问题。
附图说明
图1为本发明分布式事务实现方法实施例一的流程图;
图2为本发明分布式事务实现方法实施例二的分布式事务实现方法的环境应用示意图;
图3为本发明分布式事务实现方法实施例二中分布式事务实现方法的具体方法流程图;
图4为本发明分布式事务实现方法实施例二中控制参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号的流程图;
图5为本发明分布式事务实现装置实施例三的程序模块示意图;
图6为本发明计算机系统实施例四中计算机设备的硬件结构示意图。
附图标记:
1、分布式事务实现装置 2、服务器 3、网络 4、参与模块
5、计算机设备 11、最终强一致模块 12、异常判断模块
13、消息判断模块 14、提交回滚模块 15、映射表创建模块
16、模块创建模块 17、逻辑识别模块 51、存储器 52、处理器
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的分布式事务实现方法、装置、计算机系统及可读存储介质,适用于人工智能的事务处理过程优化领域,为提供一种基于灰度提取模块、可导截断模块、图像生成模块的分布式事务实现方法。本发明通过按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号;判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
实施例一
请参阅图1,本实施例的一种分布式事务实现方法,包括:
S104:按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号。
S105:判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据。
S106:判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块。
S107:所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
因此,为解决目前的分布式事务不能支持多个服务操作同一数据源且性能低下的问题,本申请提供了可对应用服务分别提供服务的最终一致机制,使各应用服务可根据各自的最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块执行业务数据,。
为解决目前分布式事务需要收集各个资源管理器(参与模块)的响应消息(消息数据),如果其中一个或多个一直不返回消息,则事务管理器一直等待,应用程序也被阻塞,甚至可能永久阻塞的问题,通过强一致机制执行业务数据,保证参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,能够控制该参与模块再次执行业务数据或再次发送消息数据直至接收到正确的消息数据为止。
进一步地,为保证各参与模块数据处理结果的一致性,采用最终一致机制依次控制各参与模块执行业务数据形成消息数据的效率和同步性。所述最终一致机制是指在所述排序中,控制位于上一位的参与模块执行业务数据并接收所述参与模块发送的消息数据,储存所述消息数据并修改所述上一位的参与模块中该消息数据的状态,根据所述状态控制下一位的参与模块执行业务数据的序列操作过程。通过强一致机制保证服务器能够获得每个参与模块返回的正确信息,以保证整个系统对信息处理的可靠性;其中,所述强一致机制是一种保证一旦参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,控制该参与模块再次执行业务数据直至形成正确的消息数据的数据处理管理机制。
为及时发现参与模块发生执行异常,以通过事务组模块对各参与模块进行回滚操作,保证各参与模块的同步,本步骤通过实时监听是否接收到参与模块发送执行异常信号,如果接受到了该信号,则及时关闭事务组模块,并通知事务组模块出现了执行异常。其中,所述关闭事务组模块是指在监听到参与模块出现执行异常时,发起执行异常状态通知给事务组模块(TxManager)的动作,事务组模块将根据其中的事务信息,通知各参与模块回滚事务。
为保证各参与模块同步提交最终的消息数据,通过轮询接收到的消息数据的来源,判断当前是否接收到所有参与模块发送的消息数据,一旦所述消息数据的来源覆盖所有参与模块,则判定接收到所有参与模块发送的消息数据,若所述消息数据的来源未覆盖所有参与模块,则判定未接收到所有参与模块发送的消息数据;其中,所述关闭事务组模块是指接收到所有参与模块发送的消息数据时,将执行正常状态通知给事务组模块(TxManager)的动作。
需要说明的是,所述参与模块可为mysql、或redis或mongo。
在示例性的实施例中,所述最终一致机制和强一致机制以注解的形式体现在应用服务的代码中,一旦应用服务接收到业务数据,将通过所述注解运行最终一致机制和强一致机制,按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号,因此极大的降低了代码入侵性,保证了应用服务能够正常运行。例如:引入@LcnTransaction作为最终一致机制中注解,一旦接收到业务数据,将按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据。
本申请可应用于智慧政务场景中,从而推动智慧城市的建设。
实施例二:
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。
下面,以在运行有分布式事务实现方法的服务器对至少一个参与模块进行事务管理为例,来对本实施例提供的方法进行具体说明。需要说明的是,本实施例只是示例性的,并不限制本发明实施例所保护的范围。
图2示意性示出了根据本申请实施例二的分布式事务实现方法的环境应用示意图。
在示例性的实施例中,分布式事务实现方法所在的服务器2通过网络3连接参与模块4;所述服务器2可以通过一个或多个网络3提供服务,网络3可以包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或等等。网络3可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,它们的组合和/或类似物。网络3可以包括无线链路,例如蜂窝链路,卫星链路,Wi-Fi链路和/或类似物;所述参与模块4可为安装有人脸识别算法程序的服务器。
图3是本发明一个实施例提供的一种分布式事务实现方法的具体方法流程图,该方法具体包括步骤S201至S207。
S201:创建分类映射表;其中,所述分类映射表包括用于区分业务数据的业务类型的业务边界,用于区分业务数据的相关模块的工作边界,用于区分业务数据的技术选型和语言框架的应用边界。
S202:创建事务组模块,接收所述事务组模块发送的创建成功信号。
为用于对业务数据的处理过程进行同步,需要创建一个用于管理各参与模块的工作结果和基于该工作结果对各参与模块进行操作的事务组模块。
本步骤中,根据所述业务数据调用应用服务创建事务组模块,其用于根据各参与模块的工作结果对各参与模块进行提交操作或回滚操作的计算机模块;其中,创建事务组模块是指在事务发起方开始执行业务代码之前先调用TxManager创建事务组对象,然后拿到事务标识GroupId的过程。
于本实施例中,所述应用服务通过LCN分布式事务框架,管理各参与模块的工作结果和基于该工作结果对各参与模块进行操作的事务组模块,以实现基于对本地事务的协调从而达到事务一致性的效果。
S203:接收业务信息,根据所述分类映射表识别所述业务信息的业务类型、参与模块、技术选型和语言框架,根据所述业务类型、技术选型和语言框架获得执行逻辑并将其载入所述业务信息形成业务数据,将所述业务数据发送所述参与模块。
为准确识别业务数据的类别,以准确获得处理该业务数据的参与方模块,首先通过业务分类规则中的业务边界识别业务数据的业务类型,再根据所述业务类型通过业务分类规则中的工作边界识别业务数据的相关模块,最后通过业务分类规则中的应用边界识别处理业务数据的技术选型和语言框架。
对于业务数据来说,具有业务类型、相关模块和技术选型和语言框架等几种性质,业务类型是描述业务的执行逻辑的属性信息,例如:转账、交易、买卖等;相关模块是指描述执行逻辑的相关方,例如:张三转账给李四,那么相关方就包括张三的账号管理模块和李四的账号管理模块;技术选型是反映处理业务数据的执行逻辑的编号,例如:张三转账给李四,技术选型为:转账服务逻辑*****号;语言框架是反映处理业务数据所使用的语言,例如:Web语言框架、http语言框架等。
根据分类映射表的业务边界识别业务信息的业务类型,根据分类映射表的工作边界识别业务信息的相关模块,根据分类映射表的应用边界识别业务信息的技术选型和语言框架制定。
S204:按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号。
为保证各参与模块数据处理结果的一致性,采用最终一致机制依次控制各参与模块执行业务数据形成消息数据的效率和同步性。所述最终一致机制是指在所述排序中,控制位于上一位的参与模块执行业务数据并接收所述参与模块发送的消息数据,储存所述消息数据并修改所述上一位的参与模块中该消息数据的状态,根据所述状态控制下一位的参与模块执行业务数据的序列操作过程。通过强一致机制保证服务器能够获得每个参与模块返回的正确信息,以保证整个系统对信息处理的可靠性;其中,所述强一致机制是一种保证一旦参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,控制该参与模块再次执行业务数据直至形成正确的消息数据的数据处理管理机制。
于本实施例中,可采用TX-LCN分布式事务框架作为最终一致机制,LCN事务控制原理是由事务模块TxClient下的代理连接池与TxManager的协调配合完成的事务协调控制。TxClient的代理连接池实现了javax.sql.DataSource接口,并重写了close方法,事务模块在提交关闭以后TxClient连接池将执行"假关闭"操作,等待TxManager协调完成事务以后在关闭连接。
需要说明的是,TX-LCN分布式事务框架的基础依赖包括JDK;Java库依赖包括projectlombok,hessian,fastjson,protostuff,kryo,brave-instrumentation,commons-dbutils,jsqlparser,h2database,hikari-cp,pagehelper,mybatis.spring.boot;中间件依赖包括Mariadb或者MySQL5,Redis。
于本实施例中,采用TCC分布式事务作为所述强一致机制,所述TCC分布式事务包括:Try(尝试执行业务)、Confirm(确认执行业务)、Cancel(取消执行业务);其中,Try用于对所述业务数据进行业务检查,并预留执行所述业务数据所需的业务资源,例如:对各项相关数据等做校验,发现不合法的则直接退出,不执行后续操作。这步骤必须保证用户有足够的积分并且可以先扣除;Confirm用于利用所述业务资源执行所述业务数据获得消息数据,例如:在收到另外应用通知,发起扣除的应用业务已经执行完毕,比如积分抽奖或者兑换,收到消息确认没有问题,可以正常扣除积分,因为在try操作上已经真实扣除了积分,这个时候就不用再处理了,只是处理一些事务遗留的一些其他的处理,比如这个事物中一些状态的确认等;Cancel用于释放所述业务资源,例如:收到第三方应用通知(比如告知用户操作失败等),取消执行业务,那么则需要执行针对try步骤中的事情做回滚。
在一个优选的实施例中,请参阅图4,所述控制参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号的步骤,包括:
S204-1:向参与模块发送预算请求,使所述参与模块对所述业务数据进行业务检查,以判断所述参与模块中的模块数据是否能够满足业务数据的执行;若是,则在所述参与模块中预留用于执行所述业务数据所需的业务资源;若否,则接收所述参与模块生成的执行异常信号。
S204-2:根据所述业务资源向参与模块发送执行请求,使所述参与模块通过所述业务资源执行业务数据形成消息数据并将所述消息数据的状态设为待发送状态,及根据所述消息数据释放所述业务资源。
其中,所述执行业务数据是指按照执行逻辑执行业务信息,例如:张三转账50元给李四,对于参与模块“张三账户管理模块”,则执行“减少50元账户余额”的操作。
S204-3:控制所述参与模块定时轮询待发送状态的消息数据,及发送所述消息数据。
S204-4:记录所述参与模块发送消息数据的时间,判断在预设的重发时间内是否接收到所述消息数据;其中,所述存储器为区块链存储设备;若是,则通过队列(MQ)将所述消息数据储存至预设的存储器,接收所述存储器在储存消息数据成功时所生成的储存确认信号;
若否,则控制所述参与模块再次发送所述消息数据,直至接收到所述消息数据为止。为保证所有参与模块能够准确输出正确的消息数据,本实施例采用强一致机制保证服务器能够获得每个参与模块返回的正确信息,以保证整个系统对信息处理的可靠性;其中,所述强一致机制是一种保证一旦参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,控制该参与模块再次执行业务数据直至形成正确的消息数据的数据处理管理机制。
需要说明的是,基于消息数据得到对应的摘要信息,具体来说,摘要信息由消息数据进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该摘要信息,以便查证xx是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
S204-5:向所述参与模块发送事务信号,使所述参与模块将所述消息数据的状态更新为已发送状态,并根据所述已发送状态在事务组模块中添加事务组,以记录形成所述消息数据的全过程。
其中,所述添加事务组是指参与模块在执行完业务数据形成消息数据后,将记载有业务数据经执行形成消息数据全过程的失误信息添加至事务组模块(TxManager)的操作。
S205:判断是否接收到执行异常信号;若是,则关闭事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据。
为及时发现参与模块发生执行异常,以通过事务组模块对各参与模块进行回滚操作,保证各参与模块的同步,本步骤通过实时监听是否接收到参与模块发送执行异常信号,如果接受到了该信号,则及时关闭事务组模块,并通知事务组模块出现了执行异常。其中,所述关闭事务组模块是指在监听到参与模块出现执行异常时,发起执行异常状态通知给事务组模块(TxManager)的动作,事务组模块将根据其中的事务信息,通知各参与模块回滚事务。
S206:判断是否接收到所有参与模块发送的消息数据;若是,则关闭事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块。
为保证各参与模块同步提交最终的消息数据,通过轮询接收到的消息数据的来源,判断当前是否接收到所有参与模块发送的消息数据,一旦所述消息数据的来源覆盖所有参与模块,则判定接收到所有参与模块发送的消息数据,若所述消息数据的来源未覆盖所有参与模块,则判定未接收到所有参与模块发送的消息数据;其中,所述关闭事务组模块是指接收到所有参与模块发送的消息数据时,将执行正常状态通知给事务组模块(TxManager)的动作。
S207:通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
本步骤中,事务组模块在接收到参与模块出现执行异常时,事务组模块将根据其中的事务信息,通知各参与模块回滚事务;事务组模块在接收到所有参与模块发送的消息数据时,将根据其中的事务信息通知参与模块向平台服务器提交消息数据。
实施例三:
请参阅图5,本实施例的一种分布式事务实现装置1,包括:
最终强一致模块11,用于按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号;
异常判断模块12,用于判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;
消息判断模块13,用于判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;
提交回滚模块14,用于通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
可选的,所述分布式事务实现装置1,还包括:
映射表创建模块15,用于创建分类映射表;其中,所述分类映射表包括用于区分业务数据的业务类型的业务边界,用于区分业务数据的相关模块的工作边界,用于区分业务数据的技术选型和语言框架的应用边界。
模块创建模块16,用于创建事务组模块,接收所述事务组模块发送的创建成功信号。
逻辑识别模块17,用于接收业务信息,根据所述分类映射表识别所述业务信息的业务类型、参与模块、技术选型和语言框架,根据所述业务类型、技术选型和语言框架获得执行逻辑并将其载入所述业务信息形成业务数据,将所述业务数据发送所述参与模块。
本技术方案基于研发管理的开发领域,通过按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号,判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据,实现研发过程优化领域的事务处理过程优化。
实施例四:
为实现上述目的,本发明还提供一种计算机系统,该计算机系统包括多个计算机设备5,实施例二的分布式事务实现装置1的组成部分可分散于不同的计算机设备中,计算机设备可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图6所示。需要指出的是,图6仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器51还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例一的分布式事务实现装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如运行分布式事务实现装置,以实现实施例一的分布式事务实现方法。
实施例五:
为实现上述目的,本发明还提供一种计算机可读存储系统,其包括多个存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器52执行时实现相应功能。本实施例的计算机可读存储介质用于存储分布式事务实现装置,被处理器52执行时实现实施例一的分布式事务实现方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种分布式事务实现方法,其特征在于,包括;
按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号;
判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;
判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;
通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
2.根据权利要求1所述的分布式事务实现方法,其特征在于,在按照最终一致机制对参与模块进行排序之前,包括:
接收业务信息,根据分类映射表识别所述业务信息的业务类型、参与模块、技术选型和语言框架,根据所述业务类型、技术选型和语言框架获得执行逻辑并将其载入所述业务信息形成业务数据,将所述业务数据发送所述参与模块。
3.根据权利要求2所述的分布式事务实现方法,其特征在于,在接收业务信息之前,包括:
创建分类映射表;其中,所述分类映射表包括用于区分业务数据的业务类型的业务边界,用于区分业务数据的相关模块的工作边界,用于区分业务数据的技术选型和语言框架的应用边界;
创建事务组模块,接收所述事务组模块发送的创建成功信号。
4.根据权利要求1所述的分布式事务实现方法,其特征在于,所述最终一致机制是指在所述排序中,控制位于上一位的参与模块执行业务数据并接收所述参与模块发送的消息数据,储存所述消息数据并修改所述上一位的参与模块中该消息数据的状态,根据所述状态控制下一位的参与模块执行业务数据的序列操作过程。
5.根据权利要求1所述的分布式事务实现方法,其特征在于,所述强一致机制是保证一旦参与模块发生执行错误而形成错误的消息数据,或在预定的时间内为接收到消息数据时,控制该参与模块再次执行业务数据直至形成正确的消息数据的数据处理管理机制。
6.根据权利要求1所述的分布式事务实现方法,其特征在于,控制参与模块按照强一致机制执行业务数据的步骤,包括:
向参与模块发送预算请求,使所述参与模块对所述业务数据进行业务检查,以判断所述参与模块中的模块数据是否能够满足业务数据的执行;若是,则在所述参与模块中预留用于执行所述业务数据所需的业务资源;若否,则接收所述参与模块生成的执行异常信号;
根据所述业务资源向参与模块发送执行请求,使所述参与模块通过所述业务资源执行业务数据形成消息数据并将所述消息数据的状态设为待发送状态,及根据所述消息数据释放所述业务资源。
7.根据权利要求1所述的分布式事务实现方法,其特征在于,接收所述参与模块发送的消息数据或执行异常信号的步骤,包括:
控制所述参与模块定时轮询待发送状态的消息数据,及发送所述消息数据;
记录所述参与模块发送消息数据的时间,判断在预设的重发时间内是否接收到所述消息数据;若是,则通过队列将所述消息数据储存至预设的存储器,接收所述存储器在储存消息数据成功时所生成的储存确认信号;若否,则控制所述参与模块再次发送所述消息数据,直至接收到所述消息数据为止;其中,所述存储器为区块链存储设备。
8.一种分布式事务实现装置,其特征在于,包括:
最终强一致模块,用于按照最终一致机制对参与模块进行排序,及根据所述排序依次控制各参与模块按照强一致机制执行业务数据,并接收所述参与模块发送的消息数据或执行异常信号;
异常判断模块,用于判断是否接收到执行异常信号;若是,则关闭预设的事务组模块并通知所述事务组模块出现执行异常;若否,则轮询接收到的消息数据;
消息判断模块,用于判断是否接收到所有参与模块发送的消息数据;若是,则关闭预设的事务组模块并通知所述事务组模块执行正常;若否,则继续监听未发送消息数据的参与模块;
提交回滚模块,用于通过所述事务组模块根据所述执行异常控制各参与模块回滚,或根据所述执行正常控制各参与模块提交消息数据。
9.一种计算机系统,其包括多个计算机设备,各计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述多个计算机设备的处理器执行所述计算机程序时共同实现权利要求1至7任一项所述分布式事务实现方法的步骤。
10.一种计算机可读存储介质,其包括多个存储介质,各存储介质上存储有计算机程序,其特征在于,所述多个存储介质存储的所述计算机程序被处理器执行时共同实现权利要求1至7任一项所述分布式事务实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010469594.6A CN111666132B (zh) | 2020-05-28 | 2020-05-28 | 分布式事务实现方法、装置、计算机系统及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010469594.6A CN111666132B (zh) | 2020-05-28 | 2020-05-28 | 分布式事务实现方法、装置、计算机系统及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111666132A true CN111666132A (zh) | 2020-09-15 |
CN111666132B CN111666132B (zh) | 2024-06-28 |
Family
ID=72384952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010469594.6A Active CN111666132B (zh) | 2020-05-28 | 2020-05-28 | 分布式事务实现方法、装置、计算机系统及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111666132B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515352A (zh) * | 2021-05-18 | 2021-10-19 | 中国工商银行股份有限公司 | 分布式事务异库模式反交易调用方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337303A1 (en) * | 2013-05-07 | 2014-11-13 | Red Hat, Inc | Bandwidth optimized two-phase commit protocol for distributed transactions |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和系统 |
-
2020
- 2020-05-28 CN CN202010469594.6A patent/CN111666132B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337303A1 (en) * | 2013-05-07 | 2014-11-13 | Red Hat, Inc | Bandwidth optimized two-phase commit protocol for distributed transactions |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和系统 |
Non-Patent Citations (1)
Title |
---|
徐进 等: "基于消息通信的分布式系统最终一致性平台", 《计算机应用》, vol. 37, no. 4, pages 1157 - 1163 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515352A (zh) * | 2021-05-18 | 2021-10-19 | 中国工商银行股份有限公司 | 分布式事务异库模式反交易调用方法及装置 |
CN113515352B (zh) * | 2021-05-18 | 2024-01-26 | 中国工商银行股份有限公司 | 分布式事务异库模式反交易调用方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111666132B (zh) | 2024-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112073269B (zh) | 区块链网络测试方法、装置、服务器及存储介质 | |
CN111736872B (zh) | 灰度发布升级方法、装置、计算机系统及可读存储介质 | |
CN111756601B (zh) | 微服务架构监控方法、装置、计算机设备及可读存储介质 | |
CN112291372B (zh) | 区块链的异步落账方法、装置、介质及电子设备 | |
CN111698315B (zh) | 针对区块的数据处理方法、数据处理装置及计算机设备 | |
US11627122B2 (en) | Inter-system linking method and node | |
CN113064744A (zh) | 任务处理方法、装置、计算机可读介质及电子设备 | |
CN110581887A (zh) | 数据处理方法、装置、区块链节点及存储介质 | |
CN112099843A (zh) | 代码托管平台管理方法、装置、计算机设备及存储介质 | |
CN112087497B (zh) | 数据同步方法、装置、电子设备及可读存储介质 | |
CN110162344A (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN115220876A (zh) | 虚拟资源创建方法、装置、程序产品、介质及电子设备 | |
CN111553672A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN112561506B (zh) | 基于虚拟货币的直播数据处理方法、系统、设备及介质 | |
CN111666132B (zh) | 分布式事务实现方法、装置、计算机系统及可读存储介质 | |
CN111209542B (zh) | 一种权限管理方法、装置、存储介质及电子设备 | |
CN111722946A (zh) | 分布式事务处理方法、装置、计算机设备及可读存储介质 | |
CN108241616B (zh) | 消息推送方法和装置 | |
CN112015563A (zh) | 消息队列切换方法、装置、电子设备及存储介质 | |
CN115643271A (zh) | 一种云上多应用数据同步方法、装置、服务器及介质 | |
CN113592645B (zh) | 数据验证的方法和装置 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、系统、终端及存储介质 | |
CN112463887A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
WO2012050562A1 (en) | Transaction processing system and method | |
CN114090299A (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 |