CN117950813B - 一种基于分布式应用运行时的事务管理方法、设备及介质 - Google Patents
一种基于分布式应用运行时的事务管理方法、设备及介质 Download PDFInfo
- Publication number
- CN117950813B CN117950813B CN202410351764.9A CN202410351764A CN117950813B CN 117950813 B CN117950813 B CN 117950813B CN 202410351764 A CN202410351764 A CN 202410351764A CN 117950813 B CN117950813 B CN 117950813B
- Authority
- CN
- China
- Prior art keywords
- transaction
- distributed
- service
- mode
- application
- 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
Links
- 238000007726 management method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 106
- 230000003993 interaction Effects 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims abstract description 13
- 239000010410 layer Substances 0.000 claims description 24
- 239000012792 core layer Substances 0.000 claims description 12
- 238000003860 storage Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000010796 Steam-assisted gravity drainage Methods 0.000 description 10
- 101100297732 Mus musculus Plekhm3 gene Proteins 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000002955 isolation Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- 206010028980 Neoplasm Diseases 0.000 description 2
- 201000011510 cancer Diseases 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000178 monomer Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于分布式应用运行时的事务管理方法、设备及介质,包括:在每台服务器上配置有分布式应用运行时和应用服务;通过分布式应用运行时之间进行连接,实现应用服务之间交互;在每个分布式应用运行时上嵌入事务配置操作组件;分布式应用运行时从配置中心获取分布式事务模式,并下发给应用服务;应用服务将分布式事务模式与模式参数发送给事务配置操作组件,事务配置操作组件进行模式设置,对不同服务器之间进行分布式事务管理;事务配置操作组件与本地数据库进行长连接;通过本地数据库进行本地事务处理;分布式应用运行时支持多种语言栈,应用服务和事务管理器选择多种语言栈其中一种。本发明可以保证服务器之间数据一致性。
Description
技术领域
本发明涉及事务管理领域,尤其涉及一种基于分布式应用运行时的事务管理方法、设备及介质。
背景技术
在微服务架构下,不同服务器下的应用服务负责不同的服务功能,服务器的应用服务是直接与中间件之间进行耦合,存在如下几个问题:
1、由于不同服务器的服务功能不同,需要将不同类型数据拆分,分布在不同的服务器(节点)上。在一次业务操作中,只能保证本地服务器对应事务的数据一致性,无法保证调用的其他服务器的数据一致性。因此,在不同服务器之间存在跨数据库、跨服务、跨语言栈更新数据的一致性问题。
2、由于应用服务与事务管理器连接耦合在一起,在事务管理器需要修改时,就必须对对应的应用服务做适应性的修改,增加了工作量。另外,应用服务与事务管理器直接耦合,需要采用应用服务与事务管理器都能同时支持的语音栈和事务模式,这样所采用的语音栈和事务模式具有局限性,只能支持特定的语言栈和单一事务模式,存在性能瓶颈。因为应用服务(业务)与事务管理器连接耦合在一起,业务容易被入侵,无法保证数据的隔离性,容易产生脏写。
当加入分布式应用运行时,分布式应用运行时Dapr为微软开源的一个用于构建分布式应用的框架,Dapr为分布式应用运行时(Distributed Application Runtime)的英文单词缩写;Dapr提供了分布式应用所依赖的执行环境,通过使用Dapr可以使用任何语言轻松构建与平台无关的微服务应用。通过应用运行时可以将应用服务与事务管理器解耦,但依然存在如下的问题:
在单体架构中,只有本地事务,对于本地事务所执行的操作,若所有的操作都成功,则认为全局事务成功;若某一个操作失败,则将回滚之前已成功的操作,认为全局事务失败。因为目前分布式进行时进行RDS(Relational Database Service,关系型数据库服务)操作默认是用短连接,操作一次就释放,无法做到记忆,而本地事务需要记忆历史信息,故不能进行本地事务;在分布式事务中,除了要保证本地事务,还要所有分布式服务的事务,才能做到数据一致性。基于分布式进行时会直接用短连接进行RDS操作,无法做到本地事务的执行,因此更无法做到整个分布式事务的执行。
公开号为CN117348980A的中国发明,公开了一种分布式事务处理方法、装置、设备、介质及程序产品。通过接收分布式事务处理请求,根据分布式数据库系统的当前工作负载确定被同一类事务访问的数据分区,得到至少一个关联分区,然后获取将关联分区从当前节点重新分配至不同节点时对应的第一副本重排代价,并根据第一副本重排代价将关联分区分配至对应的目标节点,最后基于副本重排后的分布式数据库系统进行分布式事务的处理。此方案对当下工作负载进行分析,基于负载分析结果对分区副本重新进行排布,并将分布式事务所涉及的分区副本排布在同一节点,从而实现将分布式事务转换成单机事务,减少了协调和网络通信代价,提高了分布式数据库系统的性能。但是仍然无法解决分布式数据一致性、应用服务与事务管理器的解耦和支持分布式应用运行时本地事务处理的问题。
发明内容
有鉴于此,本发明的目的在于提出一种基于分布式应用运行时的事务管理方法,解决分布式数据一致性、应用服务与事务管理器的解耦和支持分布式应用运行时本地事务处理的问题。
为了实现上述的技术目的,本发明所采用的技术方案为:
本发明提供了一种基于分布式应用运行时的事务管理方法,应用于配置中心、事务管理器和多台服务器,包括如下步骤:
步骤1、在每台所述服务器上配置有分布式应用运行时和应用服务,将同一台服务器下的分布式应用运行时和应用服务进行连接;
步骤2、通过每两个所述分布式应用运行时之间进行连接,实现多台所述服务器的应用服务之间交互;
步骤3、在每个所述分布式应用运行时上嵌入自定义的事务配置操作组件;
步骤4、每个所述分布式应用运行时从配置中心获取分布式事务模式,并下发给对应的应用服务;
步骤5、每个所述应用服务将分布式事务模式与对应的模式参数通过分布式应用运行时发送给事务配置操作组件,事务配置操作组件根据分布式事务模式和模式参数对事务管理器进行模式设置,通过事务管理器对不同服务器之间进行分布式事务管理;
步骤6、所述事务配置操作组件与本地数据库进行长连接;通过本地数据库进行本地服务器的本地事务处理;
步骤7、所述分布式应用运行时支持多种语言栈,所述应用服务选择多种语言栈其中一种或多种,所述事务管理器选择多种语言栈其中一种,通过分布式应用运行时实现不同事务管理器的语言栈兼容。
进一步的,所述步骤2具体包括:
步骤21、每两个所述分布式应用运行时之间通过http或rpc协议进行连接;
步骤22、某台服务器的应用服务将请求通过服务端口发送给自身的分布式应用运行时,通过自身的分布式应用运行时将请求转发给另一台服务器的分布式应用运行时上,再由该分布式应用运行时通过服务端口转发至对应的应用服务上,实现两台所述服务器的应用服务之间交互。
进一步的,所述步骤3具体包括:
步骤31、自定义用于配置事务的事务配置操作组件,所述事务配置操作组件为分层架构,第一层为分布式进行时交互层,用于与应用服务进行交互以及对事务配置操作核心层进行控制;第二层为事务配置操作核心层,用于与事务管理器进行交互以及对分布式进行时交互层发送的命令进行操作;
步骤32、将自定义的事务配置操作组件嵌入到每个所述分布式应用运行时上。
进一步的,所述步骤4具体包括:
步骤41、每个所述分布式应用运行时与配置中心进行连接;
步骤42、设置当前的分布式事务模式作为配置数据存储于配置中心中;
步骤43、每个所述分布式应用运行时从配置中心获取配置数据,并下发给对应的应用服务;
步骤44、所述分布式应用运行时实时监听配置中心的配置数据,判断配置数据是否发生变化,若是,进入步骤45,否则,进入步骤5;
步骤45、所述分布式应用运行时获取更新后的配置数据,将原来的分布式事务模式切换为新的分布式事务模式,并下发给对应的应用服务;
步骤46、所述应用服务进行热加载生效更新后的分布式事务模式。
进一步的,所述分布式应用运行时与配置中心通过发布/订阅模式建立连接。
进一步的,所述事务管理器支持多种分布式事务模式,包括:XA模式、SAGA模式、TCC模式、二阶段消息模式和Workflow模式,所述配置中心根据业务特性设置其中一种分布式事务模式。
进一步的,所述步骤5具体包括:
步骤51、每个所述应用服务将分布式事务模式和该模式下所对应的模式参数通过分布式应用运行时发送给事务配置操作组件的分布式进行时交互层,所述模式参数包括服务器的所有服务接口的正向处理信息或者是包括服务器的所有服务接口的正向处理信息和回退处理信息,所述模式参数是根据不同的分布式事务模式进行对应选择;
步骤52、所述分布式进行时交互层调用事务配置操作核心层来启动事务配置操作;
步骤53、不同服务器的事务配置操作核心层将自身获取到的分布式事务模式和对应的模式参数上传至事务管理器,对所述事务管理器进行分布式事务模式和不同服务器下模式参数设置;
步骤54、当发起业务服务调用的时候,根据业务服务类型选定需要调用的对应服务器的服务接口;若待调用的服务器具有n台,n为正整数;根据不同的业务服务类型对n台服务器进行调用顺序排列,所述事务管理器采用分布式事务模式按调用顺序先调用第1个服务器;
步骤55、所述事务管理器将当前服务器对应的服务接口的正向处理信息通过当前服务器的分布式应用运行时发送给对应的应用服务,该应用服务接收到该正向处理信息后,执行正向处理信息指定的服务操作,若服务操作成功,则应用服务将操作结果通过分布式应用运行时反馈给事务管理器,进入步骤56;若第m个应用服务的服务操作失败,1≤m≤n,m为正整数,则应用服务将操作结果通过分布式应用运行时反馈给事务管理器,进入步骤57;
步骤56、所述事务管理器收到操作结果后,继续调用下一个服务器,返回步骤55,直至n台服务器调用完毕;
步骤57、根据所述事务管理器上设置的分布式事务模式选择采用调用回退处理信息方式或者发送通知信息方式;若所述事务管理器采用的是调用回退处理信息方式,则事务管理器将第1台至第m-1台服务器对应的服务接口的回退处理信息通过对应服务器的分布式应用运行时发送给对应的应用服务,该应用服务接收到该回退处理信息后,执行回退处理信息指定的回退操作以取消服务;若所述事务管理器采用的是发送通知信息方式,则事务管理器通过第1台至第m-1台服务器的分布式应用运行时将通知信息发送给对应的应用服务,该应用服务接收到该通知信息后,执行通知信息指定的回退操作以取消服务操作。
进一步的,所述步骤6具体包括:
步骤61、每台服务器上还配置有本地数据库,将每台服务器的事务配置操作组件与本地数据库进行长连接;
步骤62、每台服务器的应用服务在执行服务操作成功或者回退操作后,将服务数据下发给分布式应用运行时上,由事务配置操作组件从分布式应用运行时上获取服务数据并传送给本地数据库;
步骤63、所述本地数据库根据服务数据对本地库存进行实时更新。
本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述的一种基于分布式应用运行时的事务管理方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述的一种基于分布式应用运行时的事务管理方法。
采用上述的技术方案,本发明与现有技术相比,其具有的有益效果为:
1、解决了分布式数据一致性的问题:通过事务管理器进行分布式事务处理,由于事务管理器根据不同服务操作结果进行处理,不同的服务器之间都执行成功或失败(回退),保证不同服务器之间的数据一致性,保证事务的隔离性,避免脏写。
2、解决了应用服务与事务管理器和配置中心解耦的问题:通过分布式应用运行时(嵌入事务配置操作组件)将应用服务与事务管理器进行解耦,业务只在应用服务,没有入侵;由于应用服务与配置中心可以通过分布式应用运行时进行解耦,当需要对应用服务配置不同分布式事务模式时,不需要修改系统应用代码,只需要改动配置中心的配置数据即可,提升系统的稳定性,灵活性和可维护性;由于分布式应用运行时可支持多种语言栈,应用服务的语言栈可以与事务管理器的语言栈不同,因此,应用服务不限制特定的语言栈。
3、建立事务配置操作组件与本地数据库之间的长连接,本地数据库采用长连接的方式,可以实现支持本地事务处理。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于分布式应用运行时的事务管理方法的执行流程图。
图2是本发明实施例提供的配置中心、事务管理器和多台服务器的框架图。
图3是本发明实施例提供的一种电子设备的示意图。
图4是本发明实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
下面结合附图和实施例,对本发明作进一步的详细描述。特别指出的是,以下实施例仅用于说明本发明,但不对本发明的范围进行限定。同样的,以下实施例仅为本发明的部分实施例而非全部实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参见图1和图2,本发明的一种基于分布式应用运行时的事务管理方法,应用于配置中心、事务管理器和多台服务器,包括如下步骤:
步骤1、在每台所述服务器上配置有分布式应用运行时和应用服务,将同一台服务器下的分布式应用运行时和应用服务进行连接;
分布式应用运行时作为系统软件的Sidecar(边车),用于控制与中间件交互和网络控制,采用分布式应用运行时的优势就是应用服务可以跟很多第三方组件进行解耦,不需要额外引入交互的sdk,比如RDS、配置、消息中间件等。应用服务与分布式应用运行时是一起打包成一个容器的,分布式应用运行时监听应用服务的服务端口的进出流量。通过分布式应用运行时可以直接将应用服务与配置中心之间进行解耦;通过分布式应用运行时的自定义事务配置操作组件与事务管理器直连,实现分布式事务,避免应用服务直接连接事务管理器而耦合在一起。
步骤2、通过每两个所述分布式应用运行时之间进行连接,实现多台所述服务器的应用服务之间交互;
在本实施例中,所述步骤2具体包括:
步骤21、每两个所述分布式应用运行时之间通过http或rpc协议进行连接;
步骤22、某台服务器的应用服务将请求通过服务端口发送给自身的分布式应用运行时,通过自身的分布式应用运行时将请求转发给另一台服务器的分布式应用运行时上,再由该分布式应用运行时通过服务端口转发至对应的应用服务上,实现两台所述服务器的应用服务之间交互。
步骤3、在每个所述分布式应用运行时上嵌入自定义的事务配置操作组件;事务配置操作组件的功能就是对事务管理器的配置操作进行统一封装,事务管理器可以随时切换成不同第三方组件,事务配置操作组件没有跟其他硬件做交互,就是不允许应用服务直接操作事务管理器。
在本实施例中,所述步骤3具体包括:
步骤31、自定义用于配置事务的事务配置操作组件,所述事务配置操作组件为分层架构,第一层为分布式进行时交互层,用于与应用服务进行交互以及对事务配置操作核心层进行控制;第二层为事务配置操作核心层,用于与事务管理器进行交互以及对分布式进行时交互层发送的命令进行操作;
步骤32、将自定义的事务配置操作组件嵌入到每个所述分布式应用运行时上。
步骤4、每个所述分布式应用运行时从配置中心获取分布式事务模式,并下发给对应的应用服务;
在本实施例中,所述步骤4具体包括:
步骤41、每个所述分布式应用运行时与配置中心进行连接,实现应用服务与配置中心的解耦;具体地,所述分布式应用运行时与配置中心通过发布/订阅模式建立连接,分布式应用运行时订阅一个主题,配置中心往这个主题进行发布内容,分布式应用运行时即可收到对应的内容。
步骤42、设置当前的分布式事务模式作为配置数据存储于配置中心中;
步骤43、每个所述分布式应用运行时从配置中心获取配置数据,并下发给对应的应用服务;
步骤44、所述分布式应用运行时实时监听配置中心的配置数据,判断配置数据是否发生变化,若是,进入步骤45,否则,进入步骤5;
步骤45、所述分布式应用运行时获取更新后的配置数据,将原来的分布式事务模式切换为新的分布式事务模式,并下发给对应的应用服务;
步骤46、所述应用服务进行热加载生效更新后的分布式事务模式。
根据业务需求更改配置数据,当配置中心中配置数据发生变化时,主动推送给分布式应用运行时Dapr,分布式应用运行时Dapr再告知应用服务配置数据发生了变化,要重新调整应用服务中的配置数据,对应用服务内部的配置数据进行实时更新可以实现热加载,避免由于配置数据变更导致的服务重启。配置加载分为热加载和冷加载,冷加载是需要程序重新启动才能让新的配置生效,而在生产环境中,重启一次服务可能产生的影响是非常大的,而热加载就不需要重启即可实现配置的变更。因为分布式事务模式只在服务调用的时候用到,所以可以进行热加载,不需要重启应用服务本身。
由于应用服务与配置中心可以通过分布式应用运行时进行解耦,当需要对应用服务配置不同分布式事务模式时,不需要修改系统应用代码,只需要改动配置中心的配置数据即可,提升系统的稳定性,灵活性和可维护性。
在本实施例中,所述事务管理器支持多种分布式事务模式,包括:XA模式、SAGA模式、TCC模式、二阶段消息模式和Workflow模式,所述配置中心根据业务特性设置其中一种分布式事务模式,即可以根据应用服务的具体业务选择对应的分布式事务模式作为配置数据写入配置中心。
XA模式:XA模式是一种基于两阶段提交(2PC)的分布式事务处理模式,由X/Open组织提出,并定义了全局事务在多个资源管理器(例如数据库、消息队列等)之间如何进行协调的接口。适用于需要强一致性和全局事务的场景。例如,金融交易系统中,涉及多个数据库或消息队列的操作,需要确保所有操作要么全部提交,要么全部回滚。
SAGA模式:Saga模式是一种用于实现分布式事务的解决方案,它将分布式事务分解为一系列独立的事务片段(也称为“步骤”),每个片段都是一个原子性的本地事务。这些步骤按照一定的顺序执行,每个步骤都负责执行一个操作,并且记录其状态以确保事务的正确性。如果某个步骤失败,则需要回滚所有之前的步骤以撤销对数据的任何更改。反之,如果所有步骤都成功,则事务被提交。适用于长时间运行的业务流程,其中业务操作可以被分解为多个独立的事务性步骤。每个步骤都有自己的补偿操作。例如,订单支付、减库存、发货等步骤。
TCC模式:TCC(Try-Confirm-Cancel)模式是一种高性能的分布式事务接入模式,它提供了一种灵活的方式来处理事务,几乎可以满足任何事务场景。适用于业务逻辑相对简单的场景,其中可以通过Try阶段尝试执行业务逻辑,Confirm阶段确认执行,Cancel阶段取消执行。二阶段消息模式:二阶段消息的英文是2-phase message。应用服务先向事务管理器发送prepare消息,然后进行执行本地事务,继续向事务管理器发送submit消息,执行成功,则事务管理器调用其他应用服务的正向接口。如果成功,则全局事务成功;如果失败,则进行回退,全局事务失败。适用于需要强一致性和对性能要求不是特别高的场景。
Workflow模式:工作流(WorkFlow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。
步骤5、每个所述应用服务将分布式事务模式与对应的模式参数通过分布式应用运行时发送给事务配置操作组件,事务配置操作组件根据分布式事务模式和模式参数对事务管理器进行模式设置,通过事务管理器对不同服务器之间进行分布式事务管理;分布式系统是把一个应用系统拆分解到各个块进行独立运行部署,当我们的部署服务在各个区块执行的时候,需要服务与服务之间进行远程协作完成事务的操作,这种通过网络连接完成分布式系统的事务处理任务的事务,称为分布式事务。
在本实施例中,所述步骤5具体包括:
步骤51、每个所述应用服务将分布式事务模式和该模式下所对应的模式参数通过分布式应用运行时发送给事务配置操作组件的分布式进行时交互层,所述模式参数包括服务器的所有服务接口的正向处理信息或者是包括服务器的所有服务接口的正向处理信息和回退处理信息,所述模式参数是根据不同的分布式事务模式进行对应选择;
若分布式事务模式为XA模式,则该模式下所对应的模式参数为正向处理信息,那么在服务器A中,对应的应用服务将XA模式、服务器A的所有服务接口的正向处理信息发送给事务配置操作组件的分布式进行时交互层;在服务器B中,对应的应用服务将XA模式、服务器B的所有服务接口的正向处理信息发送给事务配置操作组件的分布式进行时交互层;
若分布式事务模式为SAGA模式,则该模式下所对应的模式参数包括正向处理信息和回退处理信息,那么在服务器A中,对应的应用服务将SAGA模式、服务器A的所有服务接口的正向处理信息和回退处理信息发送给事务配置操作组件的分布式进行时交互层;在服务器B中,对应的应用服务将SAGA模式、服务器B的所有服务接口的正向处理信息和回退处理信息发送给事务配置操作组件的分布式进行时交互层;
若分布式事务模式为TCC模式,则该模式下所对应的模式参数包括正向处理信息和回退处理信息,那么在服务器A中,对应的应用服务将TCC模式、服务器A的所有服务接口的正向处理信息和回退处理信息发送给事务配置操作组件的分布式进行时交互层;在服务器B中,对应的应用服务将TCC模式、服务器B的所有服务接口的正向处理信息和回退处理信息发送给事务配置操作组件的分布式进行时交互层;
一旦分布式事务模式确定好,对应的模式参数就固定了。
步骤52、所述分布式进行时交互层调用事务配置操作核心层来启动事务配置操作;
步骤53、不同服务器的事务配置操作核心层将自身获取到的分布式事务模式和对应的模式参数上传至事务管理器,对所述事务管理器进行分布式事务模式和不同服务器下模式参数设置;
例如:服务器的数量为两个,分别为服务器A和服务器B。
1)当采用XA模式时,服务器A提交的信息有:XA模式、服务器A的正向处理信息和服务器A的回退处理信息;而服务器B提交的信息有:XA模式、服务器B的正向处理信息和服务器B的回退处理信息;
事务管理器的设置信息有:
模式:XA
调用集合:
服务器A:
有正向处理信息:订机票(事务管理器通知订机票,由服务器A自己订购)
无回退处理信息:取消机票(事务管理器通知取消机票,由服务器A自己取消)
服务器B:
有正向处理信息:订酒店(事务管理器通知订酒店,由服务器B自己订购)
无回退处理信息:取消酒店(事务管理器通知取消酒店,由服务器B自己取消)
2)当采用SAGA模式时,服务器A提交的信息有:SAGA模式、服务器A的正向处理信息和服务器A的回退处理信息;而服务器B提交的信息有:SAGA模式、服务器B的正向处理信息和服务器B的回退处理信息;
事务管理器的设置信息有:
模式:SAGA
调用集合:
服务器A:
有正向处理信息:订机票(事务管理器调用服务器A的正向处理信息并执行)
有回退处理信息:取消机票(事务管理器调用服务器A的回退处理信息并执行)
服务器B:
有正向处理信息:订酒店(事务管理器调用服务器B的正向处理信息并执行)
有回退处理信息:取消酒店(事务管理器调用服务器B的回退处理信息并执行)
3)当采用TCC(Try Confirm Cancel)模式时,由服务器A调用各服务器中的应用服务进行Try检查(在操作前的预先检查),服务器A提交的信息有:服务器A的正向(Confirm)处理信息和服务器A的回退(Cancel)处理信息;而服务器B提交的信息有:服务器B的正向(Confirm)处理信息和服务器B的回退(Cancel)处理信息;如果所有应用服务的Try检查都成功,事务管理器调用所有应用服务的正向(Confirm)处理信息,如果调用某个应用服务的Try检查失败,则通知事务管理器全局事务失败,事务管理器调用各应用服务的回退(Cancel)处理信息;
事务管理器的设置信息有:
模式:TCC
调用集合:
服务器A:
有正向(Confirm)处理信息:订机票(事务管理器调用服务器A的正向处理信息并执行)
有回退(Cancel)处理信息:取消机票(事务管理器调用服务器A的回退处理信息并执行)
服务器B:
有正向(Confirm)处理信息:订酒店(事务管理器调用服务器B的正向处理信息并执行)
有回退(Cancel)处理信息:取消酒店(事务管理器调用服务器B的回退处理信息并执行)
步骤54、当发起业务服务调用的时候,根据业务服务类型选定需要调用的对应服务器的服务接口;若待调用的服务器具有n台,n为正整数;根据不同的业务服务类型对n台服务器进行调用顺序排列,所述事务管理器采用分布式事务模式按调用顺序先调用第1个服务器;
步骤55、所述事务管理器将当前服务器对应的服务接口的正向处理信息通过当前服务器的分布式应用运行时发送给对应的应用服务,该应用服务接收到该正向处理信息后,执行正向处理信息指定的服务操作,若服务操作成功,则应用服务将操作结果通过分布式应用运行时反馈给事务管理器,进入步骤56;若第m个应用服务的服务操作失败,1≤m≤n,m为正整数,则应用服务将操作结果通过分布式应用运行时反馈给事务管理器,进入步骤57;
步骤56、所述事务管理器收到操作结果后,继续调用下一个服务器,返回步骤55,直至n台服务器调用完毕;
步骤57、根据所述事务管理器上设置的分布式事务模式选择采用调用回退处理信息方式或者发送通知信息方式,不同的分布式事务模式有确定的模式参数,在模式参数中具有回退处理信息的分布式事务模式中可采用调用回退处理信息方式进行处理,而在模式参数中没有回退处理信息的分布式事务模式中可采用发送通知信息方式进行处理;
若所述事务管理器采用的是调用回退处理信息方式,则事务管理器将第1台至第m-1台服务器对应的服务接口的回退处理信息通过对应服务器的分布式应用运行时发送给对应的应用服务,该应用服务接收到该回退处理信息后,执行回退处理信息指定的回退操作以取消服务;若所述事务管理器采用的是发送通知信息方式,则事务管理器通过第1台至第m-1台服务器的分布式应用运行时将通知信息发送给对应的应用服务,该应用服务接收到该通知信息后,执行通知信息指定的回退操作以取消服务操作。由于事务管理器根据不同服务操作结果进行处理,不同的服务器之间都执行成功或失败(回退),保证不同服务器之间的数据一致性,保证事务的隔离性,避免脏写。
例如:服务器A与服务器B可以分布在不同的节点,一次操作中事务管理器对于服务器A、服务器B的操作要么都成功(所有服务器上的应用服务都服务操作成功)要么都失败(只要有一个服务器上的应用服务的服务操作失败,就将该台服务器之前已成功的服务器的服务取消),保证隔离性,避免脏写,实现数据的一致性。业务对服务器A发起请求,服务器A的应用服务将设置的分布式事务模式和服务器A的正向处理信息和回退处理信息提交给事务配置操作组件,通过事务配置操作组件给到事务管理器做统一管理,服务器A和服务器B的调用顺序为:先调用服务器A后调用服务器B,首先调用服务器A,事务管理器将服务器A的正向处理信息发送给服务器A,由应用服务执行订机票服务,如果订购成功,则将操作结果发给事务管理器,事务管理器接着调用服务器B,将服务器B的正向处理信息发送给服务器B,由应用服务执行订酒店服务,如果订购成功,则将操作结果发给事务管理器,说明已同时完成了订机票和订酒店服务,服务器A和服务器A的操作都是成功的。如果服务器B订酒店失败,则将操作结果发给事务管理器,在有回退处理信息的模式下,事务管理器将服务器A的回退处理信息发给服务器A,由应用服务执行取消机票操作,在没有回退处理信息的模式下,事务管理器通知服务器A的应用服务执行取消机票操作,说明服务器A和服务器A的操作都是失败的。
如果服务器B调用失败,事务管理器将对服务器A调用回退操作,保证数据一致性。
比如一个转账业务,服务器A是对用户A进行扣款,服务器B是对用户B进行加金额,如果服务器A操作成功,但是因为某些原因,网络或者其他的调用服务器B失败了,就会导致只对A扣了钱,B并没有到账,结果有影响的时候,这时候有事务管理器,知道服务器B操作失败,就会对服务器A进行回滚,把金额加回去。
步骤6、所述事务配置操作组件与本地数据库进行长连接;通过本地数据库进行本地服务器的本地事务处理;
在本实施例中,所述步骤6具体包括:
步骤61、每台服务器上还配置有本地数据库,将每台服务器的事务配置操作组件与本地数据库进行长连接,本地数据库采用长连接的方式,可以实现支持本地事务处理;解决了分布式进行时(未嵌入事务配置操作组件)与本地数据库之间只能进行短连接,短连接方式操作一次就释放,无法做到记忆,无法实现本地数据库事务处理的缺陷;
步骤62、每台服务器的应用服务在执行服务操作成功或者回退操作后,将服务数据下发给分布式应用运行时上,由事务配置操作组件从分布式应用运行时上获取服务数据并传送给本地数据库;
步骤63、所述本地数据库根据服务数据对本地库存进行实时更新。调用方比如需要操作本地数据,就会先进行本地事务。有设置分布式事务,就会默认本地开启事务,进行本地一个或者多个业务操作,如果成功都全部提交,如果失败就全部回退。
步骤7、所述分布式应用运行时支持多种语言栈,所述应用服务选择多种语言栈其中一种或多种,所述事务管理器选择多种语言栈其中一种,通过分布式应用运行时实现不同事务管理器的语言栈兼容。若没有分布式应用运行时,应用服务与事务管理器是直接耦合在一起,应用服务与事务管理器必须采用相同的语言栈执行,应用服务的选择上受限制,而加入分布式应用运行时(嵌入事务配置操作组件)后,可将应用服务与事务管理器进行解耦,业务只在应用服务,没有入侵;由于分布式应用运行时可支持多种语言栈,应用服务的语言栈可以与事务管理器的语言栈不同,因此,应用服务不限制特定的语言栈。
所述事务管理器提供简单易用统一的接口,可以拆分具体业务接入分布式事务,可以支持多语言栈,采用子事务屏障技术,减少分布式事务的乱序问题,降低使用分布式事务的门槛。
如图3所示,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的一种基于分布式应用运行时的事务管理方法。
如图4所示,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的一种基于分布式应用运行时的事务管理方法。
另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的部分实施例,并非因此限制本发明的保护范围,凡是利用本发明说明书及附图内容所作的等效装置或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种基于分布式应用运行时的事务管理方法,其特征在于,应用于配置中心、事务管理器和多台服务器,包括如下步骤:
步骤1、在每台所述服务器上配置有分布式应用运行时和应用服务,将同一台服务器下的分布式应用运行时和应用服务进行连接;
步骤2、通过每两个所述分布式应用运行时之间进行连接,实现多台所述服务器的应用服务之间交互;
步骤3、在每个所述分布式应用运行时上嵌入自定义的事务配置操作组件;具体包括:
步骤31、自定义用于配置事务的事务配置操作组件,所述事务配置操作组件为分层架构,第一层为分布式进行时交互层,用于与应用服务进行交互以及对事务配置操作核心层进行控制;第二层为事务配置操作核心层,用于与事务管理器进行交互以及对分布式进行时交互层发送的命令进行操作;
步骤32、将自定义的事务配置操作组件嵌入到每个所述分布式应用运行时上;
步骤4、每个所述分布式应用运行时从配置中心获取分布式事务模式,并下发给对应的应用服务;具体包括:
步骤41、每个所述分布式应用运行时与配置中心进行连接;
步骤42、设置当前的分布式事务模式作为配置数据存储于配置中心中;
步骤43、每个所述分布式应用运行时从配置中心获取配置数据,并下发给对应的应用服务;
步骤44、所述分布式应用运行时实时监听配置中心的配置数据,判断配置数据是否发生变化,若是,进入步骤45,否则,进入步骤5;
步骤45、所述分布式应用运行时获取更新后的配置数据,将原来的分布式事务模式切换为新的分布式事务模式,并下发给对应的应用服务;
步骤46、所述应用服务进行热加载生效更新后的分布式事务模式;
步骤5、每个所述应用服务将分布式事务模式与对应的模式参数通过分布式应用运行时发送给事务配置操作组件,事务配置操作组件根据分布式事务模式和模式参数对事务管理器进行模式设置,通过事务管理器对不同服务器之间进行分布式事务管理;具体包括:
步骤51、每个所述应用服务将分布式事务模式和该模式下所对应的模式参数通过分布式应用运行时发送给事务配置操作组件的分布式进行时交互层,所述模式参数包括服务器的所有服务接口的正向处理信息或者是包括服务器的所有服务接口的正向处理信息和回退处理信息,所述模式参数是根据不同的分布式事务模式进行对应选择;
步骤52、所述分布式进行时交互层调用事务配置操作核心层来启动事务配置操作;
步骤53、不同服务器的事务配置操作核心层将自身获取到的分布式事务模式和对应的模式参数上传至事务管理器,对所述事务管理器进行分布式事务模式和不同服务器下模式参数设置;
步骤54、当发起业务服务调用的时候,根据业务服务类型选定需要调用的对应服务器的服务接口;若待调用的服务器具有n台,n为正整数;根据不同的业务服务类型对n台服务器进行调用顺序排列,所述事务管理器采用分布式事务模式按调用顺序先调用第1个服务器;
步骤55、所述事务管理器将当前服务器对应的服务接口的正向处理信息通过当前服务器的分布式应用运行时发送给对应的应用服务,该应用服务接收到该正向处理信息后,执行正向处理信息指定的服务操作,若服务操作成功,则应用服务将操作结果通过分布式应用运行时反馈给事务管理器,进入步骤56;若第m个应用服务的服务操作失败,1≤m≤n,m为正整数,则应用服务将操作结果通过分布式应用运行时反馈给事务管理器,进入步骤57;
步骤56、所述事务管理器收到操作结果后,继续调用下一个服务器,返回步骤55,直至n台服务器调用完毕;
步骤57、根据所述事务管理器上设置的分布式事务模式选择采用调用回退处理信息方式或者发送通知信息方式;若所述事务管理器采用的是调用回退处理信息方式,则事务管理器将第1台至第m-1台服务器对应的服务接口的回退处理信息通过对应服务器的分布式应用运行时发送给对应的应用服务,该应用服务接收到该回退处理信息后,执行回退处理信息指定的回退操作以取消服务;若所述事务管理器采用的是发送通知信息方式,则事务管理器通过第1台至第m-1台服务器的分布式应用运行时将通知信息发送给对应的应用服务,该应用服务接收到该通知信息后,执行通知信息指定的回退操作以取消服务操作;
步骤6、所述事务配置操作组件与本地数据库进行长连接;通过本地数据库进行本地服务器的本地事务处理;
步骤7、所述分布式应用运行时支持多种语言栈,所述应用服务选择多种语言栈其中一种或多种,所述事务管理器选择多种语言栈其中一种,通过分布式应用运行时实现不同事务管理器的语言栈兼容。
2.如权利要求1所述的基于分布式应用运行时的事务管理方法,其特征在于,所述步骤2具体包括:
步骤21、每两个所述分布式应用运行时之间通过http或rpc协议进行连接;
步骤22、某台服务器的应用服务将请求通过服务端口发送给自身的分布式应用运行时,通过自身的分布式应用运行时将请求转发给另一台服务器的分布式应用运行时上,再由该分布式应用运行时通过服务端口转发至对应的应用服务上,实现两台所述服务器的应用服务之间交互。
3.如权利要求1所述的基于分布式应用运行时的事务管理方法,其特征在于,所述分布式应用运行时与配置中心通过发布/订阅模式建立连接。
4.如权利要求1所述的基于分布式应用运行时的事务管理方法,其特征在于,所述事务管理器支持多种分布式事务模式,包括:XA模式、SAGA模式、TCC模式、二阶段消息模式和Workflow模式,所述配置中心根据业务特性设置其中一种分布式事务模式。
5.如权利要求1所述的基于分布式应用运行时的事务管理方法,其特征在于,所述步骤6具体包括:
步骤61、每台服务器上还配置有本地数据库,将每台服务器的事务配置操作组件与本地数据库进行长连接;
步骤62、每台服务器的应用服务在执行服务操作成功或者回退操作后,将服务数据下发给分布式应用运行时上,由事务配置操作组件从分布式应用运行时上获取服务数据并传送给本地数据库;
步骤63、所述本地数据库根据服务数据对本地库存进行实时更新。
6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述的一种基于分布式应用运行时的事务管理方法。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5任一项所述的一种基于分布式应用运行时的事务管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410351764.9A CN117950813B (zh) | 2024-03-26 | 2024-03-26 | 一种基于分布式应用运行时的事务管理方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410351764.9A CN117950813B (zh) | 2024-03-26 | 2024-03-26 | 一种基于分布式应用运行时的事务管理方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117950813A CN117950813A (zh) | 2024-04-30 |
CN117950813B true CN117950813B (zh) | 2024-05-31 |
Family
ID=90798451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410351764.9A Active CN117950813B (zh) | 2024-03-26 | 2024-03-26 | 一种基于分布式应用运行时的事务管理方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117950813B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN110784527A (zh) * | 2019-10-18 | 2020-02-11 | 三体云智能科技有限公司 | 一种信息管理系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040162741A1 (en) * | 2003-02-07 | 2004-08-19 | David Flaxer | Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference |
-
2024
- 2024-03-26 CN CN202410351764.9A patent/CN117950813B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262557A (zh) * | 2010-05-25 | 2011-11-30 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
CN110784527A (zh) * | 2019-10-18 | 2020-02-11 | 三体云智能科技有限公司 | 一种信息管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117950813A (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6785722B2 (en) | Apparatus, methods, and computer program products for transactional support of network management operations | |
CN111651244B (zh) | 分布式事务的处理系统 | |
US8200610B1 (en) | System and method for supporting the utilization of machine learning | |
US7441025B2 (en) | System and method for transaction processing with delegated commit feature | |
US20040158549A1 (en) | Method and apparatus for online transaction processing | |
EP1417563A1 (en) | System and method for transaction processing with transaction property feature | |
US9766927B1 (en) | Data flow management in processing workflows | |
JPH06332870A (ja) | オブジェクト指向コンピュータ環境における協調処理のためのオブジェクト・マネージャをリンクする方法及び装置 | |
US20100318394A1 (en) | Executing transactions as an atomic unit | |
JP2004512610A (ja) | ネットワーク化されたシステムの高アベイラビリティを維持する技法 | |
CN104077362A (zh) | 一种联机批量处理数据的系统和方法 | |
CN109840146A (zh) | 业务处理方法、装置、终端及存储介质 | |
CN110888718A (zh) | 分布式事务的实现方法及装置 | |
CN114253673A (zh) | 一种分布式系统的事务处理方法和事务处理装置 | |
US20110185360A1 (en) | Multiprocessing transaction recovery manager | |
CN109885382A (zh) | 跨系统分布式事务处理方法和分布式事务处理的系统 | |
CN115544044A (zh) | 一种数据一致性保持方法、装置、设备和存储介质 | |
JP2006133894A (ja) | アプリケーションフロー制御装置 | |
EP0834807A1 (en) | Method and apparatus for performing efficient corba transactions | |
CN114629904A (zh) | 一种分布式事件的处理方法、系统、设备及介质 | |
CN117950813B (zh) | 一种基于分布式应用运行时的事务管理方法、设备及介质 | |
CN101236510B (zh) | 一种ejb集群的失败恢复处理方法及系统 | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
CN112596871A (zh) | 业务处理方法和装置 | |
US20070089118A1 (en) | Method and device for controlling communications, and computer product |
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 |