CN108415758B - 分布式事务协调方法及装置 - Google Patents

分布式事务协调方法及装置 Download PDF

Info

Publication number
CN108415758B
CN108415758B CN201810259145.1A CN201810259145A CN108415758B CN 108415758 B CN108415758 B CN 108415758B CN 201810259145 A CN201810259145 A CN 201810259145A CN 108415758 B CN108415758 B CN 108415758B
Authority
CN
China
Prior art keywords
transaction
message
coordination
result
sending
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.)
Expired - Fee Related
Application number
CN201810259145.1A
Other languages
English (en)
Other versions
CN108415758A (zh
Inventor
黄兴
殷林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Rongyimai Information Technology Co ltd
Original Assignee
Shenzhen Rongyimai Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Rongyimai Information Technology Co ltd filed Critical Shenzhen Rongyimai Information Technology Co ltd
Priority to CN201810259145.1A priority Critical patent/CN108415758B/zh
Publication of CN108415758A publication Critical patent/CN108415758A/zh
Application granted granted Critical
Publication of CN108415758B publication Critical patent/CN108415758B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明适用于分布式技术领域,提供了一种分布式事务协调方法及装置,所述方法通过接收第一微服务发送的注册第一事务请求,根据注册第一事务请求注册第一事务,并返回注册第一事务响应,接收第二微服务发送的协调消息,协调消息为确认消息或回滚消息,第二微服务调用所述第一微服务,发送协调消息至第一微服务,解决了现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题,实现了事务灵活的升级和扩展,缩短了中间过程,降低了时间复杂度。

Description

分布式事务协调方法及装置
技术领域
本发明属于分布式技术领域,尤其涉及一种分布式事务协调方法及装置。
背景技术
随着微服务的发展,服务之间的拆分越来越细,不同的微服务经常使用不同的数据库,使得数据访问变得复杂化,传统的分布式事务由于强耦合及不易扩展的缺陷,导致无法满足多个微服务之间保证一致性的要求。
现有技术中为保证多个微服务之间一致性,所采用的方法主要有两种:TCC(Try尝试、Confirm确认、Cancel取消)模型和消息队列事务。上述两种方法均需要针对特定的事务编写回滚代码,存在通用性差的缺陷,或者需要人工干预进行手动回滚,操作复杂。并且采用消息队列事务存在灵活性差,不易进行升级和扩展,同时中间过程冗长,时间复杂度较高。
发明内容
有鉴于此,本发明实施例提供了一种分布式事务协调方法及装置,以解决现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题。
本发明实施例的第一方面提供了一种分布式事务协调方法,包括:
接收第一微服务发送的注册第一事务请求,根据所述注册第一事务请求注册第一事务,并返回注册第一事务响应;
接收第二微服务发送的协调消息,所述协调消息为确认消息或回滚消息,所述第二微服务调用所述第一微服务;
发送所述协调消息至所述第一微服务。
在一种可能的实现方式中,所述发送所述协调消息至所述第一微服务,具体包括:
当所述协调消息为所述确认消息时,发送所述确认消息至所述第一微服务,以使所述第一微服务协调第一事务提交;
当所述协调消息为所述回滚消息时,发送所述回滚消息至所述第一微服务,以使所述第一微服务协调第一事务回滚。
本发明实施例的第二方面提供了一种分布式事务协调方法,包括:
发送注册第一事务请求至事务协调器,并接收所述事务协调器发送的注册第一事务响应;
接收所述事务协调器发送的协调消息,所述协调消息为确认消息或回滚消息;
根据所述协调消息协调处理所述第一事务。
在一种可能的实现方式中,所述发送注册第一事务请求至事务协调器之前,还包括:
接收第二微服务发送的调用第一事务请求,创建第一事务连接;
发送执行第一事务消息至第一数据库,并接收所述第一数据库返回的执行所述第一事务的执行结果。
在一种可能的实现方式中,所述接收所述事务协调器发送的注册第一事务响应之后,还包括:
根据所述注册第一事务响应,发送调用第一事务响应至所述第二微服务。
在一种可能的实现方式中,所述根据所述协调消息协调处理所述第一事务,具体包括:
当所述协调消息为所述确认消息时,发送提交第一事务请求至所述第一数据库,以使所述第一数据库保存所述执行结果,并接收所述第一数据库返回的提交结果;
当所述协调消息为所述回滚消息时,发送回滚第一事务请求至所述第一数据库,以使所述第一数据库删除所述执行结果,并接收所述第一数据库返回的回滚结果。
本发明实施例的第三方面提供了一种分布式事务协调方法,包括:
发送调用第一事务请求至第一微服务,接收所述第一微服务返回的调用第一事务响应,所述调用第一事务响应携带调用结果;
发送提交第二事务请求至第二数据库,接收所述第二数据库发送的提交结果;
根据所述调用结果和所述提交结果,确定协调消息,所述协调消息为确认消息或回滚消息,若所述调用结果和所述提交结果一致,确定所述协调消息为确认消息,否则,确定所述协调消息为回滚消息;
发送所述协调消息至事务协调器。
本发明实施例的第四方面提供了一种分布式事务协调装置,包括:
接收模块,用于接收第一微服务发送的注册第一事务请求;
注册模块,用于根据注册第一事务请求注册第一事务;
发送模块,用于发送注册第一事务响应至所述第一微服务;
所述接收模块,还用于接收第二微服务发送的协调消息,所述协调消息为确认消息或回滚消息,所述第二微服务调用所述第一微服务;
所述发送模块,还用于发送所述协调消息至所述第一微服务。
本发明实施例的第五方面提供了一种分布式事务协调装置,包括:
发送模块,用于发送注册第一事务请求至事务协调器;
接收模块,用于接收所述事务协调器发送的注册第一事务响应;
所述接收模块,还用于接收所述事务协调器发送的协调消息,所述协调消息为确认消息或回滚消息;
协调处理模块,用于根据所述协调消息协调处理所述第一事务。
本发明实施例的第六方面提供了一种分布式事务协调装置,包括:
发送模块,用于发送调用第一事务请求至第一微服务;
接收模块,用于接收所述第一微服务返回的调用第一事务响应,所述调用第一事务响应携带调用结果;
所述发送模块,还用于发送提交第二事务请求至第二数据库;
所述接收模块,还用于接收所述第二数据库发送的提交结果;
判断模块,用于根据所述调用结果和所述提交结果,确定协调消息,所述协调消息为确认消息或回滚消息,若所述调用结果和所述提交结果一致,确定所述协调消息为确认消息,否则,确定所述协调消息为回滚消息;
所述发送模块,还用于发送所述协调消息至事务协调器。
本发明实施例的第七方面提供了一种分布式事务协调装置,包括:
存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述所述方法的步骤。
本发明实施例的第八方面提供了一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述方法的步骤。
本发明提供的分布式事务协调方法及装置,通过分布式事务协调装置接收第一微服务发送的注册第一事务请求,根据注册第一事务请求注册第一事务,并返回注册第一事务响应,接收第二微服务发送的协调消息,协调消息为确认消息或回滚消息,第二微服务调用所述第一微服务,发送协调消息至第一微服务,解决了现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题,实现了事务灵活的升级和扩展,缩短了中间过程,降低了时间复杂度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的分布式事务协调方法的实现流程示意图;
图2是本发明实施例二提供的分布式事务协调方法的实现流程示意图;
图3是本发明实施例三提供的分布式事务协调方法的实现流程示意图;
图4是本发明实施例四提供的分布式事务协调方法的实现流程示意图;
图5是本发明实施例五提供的分布式事务协调方法的实现流程示意图;
图6是本发明实施例六提供的分布式事务协调装置的示意图;
图7是本发明实施例七提供的分布式事务协调装置的示意图;
图8是本发明实施例八提供的分布式事务协调装置的示意图;
图9是本发明实施例九提供的分布式事务协调装置的示意图;
图10是本发明实施例十提供的分布式事务协调***的实现流程示意图;
图11是本发明实施例十一提供的分布式事务协调***的交互示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
微服务是一个新兴的软件架构,就是把一个大型的单个应用程序或服务拆分为多个支持微服务,一般按照功能拆分,使得每个微服务实现特定的功能。每个微服务启动一个独立的进程,并提供标准调度接口,以调用其他微服务或被其他微服务调度。
事务,实现微服务执行的具体操作,在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元,通常由高级数据库操纵语言或编程语言书写的用户程序的执行所引起。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成,事务开始与事务结束之间的主要操作有事务执行和事务递交,其中,事务递交包括提交和回滚。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1是本发明实施例一提供的分布式事务协调方法的实现流程示意图,如图1所示,本实施例的执行主体为分布式事务协调装置,具体可以为事务协调器,该事务协调器设置在本地终端,且每个本地终端上具有唯一的事务协调器,当某一事务跨多个终端时,每个终端各自的事务协调器按照预定的协议交互,以实现跨终端事务的一致性管理。本实施例的方法可以包括:
步骤11、接收第一微服务发送的注册第一事务请求。
本实施例中,第一微服务为实现特定功能的微服务,第一事务为实现第一微服务的程序执行单元,执行第一事务,可以实现第一微服务的功能。第一事务执行后,第一微服务向事务协调器发送注册第一事务请求,注册第一事务请求携带第一事务信息。事务信息可以包括事务的功能、接口、数据库等信息。本实施例中的第一微服务可以被第二微服务调用。
步骤12、根据注册第一事务请求注册第一事务。
步骤13、返回注册第一事务响应。
分布式事务协调装置如事务协调器,根据注册第一事务请求携带的第一事务信息,完成注册第一事务,并将第一事务信息进行存储。注册成功后,事务协调器向第一微服务返回注册第一事务响应,即返回注册结果。从而完成第一微服务在事务协调器的注册。
步骤14、接收第二微服务发送的协调消息,协调消息为确认消息或回滚消息,第二微服务调用第一微服务。
其中,第二微服务是与第一微服务实现不同的功能的微服务,在本实施例中,第二微服务通过第一微服务的标准调度接口调用第一微服务。
步骤15、发送协调消息至第一微服务。
当事务协调器接收到第二微服务发送的协调消息时,根据存储的第一事务信息,向注册第一事务的第一微服务发送协调消息,从而实现对第一微服务的协调处理。其中,该协调消息为确认消息或回滚消息。
其中,第一微服务可以为任意多个。以银行取现业务为例,作为本发明一实施例,拆分的微服务用于实现取现功能,作为本发明另一实施例,拆分的微服务用于实现身份验证、取现两个功能。以第一微服务为两个为例(为方便描述,将实现取现功能的微服务称为第一微服务,将实现身份验证功能的微服务称为第三微服务):当需要对取现功能增加身份验证时,由第一微服务或第二微服务调用第三微服务。采用本实施例的方法,在事务协调器注册新的事务信息即可实现第三微服务的功能,无需针对新的功能编写特定代码,实现了事务协调器的灵活升级或扩展,从而保证了整体的性能。并且,采用本实施例的方法,降低了事务与容器之间的耦合性和时间复杂度,提高了事务处理的效率。
本实施例提供了一种分布式事务协调方法,通过接收第一微服务发送的注册第一事务请求,根据注册第一事务请求注册第一事务,并返回注册第一事务响应,接收第二微服务发送的协调消息,协调消息为确认消息或回滚消息,第二微服务调用所述第一微服务,发送协调消息至第一微服务,解决了现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题,实现了事务灵活的升级和扩展,缩短了中间过程,降低了时间复杂度。
图2是本发明实施例二提供的分布式事务协调方法的实现流程示意图,如图2所示,本实施例是图1所示的实施例一的一种实现方式,具体涉及实施例一步骤15的一种实现方式。本实施例的方法可以包括:
步骤21、接收第一微服务发送的注册第一事务请求。
步骤22、根据注册第一事务请求注册第一事务。
步骤23、返回注册第一事务响应。
步骤24、接收第二微服务发送的协调消息,协调消息为确认消息或回滚消息,第二微服务调用第一微服务。
其中,步骤21至24参见实施例一的步骤11至14,此处不再赘述。
步骤25、当协调消息为确认消息时,发送确认消息至第一微服务,以使第一微服务协调第一事务提交。
步骤26、当协调消息为回滚消息时,发送回滚消息至第一微服务,以使第一微服务协调第一事务回滚。
在本发明实施例中,事务协调器从第二微服务接收到的协调消息为确认消息或回滚消息。
当协调消息为确认消息时,表明所有事务满足最终一致性的要求标准,即所有事务都执行成功,或所有事务都执行失败,此时,事务协调器将接收到的确认消息发送至第一微服务,以使第一微服务协调第一事务提交。
当协调消息为回滚消息时,表明所有事务不满足最终一致性的要求标准,即部分事务执行成功,还有一部分事务执行失败,为保证事务的最终一致性,需要将执行成功的部分事务恢复到执行前的初始状态,因此,事务协调器根据保存的第一事务信息,将接收到的回滚消息发送至第一微服务,以使第一微服务协调第一事务回滚,恢复到事务执行前的初始状态。
图3是本发明实施例三提供的分布式事务协调方法的实现流程示意图,如图3所示,本实施例的执行主体为分布式事务协调装置,具体可以为第一微服务,本实施例的方法可以包括:
步骤31、发送注册第一事务请求至事务协调器。
步骤32、接收事务协调器发送的注册第一事务响应。
步骤33、接收事务协调器发送的协调消息,协调消息为确认消息或回滚消息。
步骤34、根据协调消息协调处理第一事务。
第一微服务发送注册第一事务请求至事务协调器,该注册第一事务请求携带第一事务信息。事务协调器根据注册第一事务请求返回注册第一事务响应。从而完成第一事务的注册。
当事务协调器发送协调消息时,第一微服务根据协调消息,协调处理第一事务。其中,该协调消息为确认消息或回滚消息。
本实施例提供了一种分布式事务协调方法,通过发送注册第一事务请求至事务协调器,接收事务协调器发送的注册第一事务响应,接收事务协调器发送的协调消息,协调消息为确认消息或回滚消息,根据协调消息协调处理第一事务,解决了现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题,实现了事务灵活的升级和扩展,缩短了中间过程,降低了时间复杂度。
可选的,为避免事务并发中间状态被修改,导致事务最终一致性受到影响,本实施例引用了乐观锁(Optimistic Locking),进一步的保证了微服务架构实现的最终一致性。
具体的,乐观锁,一般是基于数据版本(Version)记录机制实现的,即对每一次事务调用记录一个版本号来保证中间状态不被修改。其中,乐观锁相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性,导致数据库开销变大,降低了***整体性能表现,对长事务而言尤为明显。乐观锁机制避免了长事务中的数据库加锁开销,大大提升了开销较大的***整体性能表现。如本实施例的第一事务执行或递交过程中,均无需对第一数据库数据加锁,在进一步保证微服务架构实现最终一致性的同时降低了时间复杂度。
图4是本发明实施例四提供的分布式事务协调方法的实现流程示意图,如图4所示,本实施例是在图3所示的实施例三的基础上的一种分布式事务协调方法,本实施例的方法可以包括:
步骤401、接收第二微服务发送的调用第一事务请求。
步骤402、创建第一事务连接。
步骤403、发送执行第一事务消息至第一数据库。
步骤404、接收第一数据库返回的执行第一事务的执行结果。
执行第一事务完成某一特定功能,例如,执行第一事务的进程,实现上述实施例中的取现功能。当需要实现取现功能时,第二微服务调用第一微服务,具体的,第二微服务可以是实现银行交易功能的微服务。第二微服务向第一微服务发送调用第一事务请求,第一微服务开始第一事务,创建第一事务连接,发送执行第一事务消息至第一数据库,第一数据库执行第一事务,将执行结果返回给第一微服务。从而完成第一事务的执行。
步骤405、发送注册第一事务请求至事务协调器。
步骤406、接收事务协调器发送的注册第一事务响应。
步骤407、根据注册第一事务响应,发送调用第一事务响应至第二微服务。
第一微服务发送注册第一事务请求至事务协调器,该注册第一事务请求携带第一事务信息。事务协调器根据注册第一事务请求返回注册第一事务响应。从而完成第一事务的注册。同时,第一微服务将调用第一事务响应至第二微服务,以通知第二微服务调用结果。
步骤408、接收事务协调器发送的协调消息,协调消息为确认消息或回滚消息。
当事务协调器发送协调消息时,第一微服务根据协调消息,协调处理第一事务。其中,该协调消息为确认消息或回滚消息。
步骤409、当协调消息为确认消息时,发送提交第一事务请求至第一数据库,以使第一数据库保存执行结果,并接收第一数据库返回的提交结果。
步骤410、当协调消息为回滚消息时,发送回滚第一事务请求至第一数据库,以使第一数据库删除执行结果,并接收第一数据库返回的回滚结果。
当协调消息为确认消息时,表明所有事务满足最终一致性的要求标准,即所有事务都执行成功,或所有事务都执行失败,此时,第一微服务接收事务协调器发送的确认消息,第一微服务发送提交第一事务请求至第一数据库,以使第一数据库保存第一事务的执行结果,并将提交结果返回给第一微服务,以协调第一事务提交。
当协调消息为回滚消息时,表明所有事务不满足最终一致性的要求标准,即部分事务执行成功,还有一部分事务执行失败,为保证事务的最终一致性,需要将执行成功的部分事务恢复到执行前的初始状态,由此,第一微服务接收事务协调器根据保存的第一事务信息发送的回滚消息,第一微服务发送回滚第一事务请求至第一数据库,以使第一事务回滚,恢复到事务执行前的初始状态。
可选的,第一数据库可以为MySQL、SQL Server、Oracle等支持JDBC的任一数据库,本申请不做限制。
当第一事务协调处理完成后,释放第一事务连接。
图5是本发明实施例五提供的分布式事务协调方法的实现流程示意图,如图5所示,本实施例的执行主体为分布式事务协调装置,具体可以为第二微服务,本实施例的方法可以包括:
步骤51、发送调用第一事务请求至第一微服务。
在向第一微服务发送调用第一事务请求之前,第二微服务由用户或其他应用发起开始第二事务,创建第二事务连接,发送执行第二事务消息至第二数据库,第二数据库执行第二事务,将执行结果返回给第二微服务,完成了第二事务的执行。
步骤52、接收第一微服务返回的调用第一事务响应,调用第一事务响应携带调用结果。
当第二微服务需要完成第一事务的某一特定功能时,向第一微服务发送调用第一事务请求以调用第一微服务,在第一微服务注册完成后,接收第一微服务返回的调用结果,从而完成第二微服务的调用。
步骤53、发送提交第二事务请求至第二数据库。
步骤54、接收第二数据库发送的提交结果。
步骤55、根据调用结果和提交结果,确定协调消息,协调消息为确认消息或回滚消息,若调用结果和提交结果一致,确定协调消息为确认消息,否则,确定协调消息为回滚消息。
步骤56、发送协调消息至事务协调器。
第二事务在接收到调用结果后,向第二数据库提交第二事务,并接收第二数据库返回的提交结果。第二微服务根据提交结果,确定协调消息。具体的,若调用结果和提交结果一致,确定协调消息为确认消息,否则,确定协调消息为回滚消息。第二微服务将确定的协调消息发送至事务协调器,以实现其他微服务的协调处理。
当第二事务协调处理完成后,释放第二事务连接。
本实施例提供了一种分布式事务协调方法,通过发送调用第一事务请求至第一微服务,接收第一微服务返回的调用第一事务响应,调用第一事务响应携带调用结果,发送提交第二事务请求至第二数据库,接收第二数据库发送的提交结果,根据调用结果和提交结果,确定协调消息,协调消息为确认消息或回滚消息,若调用结果和提交结果一致,确定协调消息为确认消息,否则,确定协调消息为回滚消息,发送协调消息至事务协调器,解决了现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题,实现了事务灵活的升级和扩展,缩短了中间过程,降低了时间复杂度。
图6是本发明实施例六提供的分布式事务协调装置的示意图,如图6所示,本实施例的执行主体为分布式事务协调装置,具体可以为事务协调器,本实施例的装置可以包括:
接收模块61,用于接收第一微服务发送的注册第一事务请求。
注册模块62,用于根据注册第一事务请求注册第一事务。
发送模块63,用于发送注册第一事务响应至第一微服务。
接收模块61,还用于接收第二微服务发送的协调消息,协调消息为确认消息或回滚消息,第二微服务调用所述第一微服务。
发送模块63,还用于发送协调消息至第一微服务。
本实施例提供的一种分布式事务协调装置,用于实现实施例一所述的分布式事务协调方法,其中各个模块的功能可以参考方法实施例中相应的描述,其实现原理和技术效果类似,此处不再赘述。
图7是本发明实施例七提供的分布式事务协调装置的示意图,如图7所示,本实施例的执行主体为分布式事务协调装置,具体可以为第一微服务,本实施例的装置可以包括:
发送模块71,用于发送注册第一事务请求至事务协调器。
接收模块72,用于接收事务协调器发送的注册第一事务响应。
接收模块72,还用于接收事务协调器发送的协调消息,协调消息为确认消息或回滚消息。
协调处理模块73,用于根据协调消息协调处理第一事务。
本实施例提供的一种分布式事务协调装置,用于实现实施例三所述的分布式事务协调方法,其中各个模块的功能可以参考方法实施例中相应的描述,其实现原理和技术效果类似,此处不再赘述。
图8是本发明实施例八提供的分布式事务协调装置的示意图,如图8所示,本实施例的执行主体为分布式事务协调装置,具体可以为第二微服务,本实施例的装置可以包括:
发送模块81,用于发送调用第一事务请求至第一微服务。
接收模块82,用于接收第一微服务返回的调用第一事务响应,调用第一事务响应携带调用结果。
发送模块81,还用于发送提交第二事务请求至第二数据库。
接收模块82,还用于接收第二数据库发送的提交结果。
判断模块83,用于根据调用结果和提交结果,确定协调消息,协调消息为确认消息或回滚消息,若调用结果和所述提交结果一致,确定协调消息为确认消息,否则,确定协调消息为回滚消息。
发送模块81,还用于发送协调消息至事务协调器。
本实施例提供的一种分布式事务协调装置,用于实现实施例五所述的分布式事务协调方法,其中各个模块的功能可以参考方法实施例中相应的描述,其实现原理和技术效果类似,此处不再赘述。
图9是本发明实施例九提供的分布式事务协调装置的示意图,如图9所示,本实施例的执行主体为分布式事务协调装置,具体可以为第二微服务,本实施例的装置可以包括:存储器91、处理器92以及存储在存储器91中并可在处理器92上运行的计算机程序93,例如分布式事务协调程序。上述处理器92执行上述计算机程序93时实现上述各个分布式事务协调方法实施例中的步骤,例如图1所示的步骤11至15。或者,上述处理器92执行上述计算机程序93时实现上述各个分布式事务协调装置实施例中各模块的功能,例如图6所示模块61至63的功能。
示例性的,上述计算机程序93可以被分割成一个或多个模块,上述一个或者多个模块被存储在上述存储器91中,并由上述处理器92执行,以完成本发明。上述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述上述计算机程序93在上述分布式事务协调装置9中的执行过程。例如,上述计算机程序93可以被分割成接收模块、注册模块、发送模块(虚拟装置中的模块),各模块具体功能如下:
接收模块,用于接收第一微服务发送的注册第一事务请求;
注册模块,用于根据注册第一事务请求注册第一事务;
发送模块,用于发送注册第一事务响应至第一微服务;
上述接收模块,还用于接收第二微服务发送的协调消息;
上述发送模块,还用于发送协调消息至第一微服务。
本领域技术人员可以理解,图9仅仅是分布式事务协调装置9的示例,并不构成对分布式事务协调装置9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如上述分布式事务协调装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器92可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述存储器91可以是上述分布式事务协调装置9的内部存储单元,例如分布式事务协调装置9的硬盘或内存。上述存储器91也可以是上述分布式事务协调装置9的外部存储设备,例如上述分布式事务协调装置9上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述存储器91还可以既包括上述分布式事务协调装置9的内部存储单元也包括外部存储设备。上述存储器91用于存储上述计算机程序93以及上述分布式事务协调装置9所需的其他程序和数据。上述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
由上可见,通过本发明实施例,解决了现有技术中微服务架构实现最终一致性存在的灵活性差、效率较低的问题,实现了事务灵活的升级和扩展,缩短了中间过程,降低了时间复杂度。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
图10是本发明实施例十提供的分布式事务协调***的实现流程示意图,如图10所示,本实施例的***可以包括:
步骤101、本地事务管理器开启事务。
步骤102、执行本地事务。
步骤103、注册到事务协调器。
步骤104、协调事务提交或回滚。
步骤105、释放数据库。
本实施例提供的一种分布式事务协调***,用于实现上述各对应方法实施例执行的技术方案,其实现原理和技术效果类似,此处不再赘述。
图11是本发明实施例十一提供的分布式事务协调***的交互示意图,如图11所示,本实施例的***为事务协调器、第一微服务和第二微服务组成的***,对应上述各装置实施例执行的技术方案,其实现原理和技术效果类似,此处不再赘述。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种分布式事务协调方法,其特征在于,包括:
接收第一微服务发送的注册第一事务请求,根据所述注册第一事务请求注册第一事务,并返回注册第一事务响应;所述注册第一事务响应用于指示所述第一微服务向第二微服务发送调用第一事务响应,所述调用第一事务响应包括调用结果;
接收第二微服务发送的协调消息,所述协调消息为确认消息或回滚消息,所述第二微服务调用所述第一微服务;所述协调消息为所述第二微服务根据所述调用结果以及第二事务请求的提交结果确定的;
发送所述协调消息至所述第一微服务。
2.如权利要求1所述的方法,其特征在于,所述发送所述协调消息至所述第一微服务,具体包括:
当所述协调消息为所述确认消息时,发送所述确认消息至所述第一微服务,以使所述第一微服务协调第一事务提交;
当所述协调消息为所述回滚消息时,发送所述回滚消息至所述第一微服务,以使所述第一微服务协调第一事务回滚。
3.一种分布式事务协调方法,其特征在于,包括:
发送注册第一事务请求至事务协调器,并接收所述事务协调器发送的注册第一事务响应;
接收所述事务协调器发送的协调消息,所述协调消息为确认消息或回滚消息;
根据所述协调消息协调处理所述第一事务;
所述发送注册第一事务请求至事务协调器之前,还包括:
接收第二微服务发送的调用第一事务请求,创建第一事务连接;
发送执行第一事务消息至第一数据库,并接收所述第一数据库返回的执行所述第一事务的执行结果;
所述接收所述事务协调器发送的注册第一事务响应之后,还包括:
根据所述注册第一事务响应,发送调用第一事务响应至所述第二微服务;所述调用第一事务响应包括调用结果;所述调用第一事务响应用于指示所述第二微服务根据所述调用结果以及第二事务请求的提交结果确定所述协调消息,并将所述协调消息发送至所述事务协调器。
4.如权利要求3所述的方法,其特征在于,所述根据所述协调消息协调处理所述第一事务,具体包括:
当所述协调消息为所述确认消息时,发送提交第一事务请求至所述第一数据库,以使所述第一数据库保存所述执行结果,并接收所述第一数据库返回的提交结果;
当所述协调消息为所述回滚消息时,发送回滚第一事务请求至所述第一数据库,以使所述第一数据库删除所述执行结果,并接收所述第一数据库返回的回滚结果。
5.一种分布式事务协调方法,其特征在于,包括:
发送调用第一事务请求至第一微服务,接收所述第一微服务返回的调用第一事务响应,所述调用第一事务响应携带调用结果;
发送提交第二事务请求至第二数据库,接收所述第二数据库发送的提交结果;
根据所述调用结果和所述提交结果,确定协调消息,所述协调消息为确认消息或回滚消息,若所述调用结果和所述提交结果一致,确定所述协调消息为确认消息,否则,确定所述协调消息为回滚消息;
发送所述协调消息至事务协调器。
6.一种分布式事务协调装置,其特征在于,包括:
接收模块,用于接收第一微服务发送的注册第一事务请求;注册模块,用于根据注册第一事务请求注册第一事务;
发送模块,用于发送注册第一事务响应至所述第一微服务;所述注册第一事务响应用于指示所述第一微服务向第二微服务发送调用第一事务响应,所述调用第一事务响应包括调用结果;
所述接收模块,还用于接收第二微服务发送的协调消息,所述协调消息为确认消息或回滚消息,所述第二微服务调用所述第一微服务;所述协调消息为所述第二微服务根据所述调用结果确定的;
所述发送模块,还用于发送所述协调消息至所述第一微服务。
7.一种分布式事务协调装置,其特征在于,包括:
发送模块,用于发送注册第一事务请求至事务协调器;
接收模块,用于接收所述事务协调器发送的注册第一事务响应;
所述接收模块,还用于接收所述事务协调器发送的协调消息,所述协调消息为确认消息或回滚消息;
协调处理模块,用于根据所述协调消息协调处理所述第一事务;
所述分布式事务协调装置还用于接收第二微服务发送的调用第一事务请求,创建第一事务连接;发送执行第一事务消息至第一数据库,并接收所述第一数据库返回的执行所述第一事务的执行结果;
所述分布式事务协调装置还用于根据所述注册第一事务响应,发送调用第一事务响应至所述第二微服务;所述调用第一事务响应包括调用结果;所述调用第一事务响应用于指示所述第二微服务根据所述调用结果以及第二事务请求提交结果确定所述协调消息,并将所述协调消息发送至所述事务协调器。
8.一种分布式事务协调装置,其特征在于,包括:
发送模块,用于发送调用第一事务请求至第一微服务;
接收模块,用于接收所述第一微服务返回的调用第一事务响应,所述调用第一事务响应携带调用结果;
所述发送模块,还用于发送提交第二事务请求至第二数据库;
所述接收模块,还用于接收所述第二数据库发送的提交结果;
判断模块,用于根据所述调用结果和所述提交结果,确定协调消息,所述协调消息为确认消息或回滚消息,若所述调用结果和所述提交结果一致,确定所述协调消息为确认消息,否则,确定所述协调消息为回滚消息;
所述发送模块,还用于发送所述协调消息至事务协调器。
9.一种分布式事务协调装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
CN201810259145.1A 2018-03-27 2018-03-27 分布式事务协调方法及装置 Expired - Fee Related CN108415758B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810259145.1A CN108415758B (zh) 2018-03-27 2018-03-27 分布式事务协调方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810259145.1A CN108415758B (zh) 2018-03-27 2018-03-27 分布式事务协调方法及装置

Publications (2)

Publication Number Publication Date
CN108415758A CN108415758A (zh) 2018-08-17
CN108415758B true CN108415758B (zh) 2020-11-27

Family

ID=63133652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810259145.1A Expired - Fee Related CN108415758B (zh) 2018-03-27 2018-03-27 分布式事务协调方法及装置

Country Status (1)

Country Link
CN (1) CN108415758B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110876852B (zh) * 2018-09-06 2023-09-26 深圳市贰陆陆科技有限公司 微服务的网络游戏数据处理方法及***
CN109714319A (zh) * 2018-12-06 2019-05-03 深圳市中农网有限公司 微服务的管理***、方法、装置、计算机设备及存储介质
US10963324B2 (en) * 2018-12-12 2021-03-30 Citrix Systems, Inc. Predictive microservice systems and methods
CN111385361B (zh) * 2020-03-10 2023-04-07 创新奇智(广州)科技有限公司 验布机通信方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160002623A (ko) * 2015-12-16 2016-01-08 김우진 모바일 단말기 간의 결제를 처리하는 방법
CN106156119A (zh) * 2015-04-07 2016-11-23 阿里巴巴集团控股有限公司 一种分布式事务通信方法、***及装置
CN106503132A (zh) * 2016-10-19 2017-03-15 广州快塑电子商务有限公司 一种分布式事务管理方法及***
CN106874130A (zh) * 2017-02-06 2017-06-20 西多多信息科技(北京)有限公司 一种微服务架构中分布式事务的处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106156119A (zh) * 2015-04-07 2016-11-23 阿里巴巴集团控股有限公司 一种分布式事务通信方法、***及装置
KR20160002623A (ko) * 2015-12-16 2016-01-08 김우진 모바일 단말기 간의 결제를 처리하는 방법
CN106503132A (zh) * 2016-10-19 2017-03-15 广州快塑电子商务有限公司 一种分布式事务管理方法及***
CN106874130A (zh) * 2017-02-06 2017-06-20 西多多信息科技(北京)有限公司 一种微服务架构中分布式事务的处理方法

Also Published As

Publication number Publication date
CN108415758A (zh) 2018-08-17

Similar Documents

Publication Publication Date Title
CN108415758B (zh) 分布式事务协调方法及装置
CN111045794B (zh) 分布式事务处理方法、装置、***、计算机设备及存储介质
CN102971711A (zh) 用于处理批工作单元的设备
CN110188110B (zh) 一种构建分布式锁的方法及装置
CN107016029B (zh) 一种业务数据的处理方法、装置及***
CN110888718A (zh) 分布式事务的实现方法及装置
CN103544153A (zh) 一种基于数据库的数据更新方法和***
CN112667600A (zh) 一种redis与MySQL结合的库存解决方法
CN109376165A (zh) 内存数据库锁的实现方法和装置及计算机可读存储介质
CN111444199B (zh) 数据处理方法及装置、存储介质和处理器
CN113112344B (zh) 业务处理方法、设备、存储介质及计算机程序产品
CN111292028A (zh) 库存信息处理方法及***、计算机***和可读存储介质
CN111367694B (zh) 事件处理方法、服务器及计算机存储介质
CN112559496A (zh) 一种分布式数据库事务原子性实现方法及装置
CN110827001A (zh) 一种会计事件记账方法、***、设备和存储介质
CN107195144B (zh) 管理支付终端硬件模块的方法、装置及计算机可读存储介质
CN113342481B (zh) 一种事务状态的确认方法及装置
CN114816684A (zh) 业务处理方法、装置、设备、可读存储介质及产品
CN112162988A (zh) 一种分布式事务的处理方法、装置和电子设备
CN112988775A (zh) 处理批量交易的方法、计算设备和存储介质
CN111897822A (zh) 账户状态信息的处理方法、装置、电子设备及存储介质
CN111309521A (zh) Fpga重加载方法、fpga卡式设备和主机
CN113077241B (zh) 审批处理方法、装置、设备及存储介质
CN109559240A (zh) 防止保费重复扣缴的方法、装置、设备及可读存储介质
CN114385320B (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
CB02 Change of applicant information

Address after: Room 201, Building A, No. 1 Qianwan Road, Qianhai Shenzhen-Hong Kong Cooperation Zone, Shenzhen, Guangdong 518000:No. 1701, 1702B, A, New Hao one town, No. 7018 Cai Tian Road, Futian, Shenzhen 518000 Room 201, No. 1 A (Qianhai business secretary, Shenzhen, Shenzhen City, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen City, Guangdong)

Applicant after: Shenzhen Rongyimai Information Technology Co., Ltd.

Address before: Room 201, Building A, No. 1 Qianwan Road, Qianhai Shenzhen-Hong Kong Cooperation Zone, Shenzhen, Guangdong 518000:No. 1701, 1702B, A, New Hao one town, No. 7018 Cai Tian Road, Futian, Shenzhen 518000 Room 201, No. 1 A (Qianhai business secretary, Shenzhen, Shenzhen City, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen City, Guangdong)

Applicant before: Maimaiti Mdt InfoTech Ltd, Shenzhen

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20201127

Termination date: 20210327

CF01 Termination of patent right due to non-payment of annual fee