CN109819023A - 分布式事务处理方法及相关产品 - Google Patents
分布式事务处理方法及相关产品 Download PDFInfo
- Publication number
- CN109819023A CN109819023A CN201910031513.1A CN201910031513A CN109819023A CN 109819023 A CN109819023 A CN 109819023A CN 201910031513 A CN201910031513 A CN 201910031513A CN 109819023 A CN109819023 A CN 109819023A
- Authority
- CN
- China
- Prior art keywords
- service
- coordinator
- message
- request
- execution
- 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
Landscapes
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种分布式事务处理方法及相关产品,应用于分布式服务处理***的第一服务,分布式服务处理***包括运行于多个设备上的多个服务,多个服务包括注册中心服务、第一服务、第二服务和第三服务,方法包括:第一服务接收来自注册中心服务发送的事务分支分配消息,响应事务分配消息,向注册中心发送确定开启处理第一事务分支的响应消息;接收来自注册中心服务的协调器服务选举消息,向协调器服务发送第一事务分支的处理信息;接收来自协调器服务的执行消息,执行第一事务分支的执行操作。本申请实施例提供了分布式***事务处理方法,有利于提高分布式事务处理的高效性和便捷性。
Description
技术领域
本申请涉及电子设备技术领域,具体涉及一种分布式事务处理方法及相关产品。
背景技术
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式***的不同节点之上。更简单的说,就是一项分布式事务由多个不同的业务操作组成,这些业务操作分布在不同的服务器上,且属于不同的应用。在大规模分布式事务处理环境下,一项事务往往会跨越多个数据库,如何保证这多个数据库之间的数据一致性,需要行之有效的策略。
在分布式服务化的开发架构模式中,一次业务请求往往需要多个服务协作完成,而过程中的每一个服务都可能对数据做持久化的操作。如果某一个服务操作因为某种原因失败,则该操作之前的服务的操作需要进行回滚。针对分布式事务的问题目前有比较多的解决方案,但都会存在配置复杂,使用成本高,同时处理过程中网络请求需求量较大,交互效率低等共性问题。
发明内容
本申请实施例提供了一种分布式事务处理方法及相关产品,以期提高分布式事务处理的高效性和便捷性。
第一方面,本申请实施例提供一种分布式事务处理方法,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务,所述方法包括:
接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;
接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;
根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;
接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;
根据所述执行消息,执行所述第一事务分支的执行操作。
第二方面,本申请实施例提供一种分布式事务处理装置,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务;所述分布式事务处理装置包括处理单元和通信单元,其中,
所述处理单元,用于接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;以及用于接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;以及用于根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;以及用于接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;以及用于根据所述执行消息,执行所述第一事务分支的执行操作。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面任一方法中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第二方面任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第二方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;根据所述执行消息,执行所述第一事务分支的执行操作。通过上述方法,本申请实施例提供了一种无代码侵入且满足高并发场景的分布式***事物一致性解决方案,通过接收来自所述注册中心服务发送的事务分支分配消息,引入获取注解信息,可以简化配置,降低框架的使用成本和学习成本,让开发人员更专注于业务,同时也可以让框架和业务解耦,提高并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供了一种分布式服务处理***的***架构示意图;
图2是本申请实施例提供的一种分布式事务处理方法的流程示意图;
图3是本申请实施例提供的另一种分布式事务处理方法的流程示意图;
图4是本申请实施例提供的另一种分布式事务处理方法的流程示意图;
图5是本申请实施例提供的一种电子设备的结构示意图;
图6是本申请实施例提供的一种分布式事务处理装置的功能单元组成框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS),终端设备(terminaldevice)等等。
下面对本申请实施例进行详细介绍。
请参阅图1,图1是本申请实施例提供了一种分布式服务处理***100的***架构示意图,该分布式服务处理***100包括服务端110和多个客户端120,所述多个客户端120中包括使用不同类型开发语言的客户端,每个客户端120运行有目标应用程序,其中,所述服务端110可以采用微服务架构设计,具体包括注册中心服务111、第一服务112、第二服务113和第三服务114,所述每个客户端与所述注册中心服务111通信连接。基于以上设计,注册中心服务111的配置管理中提供以下功能:分配事务分支、选举协调器服务等。
该微服务架构使用分布式服务处理***设计模式,每个子服务都是一个单独的应用,降低耦合性,使分布式服务处理***更可扩展、提高稳定性。其次,使用服务注册与反馈的机制,实现各个服务之间的通信。注册中心服务111与分布式服务处理***的其他子服务建立通信,通过注解驱动分配事务分支,提供注解方式用于轻松实现分配过程。第三服务114即是分布式服务处理***的子服务提供者,也被设置为微服务的协调器服务,二者处于同一个进程中,可以简化操作难。
具体实现中,所述服务端110可以采用独立服务器集中部署注册中心服务111、第一服务112、第二服务113和第三服务114,也可以采用分布式设计机制,通过分布式***分别在不同设备上部署注册中心服务111、第一服务112、第二服务113和第三服务114,具体可以根据业务需求进行灵活设置,不做唯一限定。所述客户端120可以采用手机等终端设备进行部署,具体根据业务需求进行灵活设置。
请参阅图2,图2是本申请实施例提供了一种分布式事务处理方法的流程示意图,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务;所述方法包括:
S201,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心发送确定开启处理所述第一事务分支的响应消息;
其中,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述处理请求,以及根据所述注解信息,加载并解析所述注解信息得到解析后的注解信息;以及根据解析后的所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;
其中,所述注解信息包括以所述多个事务分支中的至少一个事务分支为查询标识,查询预设的映射关系而得到,所述映射关系包括所述至少一个事务分支和所述注解信息之间的对应关系;
S202,所述第一服务接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果;
其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:进行协调器服务选举;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;
其中,所述协调器服务包括但不限于第三服务;
S203,所述第一服务根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;
S204,所述第一服务接收来自所述协调器服务的执行消息;
其中,所述执行消息包括执行提交操作消息或执行回滚操作消息;
S205,所述第一服务根据所述执行消息,执行所述第一事务分支的执行操作。
可以看出,本申请实施例中,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;根据所述执行消息,执行所述第一事务分支的执行操作。通过上述方法,本申请实施例提供了一种无代码侵入且满足高并发场景的分布式***事物一致性解决方案,通过接收来自所述注册中心服务发送的事务分支分配消息,引入获取注解信息,可以简化配置,降低框架的使用成本和学习成本,让开发人员更专注于业务,同时也可以让框架和业务解耦,提高并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
在一个可能的示例中,所述接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,包括:第一服务在检测到所述处理请求时,根据所述注解信息,向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口的请求;所述第一服务接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;以及接受来自所述第二服务的第二请求,确定所述第二请求结果;以及接收来自所述第三服务的第三请求,确定所述第三请求结果;以及根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第三服务成功获取主节点,确定所述第三服务为协调器服务;其中,所述第二请求用于指示所述第二服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口,所述第三请求用于指示所述第三服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口;所述第一服务根据所述协调器服务选举消息,获取所述第三服务为协调器服务。
其中,所述协调器服务选举消息将被所述注册中心服务发送给所述第一服务、所述第二服务和所诉第三服务。
其中,所述协调器服务选举消息包括根据所述解析后的注解信息,将所述处理请求中的第二事务分支分配给所述第二服务;以及根据所述解析后的注解信息,将所述处理请求中的第三事务分支分配给所述第三服务;以及根据对应关系生成所述事务分支分配消息,所述对应关系包括所述第一事务分支与所述第一服务的对应关系、所述二事务分支与所述第二服务的对应关系、所述三事务分支与所述第三服务的对应关系;其中,所述分布式事务包括多个事务分支,所述多个事务分支包括所述第一事务分支、所述第二事务分支和所述第三事务分支。
可见,本示例中,第一服务接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,将所述多个服务中的一个服务选举为协调器服务,节约了成本,基于注解信息选举协调器服务,简化配置,满足高并发、高性能、高可用的三高场景。
在一个可能的示例中,所述根据所述协调器服务选举消息,获取所述第三服务为协调器服务后,方法还包括:第一服务在检测到协调器服务发生服务宕机时,重新接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;接受来自所述第二服务的第二请求,确定所述第二请求结果;接收来自所述第三服务的第三请求,确定所述第三请求结果;根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第二服务成功获取主节点,确定所述第二服务为协调器服务;所述第一服务根据所述协调器服务重新选举消息,获取所述第二服务为第二协调器服务。
其中,所述根据所述协调器服务重新选举消息包括重复所述协调器服务选举过程。
其中,所述主节点在同一时间内有且仅有一个,所述多个服务在同一时间内仅有一个服务能够成功获取所述主节点。
可见,本示例中,所述主节点在并发创建时能保证只有一个会成功,当协调器上服务宕机,所有存活的服务会检测到该事件并重新完成协调器选举,用于保证所有服务中永远存在一个存活的协调器在运行,有利于确保分布式事务处理正常有序的进行。
在一个可能的示例中,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,包括:第一服务创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;所述第一服务根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;所述第一服务若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册成功,则向所述第三服务发送调用请求,所述调用请求用于指示所述第三服务执行以下操作:创建第三事务身份标识号,获取第三注册信息,确定第三注册结果。
其中,所述第三服务包括所述协调器服务。
具体实现中,在支付场景中,第一服务创建余额变动事务身份标识号,向协调器服务发送余额变动的注册信息,协调器服务确定余额变动注册信息成功,第一服务接收来自协调器服务的余额变动注册信息成功消息,向第二服务发送调用请求,第二服务创建积分变动事务身份标识号,向协调器服务发送积分变动的注册信息,协调器服务确定积分变动注册信息成功,第二服务接收来自协调器服务的积分变动注册信息成功消息,向第三服务发送调用请求,第三服务创建交易款项事务身份标识号,确定交易款项注册信息结果。
可见,本示例中,第一服务据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,所述协调器服务接收来自第一服务、第二服务和第三服务的注册信息,确定注册信息结果,有利于处理分布式事务的完整性和准确性,满足在高并发场景中解决分布式事务的一致性要求。
在一个可能的示例中,所述根据接收来自所述协调器服务的执行消息,包括:第一服务接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,当所述协调器服务确定所述第三注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作和所述第二服务执行所述第二事务分支的回滚操作。
其中,所述执行消息包括执行回滚操作消息,和/或,执行提交操作消息。
具体实现中,在支付场景中,第一服务为余额变动服务,第二服务为积分变动服务,第三服务为交易款项服务,协调器服务确定余额变动注册信息成功,确定积分变动注册信息成功,确定交易款项注册信息失败,则此时执行消息为第一服务执行回滚操作和第二服务执行回滚操作。
可见,本示例中,根据所述第一注册结果、所述第二注册结果和所述第三注册结果,所述协调器服务确定注册结果,从而确定执行回滚操作,所述第一服务接收来自所述协调器服务的执行消息,有利于满足分布式事务的并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
在一个可能的示例中,所述根据接收来自所述协调器服务的执行消息,包括:第一事务接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,接收来自所述协调器服务的执行消息;以及当确定所述第三注册结果为成功时,所述第一服务执行所述第一事务分支的提交操作,所述第二服务执行所述第二事务分支的提交操作和所述第三服务执行所述第三事务分支的提交操作。
其中,所述执行消息包括执行回滚操作消息,和/或,执行提交操作消息。
具体实现中,在支付场景中,第一服务为余额变动服务,第二服务为积分变动服务,第三服务为交易款项服务,协调器服务确定余额变动注册信息成功,确定积分变动注册信息成功,确定交易款项注册信息成功,则此时执行消息为第一服务执行提交操作、第二服务执行提交操作和第三服务执行提交操作。
可见,本示例中,根据所述第一注册结果、所述第二注册结果和所述第三注册结果,所述协调器服务确定执行提交操作,所述第一服务接收来自所述协调器服务的执行消息,有利于满足分布式事务的并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
在一个可能的示例中,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,包括:第一服务创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;所述第一服务根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;所述第一服务若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册失败,则停止调用。
其中,所述停止调用包括所述第一服务停止调用所述第二服务,所述第三服务暂停服务。
具体实现中,在支付场景中,第一服务创建余额变动事务身份标识号,向协调器服务发送余额变动的注册信息,协调器服务确定余额变动注册信息成功,第一服务接收来自协调器服务的余额变动注册信息成功消息,向第二服务发送调用请求,第二服务创建积分变动事务身份标识号,向协调器服务发送积分变动的注册信息,协调器服务确定积分变动注册信息成功,第二服务接收来自协调器服务的积分变动注册信息失败消息,停止调用。
可见,本示例中,第一服务据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,所述协调器服务接收来自第一服务和第二服务的注册信息,确定注册信息结果,当第二服务的注册信息为失败时,停止调用,避免多余的资源浪费,有利于提高处理分布式事务的便捷性性和高效性,满足在高并发场景中解决分布式事务的一致性要求。
在一个可能的示例中,所述接收来自所述协调器服务的执行消息,包括:第一服务接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果和所述第二注册结果,确定向所述第一服务和所述第二服务发送的执行消息;以及当所述协调器服务确定所述第二注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作。
具体实现中,在支付场景中,第一服务为余额变动服务,第二服务为积分变动服务,第三服务为交易款项服务,协调器服务确定余额变动注册信息成功,确定积分变动注册信息失败,则此时执行消息为第一服务执行回滚操作。
可见,本示例中,根据所述第一注册结果和所述第二注册结果,所述协调器服务确定注册结果,从而确定执行回滚操作,所述第一服务接收来自所述协调器服务的执行消息,有利于满足分布式事务的并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
与上述图2所示的实施例一致的,请参阅图3,图3是本申请实施例提供的一种分布式事务处理方法的流程示意图,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务;如图所示,本分布式事务处理方法包括:
S301,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心发送确定开启处理所述第一事务分支的响应消息;
S302,所述第一服务在检测到所述处理请求时,根据所述注解信息,向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口的请求;
S303,所述第一服务接收来自所述注册中心的协调器服务选举消息;
S304,所述第一服务根据所述协调器服务选举消息,获取所述第三服务为协调器服务;
S305,所述第一服务根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;
S306,所述第一服务接收来自所述协调器服务的执行消息;
S307,所述第一服务根据所述执行消息,执行所述第一事务分支的执行操作。
可以看出,本申请实施例中,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;根据所述执行消息,执行所述第一事务分支的执行操作。通过上述方法,本申请实施例提供了一种无代码侵入且满足高并发场景的分布式***事物一致性解决方案,通过接收来自所述注册中心服务发送的事务分支分配消息,引入获取注解信息,可以简化配置,降低框架的使用成本和学习成本,让开发人员更专注于业务,同时也可以让框架和业务解耦,提高并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
与上述图2所示的实施例一致的,请参阅图4,图4是本申请实施例提供的一种分布式事务处理方法的流程示意图,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务,;如图所示,本分布式事务处理方法包括:
S401,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心发送确定开启处理所述第一事务分支的响应消息;
S402,所述第一服务接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果;
S403,所述第一服务创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;
S404,所述第一服务根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;
S405,所述第一服务若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求;
S406,所述第一服务接受来自所述协调器服务的执行消息;
S407,所述第一服务根据所述执行消息,执行所述第一事务分支的执行操作。
可以看出,本申请实施例中,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;根据所述执行消息,执行所述第一事务分支的执行操作。通过上述方法,本申请实施例提供了一种无代码侵入且满足高并发场景的分布式***事物一致性解决方案,通过接收来自所述注册中心服务发送的事务分支分配消息,引入获取注解信息,可以简化配置,降低框架的使用成本和学习成本,让开发人员更专注于业务,同时也可以让框架和业务解耦,提高并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
此外,根据所述第一注册结果、所述第二注册结果和所述第三注册结果,所述协调器服务确定执行提交操作,所述第一服务接收来自所述协调器服务的执行消息,有利于满足分布式事务的并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
与上述图2、图3、图4所示的实施例一致的,请参阅图5,图5是本申请实施例提供的一种电子设备500的结构示意图,如图所示,所述电子设备500包括应用处理器510、存储器520、通信接口530以及一个或多个程序521,其中,所述一个或多个程序521被存储在上述存储器520中,并且被配置由上述应用处理器510执行,所述一个或多个程序521包括用于执行以下步骤的指令;
接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;
接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;
根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;
接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;
根据所述执行消息,执行所述第一事务分支的执行操作。
可以看出,本申请实施例中,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;根据所述执行消息,执行所述第一事务分支的执行操作。通过上述方法,本申请实施例提供了一种无代码侵入且满足高并发场景的分布式***事物一致性解决方案,通过接收来自所述注册中心服务发送的事务分支分配消息,引入获取注解信息,可以简化配置,降低框架的使用成本和学习成本,让开发人员更专注于业务,同时也可以让框架和业务解耦,提高并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
在一个可能的示例中,所述接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,所述程序中的指令具体用于执行以下操作:在检测到所述处理请求时,根据所述注解信息,向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口的请求;接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;以及接受来自所述第二服务的第二请求,确定所述第二请求结果;以及接收来自所述第三服务的第三请求,确定所述第三请求结果;以及根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第三服务成功获取主节点,确定所述第三服务为协调器服务;其中,所述第二请求用于指示所述第二服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口,所述第三请求用于指示所述第三服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口;根据所述协调器服务选举消息,获取所述第三服务为协调器服务。
在一个可能的示例中,所述根据所述协调器服务选举消息,获取所述第三服务为协调器服务后,方法还所述程序中的指令具体用于执行以下操作:在检测到协调器服务发生服务宕机时,重新接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;接受来自所述第二服务的第二请求,确定所述第二请求结果;接收来自所述第三服务的第三请求,确定所述第三请求结果;根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第二服务成功获取主节点,确定所述第二服务为协调器服务;根据所述协调器服务重新选举消息,获取所述第二服务为第二协调器服务。
在一个可能的示例中,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,所述程序中的指令具体用于执行以下操作:创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册成功,则向所述第三服务发送调用请求,所述调用请求用于指示所述第三服务执行以下操作:创建第三事务身份标识号,获取第三注册信息,确定第三注册结果。
在一个可能的示例中,所述根据接收来自所述协调器服务的执行消息,所述程序中的指令具体用于执行以下操作:接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,当所述协调器服务确定所述第三注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作和所述第二服务执行所述第二事务分支的回滚操作。
在一个可能的示例中,所述根据接收来自所述协调器服务的执行消息,所述程序中的指令具体用于执行以下操作:接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,当确定所述第三注册结果为成功时,所述第一服务执行所述第一事务分支的提交操作,所述第二服务执行所述第二事务分支的提交操作和所述第三服务执行所述第三事务分支的提交操作。
在一个可能的示例中,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,所述程序中的指令具体用于执行以下操作:创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册失败,则停止调用。
在一个可能的示例中,所述接收来自所述协调器服务的执行消息,所述程序中的指令具体用于执行以下操作:接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果和所述第二注册结果,确定向所述第一服务和所述第二服务发送的执行消息;以及当所述协调器服务确定所述第二注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图6是本申请实施例中所涉及的分布式事务处理装置600的功能单元组成框图。该分布式事务处理装置600应用于分布式服务处理***的第一服务,包括处理单元601和通信单元602,其中,
所述处理单元601,用于接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;以及用于接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;以及用于根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;以及用于接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;以及用于根据所述执行消息,执行所述第一事务分支的执行操作。
可以看出,本申请实施例中,第一服务接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;根据所述执行消息,执行所述第一事务分支的执行操作。通过上述方法,本申请实施例提供了一种无代码侵入且满足高并发场景的分布式***事物一致性解决方案,通过接收来自所述注册中心服务发送的事务分支分配消息,引入获取注解信息,可以简化配置,降低框架的使用成本和学习成本,让开发人员更专注于业务,同时也可以让框架和业务解耦,提高并发能力,降低***的开销,有利于提高分布式事务处理的高效性和便捷性。
在一个可能的示例中,所述接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,所述处理单元601具体用于:在检测到所述处理请求时,根据所述注解信息,向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口的请求;接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;以及接受来自所述第二服务的第二请求,确定所述第二请求结果;以及接收来自所述第三服务的第三请求,确定所述第三请求结果;以及根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第三服务成功获取主节点,确定所述第三服务为协调器服务;其中,所述第二请求用于指示所述第二服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口,所述第三请求用于指示所述第三服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口;根据所述协调器服务选举消息,获取所述第三服务为协调器服务。
在一个可能的示例中,所述根据所述协调器服务选举消息,获取所述第三服务为协调器服务后,方法还所述处理单元601具体用于:在检测到协调器服务发生服务宕机时,重新接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;接受来自所述第二服务的第二请求,确定所述第二请求结果;接收来自所述第三服务的第三请求,确定所述第三请求结果;根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第二服务成功获取主节点,确定所述第二服务为协调器服务;根据所述协调器服务重新选举消息,获取所述第二服务为第二协调器服务。
在一个可能的示例中,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,所述处理单元601具体用于:创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册成功,则向所述第三服务发送调用请求,所述调用请求用于指示所述第三服务执行以下操作:创建第三事务身份标识号,获取第三注册信息,确定第三注册结果。
在一个可能的示例中,所述根据接收来自所述协调器服务的执行消息,所述处理单元601具体用于:接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,当所述协调器服务确定所述第三注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作和所述第二服务执行所述第二事务分支的回滚操作。
在一个可能的示例中,所述根据接收来自所述协调器服务的执行消息,所述处理单元601具体用于:接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,当确定所述第三注册结果为成功时,所述第一服务执行所述第一事务分支的提交操作,所述第二服务执行所述第二事务分支的提交操作和所述第三服务执行所述第三事务分支的提交操作。
在一个可能的示例中,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,所述处理单元601具体用于:创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册失败,则停止调用。
在一个可能的示例中,所述接收来自所述协调器服务的执行消息,所述处理单元601具体用于:接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果和所述第二注册结果,确定向所述第一服务和所述第二服务发送的执行消息;以及当所述协调器服务确定所述第二注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (11)
1.一种分布式事务处理方法,其特征在于,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务,所述方法包括:
接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;
接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;
根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;
接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;
根据所述执行消息,执行所述第一事务分支的执行操作。
2.根据权利要求1所述的方法,其特征在于,所述接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,包括:
在检测到所述处理请求时,根据所述注解信息,向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口的请求;
接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;以及接受来自所述第二服务的第二请求,确定所述第二请求结果;以及接收来自所述第三服务的第三请求,确定所述第三请求结果;以及根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第三服务成功获取主节点,确定所述第三服务为协调器服务;其中,所述第二请求用于指示所述第二服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口,所述第三请求用于指示所述第三服务向所述注册中心发送创建主节点并写入自身互联网协议地址和配置端口;
根据所述协调器服务选举消息,获取所述第三服务为协调器服务。
3.根据权利要求2所述的方法,其特征在于,所述根据所述协调器服务选举消息,获取所述第三服务为协调器服务后,方法还包括:
在检测到协调器服务发生服务宕机时,重新接收来自所述注册中心的协调器服务选举消息,所述协调器服务选举消息是所述注册中心执行以下操作而生成的:接收来自所述第一服务的请求,确定第一请求结果;接受来自所述第二服务的第二请求,确定所述第二请求结果;接收来自所述第三服务的第三请求,确定所述第三请求结果;根据所述第一请求结果、第二请求结果和第三请求结果,确定有且仅有所述第二服务成功获取主节点,确定所述第二服务为协调器服务;
根据所述协调器服务重新选举消息,获取所述第二服务为第二协调器服务。
4.根据权利要求1所述的方法,其特征在于,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,包括:
创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;
根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;
若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册成功,则向所述第三服务发送调用请求,所述调用请求用于指示所述第三服务执行以下操作:创建第三事务身份标识号,获取第三注册信息,确定第三注册结果。
5.根据权利要求4所述的方法,其特征在于,所述根据接收来自所述协调器服务的执行消息,包括:
接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,接收来自所述协调器服务的执行消息;以及当所述协调器服务确定所述第三注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作和所述第二服务执行所述第二事务分支的回滚操作。
6.根据权利要求4所述的方法,其特征在于,所述根据接收来自所述协调器服务的执行消息,包括:
接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果、所述第二注册结果和所述第三注册结果,接收来自所述协调器服务的执行消息;以及当确定所述第三注册结果为成功时,所述第一服务执行所述第一事务分支的提交操作,所述第二服务执行所述第二事务分支的提交操作和所述第三服务执行所述第三事务分支的提交操作。
7.根据权利要求1所述的方法,其特征在于,所述根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息,包括:
创建第一事务身份标识号,并向所述协调器服务发送第一注册信息;
根据所述第一注册信息,所述第一服务接收到来自所述协调器服务的第一注册结果;
若接收到所述第一注册结果为注册成功,则向所述第二服务发送调用请求,所述调用请求用于指示所述第二服务执行以下操作:创建第二事务身份标识号,并向所述协调器服务发送第二注册信息,获取第二注册结果,若获取到所述第二注册结果为注册失败,则停止调用。
8.根据权利要求7所述的方法,其特征在于,所述接收来自所述协调器服务的执行消息,包括:
接受来自所述协调器服务的执行消息,所述执行消息是所述协调器服务通过执行以下操作而生成的:根据所述第一注册结果和所述第二注册结果,确定向所述第一服务和所述第二服务发送的执行消息;以及当所述协调器服务确定所述第二注册结果为失败时,所述第一服务执行所述第一事务分支的回滚操作。
9.一种分布式事务处理装置,其特征在于,应用于分布式服务处理***的第一服务,所述分布式服务处理***包括运行于多个设备上的多个服务,所述多个服务包括注册中心服务、所述第一服务、第二服务和第三服务;所述分布式事务处理装置包括处理单元和通信单元,其中,
所述处理单元,用于接收来自所述注册中心服务发送的事务分支分配消息,响应所述事务分配消息,向所述注册中心服务发送确定开启处理第一事务分支的响应消息,所述事务分支分配消息由所述注册中心服务执行以下操作而得到:所述注册中心服务接收来自用户的处理请求,获取注解信息;以及根据所述注解信息,将所述处理请求中的第一事务分支分配给所述第一服务;以及用于接收来自所述注册中心服务的协调器服务选举消息,获取所述协调器服务的选举结果,其中,所述协调器服务选举消息是所述注册中心服务执行以下操作而生成的:接收所述响应消息,开始选举协调器服务;以及确定所述第三服务为所述协调器服务;以及根据确定的所述协调器服务生成所述协调器服务选举消息;以及用于根据所述选举结果,向所述协调器服务发送所述第一事务分支的处理信息;以及用于接收来自所述协调器服务的执行消息,其中,所述执行消息是所述协调器服务执行以下操作而得到:根据所述处理信息,确定处理结果,生成执行消息;以及用于根据所述执行消息,执行所述第一事务分支的执行操作。
10.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-8任一项所述的方法中的步骤的指令。
11.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-8任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646840X | 2018-12-29 | ||
CN201811646840 | 2018-12-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109819023A true CN109819023A (zh) | 2019-05-28 |
CN109819023B CN109819023B (zh) | 2021-09-14 |
Family
ID=66603428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910031513.1A Active CN109819023B (zh) | 2018-12-29 | 2019-01-14 | 分布式事务处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109819023B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143040A (zh) * | 2019-12-30 | 2020-05-12 | 北京三快在线科技有限公司 | 事务处理方法、装置、***及存储介质 |
CN112100188A (zh) * | 2020-09-01 | 2020-12-18 | 上海交通大学 | 基于机器学习的并发控制方法及*** |
CN112799799A (zh) * | 2020-12-29 | 2021-05-14 | 杭州涂鸦信息技术有限公司 | 数据消费方法及装置 |
CN113301091A (zh) * | 2020-07-31 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 用于分布式***的消息处理方法、装置、电子设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6873987B1 (en) * | 2000-05-31 | 2005-03-29 | International Business Machines Corporation | Method, system and program products for recovering from failures within a shared nothing distributed computing environment |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN108845866A (zh) * | 2018-06-28 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 处理分布式事务的方法和装置 |
CN108958894A (zh) * | 2018-06-14 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法、***、事务管理器及终端设备 |
CN109002462A (zh) * | 2018-06-04 | 2018-12-14 | 北京明朝万达科技股份有限公司 | 一种实现分布式事物的方法及*** |
-
2019
- 2019-01-14 CN CN201910031513.1A patent/CN109819023B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6873987B1 (en) * | 2000-05-31 | 2005-03-29 | International Business Machines Corporation | Method, system and program products for recovering from failures within a shared nothing distributed computing environment |
CN106325978A (zh) * | 2015-06-19 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 分布式事务的处理方法及装置 |
CN109002462A (zh) * | 2018-06-04 | 2018-12-14 | 北京明朝万达科技股份有限公司 | 一种实现分布式事物的方法及*** |
CN108958894A (zh) * | 2018-06-14 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法、***、事务管理器及终端设备 |
CN108845866A (zh) * | 2018-06-28 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 处理分布式事务的方法和装置 |
Non-Patent Citations (1)
Title |
---|
何一昕: ""SOA环境下分布式事务处理的研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143040A (zh) * | 2019-12-30 | 2020-05-12 | 北京三快在线科技有限公司 | 事务处理方法、装置、***及存储介质 |
CN113301091A (zh) * | 2020-07-31 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 用于分布式***的消息处理方法、装置、电子设备及介质 |
CN113301091B (zh) * | 2020-07-31 | 2022-10-28 | 阿里巴巴集团控股有限公司 | 用于分布式***的消息处理方法、装置、电子设备及介质 |
CN112100188A (zh) * | 2020-09-01 | 2020-12-18 | 上海交通大学 | 基于机器学习的并发控制方法及*** |
CN112100188B (zh) * | 2020-09-01 | 2024-05-28 | 上海交通大学 | 基于机器学习的并发控制方法及*** |
CN112799799A (zh) * | 2020-12-29 | 2021-05-14 | 杭州涂鸦信息技术有限公司 | 数据消费方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109819023B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109819023A (zh) | 分布式事务处理方法及相关产品 | |
CN108510389B (zh) | 基于区块链的智能合约调用方法、设备及可读存储介质 | |
CN111245916B (zh) | 基于微服务网关的服务调用方法、服务编排方法及装置 | |
CN110392052A (zh) | 一种区块链智能合约处理***及方法 | |
CN106031116B (zh) | 一种ns与vnf的关联方法、装置及*** | |
CN110166409A (zh) | 设备接入方法、相关平台及计算机存储介质 | |
CN105634778B (zh) | 实现vnf实例化的方法、***及nfvo和vnfm | |
CN108965457A (zh) | 一种分布式集群***的消息传递方法、装置、设备及介质 | |
CN109391502A (zh) | 一种信息配置方法和管理单元 | |
CN110110006A (zh) | 数据管理方法及相关产品 | |
CN107920138A (zh) | 一种用户统一标识生成方法、装置及*** | |
CN106612196B (zh) | 获取资源的方法及装置 | |
CN101179622A (zh) | 通讯***中一种多命令的处理设备及其处理方法 | |
CN103780686A (zh) | 一种云组织内自定义申请审批流程的方法及*** | |
CN110502319A (zh) | 分布式事务的处理方法、装置、电子设备及存储介质 | |
CN109634735A (zh) | 一种调度Pod的方法及装置 | |
CN109684048A (zh) | 事务提交***中处理事务的方法及装置 | |
CN109324913B (zh) | 一种针对多OpenStack云平台的管理方法和装置 | |
CN103326935B (zh) | 一种基于微博平台的智能轮候的方法及*** | |
CN109213567A (zh) | 一种管理vnf实例化的方法和设备 | |
CN109491767A (zh) | 分布式事务的处理方法和分布式*** | |
CN108447549A (zh) | 一种协作阅览影像的方法及装置 | |
CN107249192A (zh) | 一种共享网络切片的状态监控方法及装置 | |
WO2023016460A1 (zh) | 计算任务的策略确定或资源分配方法、装置、网元及介质 | |
CN109801153A (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 |