CN105786594A - 分布式事务处理方法、装置及系统 - Google Patents

分布式事务处理方法、装置及系统 Download PDF

Info

Publication number
CN105786594A
CN105786594A CN201610105564.0A CN201610105564A CN105786594A CN 105786594 A CN105786594 A CN 105786594A CN 201610105564 A CN201610105564 A CN 201610105564A CN 105786594 A CN105786594 A CN 105786594A
Authority
CN
China
Prior art keywords
service node
stage affairs
affairs
stage
distributed transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610105564.0A
Other languages
English (en)
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201610105564.0A priority Critical patent/CN105786594A/zh
Publication of CN105786594A publication Critical patent/CN105786594A/zh
Pending legal-status Critical Current

Links

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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/46Indexing scheme relating to G06F9/46
    • G06F2209/462Lookup

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本公开提供了分布式事务处理方法、装置及系统,其中,所述方法包括:在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;检测是否成功提交所述第一阶段事务;如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。本公开简化了所述第一服务节点和所述控制线程之间交互的流程,不存在单点故障的问题,且涉及的请求数较少,对系统和网络资源的占用同样较少。

Description

分布式事务处理方法、装置及系统
技术领域
本公开涉及通信领域,尤其涉及分布式事务处理方法、装置及系统。
背景技术
相关技术中,在执行分布式事务时,服务节点每执行一步均需要向控制中心发送请求,由所述控制中心按照流程的分配,控制数据库的写入及数据回滚等操作。涉及的请求数多,流程冗余,且占用资源较多。
发明内容
有鉴于此,本公开提供了分布式事务处理方法及装置,以解决相关技术中的不足。
根据本公开实施例的第一方面,提供一种分布式事务处理方法,所述方法用于第一服务节点,所述第一服务节点对应第一服务器集群和第一数据库集群;
所述方法包括:
在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测是否成功提交所述第一阶段事务;
如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
可选地,在所述提交所述第一阶段事务之前,所述方法还包括:
发送即将提交所述第一阶段事务的第一提交信息给所述控制线程,以使所述控制线程存储所述第一提交信息。
可选地,采用以下方式确定执行完成分布式事务中的第一阶段事务:
向所述第一数据库集群中的第一目标数据库发送数据库操作请求,以使所述第一目标数据库根据所述数据库操作请求执行相应的数据库操作;
接收所述第一目标数据库返回的携带表征所述数据库操作是否成功的执行结果的第二通知消息;
如果所述执行结果指示所述数据库操作成功,确定执行完成分布式事务中的第一阶段事务。
根据本公开实施例的第二方面,提供一种分布式事务处理方法,所述方法用于控制线程,所述控制线程与支持数据库集群的第二目标数据库所在的终端绑定;
所述方法包括:
接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
在接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
可选地,在所述接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息之前,所述方法还包括:
接收所述第一服务节点在执行完成所述第一阶段事务后发送的即将提交所述第一阶段事务的第一提交信息;
存储所述第一提交信息。
可选地,所述存储所述第一提交信息,包括:
判断是否是首次接收到所述第一提交信息;
如果是首次接收到所述第一提交信息,对所述第一提交信息进行分布式存储。
可选地,所述通知第二服务节点开始执行所述分布式事务中的第二阶段事务,包括:
在将存储的所述第一提交信息对应的状态修改为已成功之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务。
可选地,所述通知第二服务节点开始执行所述分布式事务中的第二阶段事务,包括:
调用预先与第二服务节点建立的通知接口通知所述第二服务节点开始执行所述分布式事务中的第二阶段事务。
可选地,在所述存储所述第一提交信息之后,所述方法还包括:
记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
可选地,所述通知第二服务节点开始执行所述分布式事务中的第二阶段事务之后,所述方法还包括:
接收所述第二服务节点在执行完成所述第二阶段事务后发送的即将提交所述第二阶段事务的第二提交信息;
存储所述第二提交信息;
接收所述第二服务节点发送的携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息;
在接收到所述第三通知消息之后,将存储的所述第二提交信息对应的状态修改为已成功。
可选地,所述方法还包括:
如果所述第一提交信息和所述第二提交信息对应的状态均为已成功,发布所述分布式事务成功提交的成功信息。
可选地,所述第二目标数据库是redis数据库。
根据本公开实施例的第三方面,提供一种分布式事务处理装置,所述装置用于第一服务节点,所述第一服务节点对应第一服务器集群和第一数据库集群;
所述装置包括:
提交模块,被配置为在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测模块,被配置为检测所述提交模块是否成功提交所述第一阶段事务,获得第一检测结果;
第一发送模块,被配置为如果所述检测模块检测到成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
可选地,所述装置还包括:
第二发送模块,被配置为在所述提交模块提交所述第一阶段事务之前,发送即将提交所述第一阶段事务的第一提交信息给所述控制线程,以使所述控制线程存储所述第一提交信息。
可选地,所述提交模块包括:
发送子模块,被配置为向所述第一数据库集群中的第一目标数据库发送数据库操作请求,以使所述第一目标数据库执行根据所述数据库操作请求执行相应的数据库操作;
接收子模块,被配置为接收所述第一目标数据库返回的携带表征所述数据库操作是否成功的执行结果的第二通知消息;
确定子模块,被配置为如果所述接收子模块接收到的所述第二通知消息中携带的所述执行结果指示所述数据库操作成功,确定执行完成分布式事务中的第一阶段事务。
根据本公开实施例的第四方面,提供一种分布式事务处理装置,所述装置用于终端,所述终端设置有控制线程和支持数据库集群的第二目标数据库;
所述装置包括:
第一接收模块,被配置为接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
通知模块,被配置为在所述第一接收模块接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
可选地,所述装置还包括:
第二接收模块,被配置为在所述第一接收模块接收所述第一通知消息之前,接收所述第一服务节点在执行完成所述第一阶段事务后发送的即将提交所述第一阶段事务的第一提交信息;
第一存储模块,被配置为存储所述第二接收模块接收到的所述第一提交信息。
可选地,所述第一存储模块包括:
判断子模块,被配置为判断所述第二接收模块是否是首次接收到所述第一提交信息;
存储子模块,被配置为如果所述判断子模块确定所述第二接收模块是首次接收到所述第一提交信息,对所述第一提交信息进行分布式存储。
可选地,所述通知模块包括:
通知子模块,被配置为在所述第一接收模块接收到所述第一通知消息之后,将存储的所述第一提交信息对应的状态修改为已成功,通知第二服务节点开始执行所述分布式事务中的第二阶段事务。
可选地,所述通知子模块包括:
通知单元,被配置为在所述第一接收模块接收到所述第一通知消息之后,调用预先与第二服务节点建立的通知接口通知所述第二服务节点开始执行所述分布式事务中的第二阶段事务。
可选地,所述装置还包括:
记录模块,被配置为在所述第一存储模块存储所述第一提交信息之后,记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
可选地,所述装置还包括:
第三接收模块,被配置为在所述通知模块通知所述第二服务节点开始执行所述第二阶段事务之后,接收所述第二服务节点在执行完成所述第二阶段事务后发送的即将提交所述第二阶段事务的第二提交信息;
第二存储模块,被配置为存储所述第三接收模块接收的所述第二提交信息;
第四接收模块,被配置为接收所述第二服务节点发送的携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息;
修改模块,被配置为在所述第四接收模块接收到所述第三通知消息之后,将所述第二存储模块存储的所述第二提交信息对应的状态修改为已成功。
可选地,所述装置还包括:
发布模块,被配置为如果所述第一存储模块存储的所述第一提交信息和所述第二存储模块存储的所述第二提交信息对应的状态均为已成功,发布所述分布式事务成功提交的成功信息。
可选地,所述第二目标数据库是redis数据库。
根据本公开实施例的第五方面,提供一种分布式事务处理装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测是否成功提交所述第一阶段事务;
如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
根据本公开实施例的第六方面,提供一种分布式事务处理装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
在接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
根据本公开实施例的第七方面,提供一种分布式事务处理系统,包括:第一服务节点、第二服务节点和终端;
所述第一服务节点包括上述第三方面所述的装置;
所述终端设置有控制线程和支持数据库集群的第二目标数据库,且所述终端包括上述第四方面所述的装置。
根据本公开实施例的第八方面,提供一种分布式事务处理系统,包括:第一服务节点、第二服务节点和终端;
所述第一服务节点包括上述第五方面所述的装置;
所述终端设置有控制线程和支持数据库集群的第二目标数据库,且所述终端包括上述第六方面所述的装置。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开实施例中,第一服务节点在执行完成分布式事务中的第一阶段事务且检测到成功提交所述第一阶段事务后,通知控制线程,以便所述控制线程可以通知第二服务节点开始执行所述分布式事务中的第二阶段事务。上述过程中所述第一服务节点在检测到成功提交所述第一阶段事务后向所述控制线程发送第一通知消息,简化了所述第一服务节点和所述控制线程之间交互的流程,不存在单点故障的问题,且涉及的请求数较少,对系统和网络资源的占用同样较少。
本公开实施例中,第一服务节点可以在提交第一阶段事务之前,先发送即将提交所述第一阶段事务的第一提交信息给控制线程,以使所述控制线程存储所述第一提交信息。本公开实施例中,由所述控制线程和支持数据库集群的第二目标数据库对所述第一提交信息进行统一管理,可以在进行数据回滚时确保事务执行的可靠性和数据的一致性。进一步地,由于所述控制线程和所述第二目标数据库对所述第一提交信息进行了统一管理,容易维护,且不再涉及到每个阶段事务各自对应的数据库,数据隔离性好。如果所述第一阶段事务提交失败,不需要对涉及到的每个数据库的日志进行分析,可以快速确定失败原因,减少了事务提交失败时,分析错误原因的工作量,对资源占用和消耗均较少。
本公开实施例中,控制线程会在接收到第一服务节点发送的第一提交信息后,判断是否是首次接收到所述第一提交信息。所述控制线程只在首次接收到所述第一提交信息后,存储所述第一提交信息,避免事务的重复提交。
本公开实施例中,控制线程会采用分布式存储方式存储第一提交信息,有效避免事务性故障带来的数据丢失和数据不一致的问题。
本公开实施例中,控制线程和第二服务节点之间预先建立了通知接口,所述控制线程在接收到携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息后,调用所述通知接口,让所述第二服务节点执行第二阶段事务。简化了所述第二服务节点和所述控制线程之间交互的流程,涉及的请求数较少,对系统和网络资源的占用同样较少。
本公开实施例中,控制线程在存储第一提交信息后,还可以记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位,以便确保数据回滚时数据的一致性。
本公开实施例中,控制线程在接收到第一服务节点发送的第一通知消息后,所述第一通知消息中携带的第一检测结果指示第一阶段事务提交成功,将存储的第一提交信息对应的状态修改为已成功。同样地,在接收到第二服务节点发送的携带指示第二阶段事务提交成功的第二检测结果的第三通知消息后,同样将存储的第二提交信息对应的状态修改为已成功。所述控制线程在所述第一提交信息和所述第二提交信息对应的状态均为已成功时,发布所述分布式事务成功提交的成功信息,可用性高。
本公开实施例中,控制线程与支持数据库集群的第二目标数据库所在的终端绑定,其中所述第二目标数据库可以是redis数据库,具备高可用性。由所述控制线程和所述redis数据库统一管理服务节点提交的提交信息,保证数据一致性及事务的可靠性,且可以保证数据的安全性,具备高可用性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开根据一示例性实施例示出的一种分布式事务处理方法流程图;
图2是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图3是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图4是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图5是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图6是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图7是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图8是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图9是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图10是本公开根据一示例性实施例示出的另一种分布式事务处理方法流程图;
图11是本公开根据一示例性实施例示出的一种分布式事务处理装置框图;
图12是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图13是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图14是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图15是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图16是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图17是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图18是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图19是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图20是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图21是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图;
图22是本公开根据一示例性实施例示出的一种用于分布式事务处理装置的一结构示意图;
图23是本公开根据一示例性实施例示出的另一种用于分布式事务处理装置的一结构示意图;
图24是本公开根据一示例性实施例示出的一种用于分布式事务处理系统的一结构示意图;
图25是本公开根据一示例性实施例示出的另一种用于分布式事务处理系统的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在…...时”或“当…...时”或“响应于确定”。
如图1所示,图1是根据一示例性实施例示出的一种分布式事务处理方法,包括以下步骤:
在步骤102中,在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务。
本公开实施例中提供的方法可以用于第一服务节点,所述第一服务节点对应第一服务器集群和第一数据库集群。
在分布式事务中,第二服务节点执行的第二阶段事务需要在第一阶段事务提交成功后才会开始执行。其中,所述第二服务节点对应第二服务器集群和第二数据库集群。例如,分布式事务为用户在网上进行购物时的交易事务,其中第一阶段事务为从用户指定账号中进行付款的付款事务,第二阶段事务为将用户所付款项打入商家指定账号的收款事务。所述第二阶段事务要在所述第一阶段事务提交完成后才会执行。
本步骤中,所述第一服务节点在完成所述第一阶段事务后,不需要向控制线程进行请求,而是按照相关技术自动提交所述第一阶段事务,简化了所述第一服务节点和所述控制线程之间交互的流程。
可选地,所述第一服务节点确定执行完成分布式事务中的第一阶段事务的过程如图2所示,图2是根据图1所示实施例的基础上示出的另一种分布式事务处理方法,可以包括:
在步骤102-1中,向所述第一数据库集群中的第一目标数据库发送数据库操作请求,以使所述第一目标数据库根据所述数据库操作请求执行相应的数据库操作。
本步骤中,所述第一服务节点向需要执行相应数据库操作的所述第一目标数据库发送数据库操作请求,由所述第一目标数据库根据所述数据库操作请求执行所述数据库操作。
例如,所述第一阶段事务中包括查找数据库、删除数据库表项和写入数据库表项三个步骤,所述第一服务节点向所述第一目标数据库依次发送查找数据库操作请求、删除数据库表项操作请求和写入数据库表项操作请求。所述第一目标数据库会根据接收到的上述数据库操作请求,依次执行查找数据库、删除数据库表项和写入数据库表项。
在步骤102-2中,接收所述第一目标数据库返回的携带表征所述数据库操作是否成功的执行结果的第二通知消息。
本步骤中,所述第一目标数据库可以在完成数据库操作后,发送携带所述执行结果的所述第二通知消息到所述第一服务节点。所述执行结果表征所述数据库操作是否成功。
例如,所述第一数据库在完成查找数据库、删除数据库表项和写入数据库表项的所有数据库操作后,发送所述执行结果到所述第一服务节点。
在步骤102-3中,如果所述执行结果指示所述数据库操作成功,确定执行完成分布式事务中的第一阶段事务。
本步骤中,所述第一服务节点根据所述第一目标数据库返回的所述执行结果确定所述数据库操作是否成功。如果成功,确定完成所述第一阶段事务。此时,可以对所述第一阶段事务进行提交。
本公开实施例中,考虑到所述第一服务节点在提交所述第一阶段事务时可能会出现提交失败的情况,为了方便后续在提交失败后进行数据回滚,可选地,在提交所述第一阶段事务之前,上述分布式事务处理方法如图3所示,图3是根据图1所示实施例的基础上示出的另一种分布式事务处理方法,还可以包括:
在步骤101中,在执行完成所述第一阶段事务后,发送即将提交所述第一阶段事务的第一提交信息给所述控制线程,以使所述控制线程存储所述第一提交信息。
本步骤中,所述第一服务节点在完成所述第一阶段事务后,即将提交所述第一阶段事务之前,发送所述第一提交信息到所述控制线程。本公开实施例中,为了在进行数据回滚时确保事务执行的可靠性和数据的一致性,可以由所述控制线程和第二目标数据库对各个服务节点发送的提交信息进行统一管理,所述控制线程可以与所述第二目标数据库所在的终端绑定。其中,所述第二目标数据库需要支持数据库集群。可选地,所述第二目标数据库可以是redis数据库,具备高可用性。由于redis数据库支持的数据库集群方案较好,可以由所述redis数据库通过隔离手段,保证数据的安全性,具备高可用性。
所述控制线程在接收到所述第一服务节点发送的所述第一提交信息后,可以先判断是否是首次接收到所述第一提交信息,所述控制线程只有在首次接收到所述第一提交信息时,采用分布式存储方式对所述第一提交信息进行存储,可以由所述控制线程和所述第二目标数据库对所述第一提交信息进行统一维护,避免事务的重复提交,且可以有效避免事务性故障带来的数据丢失和数据不一致的问题。
所述第一服务节点在发送所述第一提交信息到所述控制线程后,自动提交所述第一阶段事务,进而执行步骤103。
在步骤103中,检测是否成功提交所述第一阶段事务。
本步骤中,所述第一服务节点按照相关技术自动检测所述第一阶段事务是否成功提交。
在步骤104中,如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
下面针对所述第一阶段事务提交成功或失败两种情况所对应执行的分布式事务处理方法进行介绍如下:
第一种情况,所述第一阶段事务提交成功。
所述第一服务节点在检测到所述第一阶段事务提交成功后,发送第一通知消息到所述控制线程。其中,所述第一通知消息中携带了指示成功提交所述第一阶段事务的第一检测结果。所述控制线程在接收到所述第一通知消息后,会将之前所述第二目标数据库中存储的所述第一提交信息对应的状态修改为已成功,进而调用预先与所述第二服务节点建立的通知接口,通知所述第二服务节点可以开始执行所述第二阶段事务。
所述第二服务节点完成所述第二阶段事务的过程与所述第一服务节点完成所述第一阶段事务的过程相同,在此不再赘述。所述第二服务节点在执行完成所述第二阶段事务后,同样可以在提交所述第二阶段事务之前,先发送即将提交所述第二阶段事务的第二提交信息到所述控制线程。所述控制线程在确定是首次接收到所述第二提交信息后,对所述第二提交信息进行分布式存储,由所述控制线程和所述第二目标数据库对所述第二提交信息进行统一维护。所述第二服务节点在提交所述第二阶段事务后,检测是否成功提交所述第二阶段事务,如果成功提交所述第二阶段事务,发送携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息到所述控制线程。
所述控制线程在接收到所述第三通知消息后,会将存储的所述第二提交信息对应的状态修改为已成功。进一步地,所述控制线程只有在所述第一提交信息和所述第二提交信息对应的状态均为已成功时,才会发布所述分布式事务成功提交的成功信息。
例如,分布式事务为用户在网上进行购物时的交易事务,其中第一阶段事务为付款事务,第二阶段事务为收款事务。所述控制线程只有在与所述付款事务对应的第一提交信息和与所述收款事务对应的所述第二提交信息对应的状态均为已成功,即所述付款事务和所述收款事务均成功时,发布所述交易事务成功提交的成功信息。相应地,进行所述交易事务的用户可以通过所使用的终端查看到提示交易成功的信息。
如果所述第二阶段事务提交失败,处理过程与所述第一阶段事务提交失败的处理过程相同,介绍如下。
第二种情况,所述第一阶段事务提交失败。
所述第一服务节点在检测到所述第一阶段事务提交失败后,取消向所述控制线程发送所述第一通知消息。可选地,本公开实施例中,所述控制线程只对第一服务节点发送的即将提交所述第一阶段事务的第一提交信息进行存储。进一步地,所述控制线程还可以记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位,同样由所述控制线程和所述第二目标数据库对上述用户标识信息和所述标志位进行统一维护,以便确保数据回滚时数据的一致性。
所述控制线程在数据回滚时可以根据所述用户标识信息快速确定提交所述第一阶段事务失败的用户,并根据所述标志位快速定位之前所述第一阶段事务提交失败时对应的步骤,即可以快速确定所述第一服务节点在提交所述第一阶段事务失败时的失败原因。因此,本公开实施例在确定失败原因时,不需要对涉及到的每个数据库的日志进行分析,减少了事务提交失败时,分析错误原因的工作量,对资源占用和消耗均较少。且由所述控制线程和所述第二目标数据库对失败记录进行维护和集中管理,降低了维护难度。
上述实施例中,第一服务节点在执行完成分布式事务中的第一阶段事务且检测到成功提交所述第一阶段事务后,通知控制线程,以便所述控制线程可以通知第二服务节点开始执行所述分布式事务中的第二阶段事务。上述过程中所述第一服务节点在检测到成功提交所述第一阶段事务后向所述控制线程发送第一通知消息,简化了所述第一服务节点和所述控制线程之间交互的流程,不存在单点故障的问题,且涉及的请求数较少,对系统和网络资源的占用同样较少。
如图4所示,图4是根据一示例性实施例示出的另一种分布式事务处理方法,包括以下步骤:
在步骤203中,接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息。
本公开实施例中提供的方法可以用于控制线程,所述控制线程与支持数据库集群的第二目标数据库所在的终端绑定。可选地,所述第二目标数据为支持的数据库集群方案较好的redis数据库。
所述控制线程在接收所述第一通知消息之前,为了方便后续在提交失败后进行数据回滚,所述第一服务节点会在提交所述第一阶段事务之前,发送第一提交信息到所述控制线程。即所述方法如图5所示,图5是根据图4所示实施例的基础上示出的另一种分布式事务处理方法,在执行步骤203之前,还可以包括:
在步骤201中,接收所述第一服务节点在执行完成所述第一阶段事务后发送的即将提交所述第一阶段事务的第一提交信息。
本步骤中,所述第一服务节点在按照上述实施例提供的方法确定完成所述第一阶段事务后,发送即将提交所述第一阶段事务的所述第一提交信息到所述控制线程。
在步骤202中,存储所述第一提交信息。
本步骤中,可选地,步骤202如图6所示,图6是根据图5所示实施例的基础上示出的另一种分布式事务处理方法,可以包括:
在步骤202-1中,判断是否是首次接收到所述第一提交信息。
为了避免事务的重复提交,所述控制线程在接收到所述第一提交信息后,按照相关技术判断是否是首次接收到所述第一提交信息。如果是,则继续执行步骤202-2,否则结束当前事务。
假设所述第一阶段事务为付款事务,所述控制线程接收到所述第一提交信息后,判断不是首次接收到该信息,则说明用户之前已经完成了该付款事务,所述控制线程不应记录与该付款事务对应的提交信息,避免针对同一交易事务造成重复扣款的情况。
在步骤202-2中,对所述第一提交信息进行分布式存储。
本步骤中,所述控制线程在确定是首次接收到所述第一提交信息时,自动对所述第一提交信息进行分布式存储,有效避免事务性故障带来的数据丢失和数据不一致的问题。
所述控制线程在存储所述第一提交信息后,会接收到所述第一服务节点发送的所述第一通知消息,其中携带了指示成功提交所述第一阶段事务的第一检测结果。
在步骤204中,在接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务。
本步骤中,所述控制线程在接收到所述第一通知消息之后,可以先将之前存储的所述第一提交信息对应的状态修改为已成功,进而调用预先与所述第二服务节点建立的通知接口,通知所述第二服务节点可以开始执行所述第二阶段事务。
如果所述第一服务节点检测到提交所述第一阶段事务失败时,取消发送所述第一通知消息到所述控制线程,上述分布式事务处理方法如图7所示,图7是根据图5所示实施例的基础上示出的另一种分布式事务处理方法,在所述存储所述第一提交信息之后,还可以包括:
在步骤205中,记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
本步骤中,所述控制线程会记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中当前步骤的标志位,同样由所述控制线程和所述第二目标数据库对上述用户标识信息和所述标志位进行统一维护,以便确保数据回滚时数据的一致性。
所述控制线程在数据回滚时可以根据所述用户标识信息快速确定提交所述第一阶段事务失败的用户,并根据所述标志位快速定位之前所述第一阶段事务提交失败的步骤,即可以快速确定所述第一服务节点在提交所述第一阶段事务失败时的失败原因。因此,本公开实施例在确定失败原因时,不需要对涉及到的每个数据库的日志进行分析,减少了事务提交失败时,分析错误原因的工作量,对资源占用和消耗均较少。且由所述控制线程和所述第二目标数据库对失败记录进行维护和集中管理,降低了维护难度。
进一步地,所述控制线程调用预先与所述第二服务节点建立的所述通知接口,通知所述第二服务节点可以开始执行所述第二阶段事务之后,上述分布式事务处理方法如图8所示,图8是根据图4所示实施例的基础上示出的另一种分布式事务处理方法,还可以包括:
在步骤206中,接收所述第二服务节点在执行完成所述第二阶段事务后发送的即将提交所述第二阶段事务的第二提交信息。
本步骤中,所述第二服务节点通过所述通知接口接收到所述控制线程发送的通知所述第二服务节点可以开始执行所述第二阶段事务的通知信息后,开始执行所述第二阶段事务。在完成所述第二阶段事务后且即将提交所述第二阶段事务之前,发送所述第二提交信息到所述控制线程。
在步骤207中,存储所述第二提交信息。
本步骤中,所述控制线程同样在确定是首次接收到所述第二提交信息时,自动对所述第二提交信息进行分布式存储。
在步骤208中,接收所述第二服务节点发送的携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息。
本步骤中,所述控制线程在存储所述第二提交信息后,会接收到所述第一服务节点发送的所述第三通知消息,其中携带了指示成功提交所述第二阶段事务的第二检测结果。
在步骤209中,在接收到所述第三通知消息之后,将存储的所述第二提交信息对应的状态修改为已成功。
本步骤中,所述控制线程可以先将之前存储的所述第二提交信息对应的状态修改为已成功。
如果所述第二阶段事务提交失败,所述第二服务节点同样会取消向所述控制线程发送所述第三通知消息。此时所述控制线程同样可以记录与所述第二阶段事务对应的用户标识信息和标记所述第二阶段事务中的当前步骤的标志位,同样由所述控制线程和所述第二目标数据库对上述用户标识信息和所述标志位进行统一维护,以便确保数据回滚时数据的一致性。
可选地,上述分布式事务处理方法如图9所示,图9是根据图8所示实施例的基础上示出的另一种分布式事务处理方法,在完成步骤209之后,还可以包括:
在步骤210中,如果所述第一提交信息和所述第二提交信息对应的状态均为已成功,发布所述分布式事务成功提交的成功信息。
当所述第二阶段事务提交成功时,所述第一阶段事务必然已经提交成功,则所述控制线程在所述第一提交信息和所述第二提交信息对应的状态均为已成功时,可以对外发布所述分布式事务成功提交的成功信息。
上述实施例中,由所述控制线程和支持数据库集群的第二目标数据库对提交信息进行统一管理,可以在进行数据回滚时确保事务执行的可靠性和数据的一致性。进一步地,由于所述控制线程和所述第二目标数据库对所述提交信息进行了统一管理,容易维护,且不再涉及到每个阶段事务各自对应的数据库,数据隔离性好。且如果所述第一阶段事务提交失败,不需要对涉及到的每个数据库的日志进行分析,可以快速确定失败原因,减少了事务提交失败时,分析错误原因的工作量,对资源占用和消耗均较少。
如图10所示,图10是根据一示例性实施例示出的另一种分布式事务处理方法,介绍了第一服务节点、控制线程和第二服务节点之间的交互过程,其中所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群,所述控制线程与支持数据库集群的第二目标数据库所在的终端绑定,可选地所述第二目标数据库为redis数据库,所述方法可以包括以下步骤:
在步骤301中,第一服务节点在执行完成分布式事务中的第一阶段事务后,发送即将提交所述第一阶段事务的第一提交信息给控制线程。
本步骤中,为了方便后续在提交失败后进行数据回滚,所述第一服务节点在提交所述第一阶段事务之前会发送所述第一提交信息给所述控制线程。
在步骤302中,所述控制线程判断是否是首次接收到所述第一提交信息。
为了避免事务的重复提交,所述控制线程在接收到所述第一提交信息后,按照相关技术判断是否是首次接收到所述第一提交信息。如果是,则继续执行步骤303,否则结束当前事务。
在步骤303中,所述控制线程对所述第一提交信息进行分布式存储。
本步骤中,所述控制线程在确定是首次接收到所述第一提交信息时,自动对所述第一提交信息进行分布式存储,有效避免事务性故障带来的数据丢失和数据不一致的问题。
在步骤304中,所述控制线程记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
本步骤中,所述控制线程记录上述信息,以便在数据回滚时可以根据所述用户标识信息快速确定提交所述第一阶段事务失败的用户,并根据所述标志位快速定位之前所述第一阶段事务提交失败的步骤,即可以快速确定所述第一服务节点在提交所述第一阶段事务失败时的失败原因。
在步骤305中,所述第一服务节点检测是否成功提交所述第一阶段事务。
本步骤中,所述第一服务节点按照相关技术检测所述第一阶段事务是否成功提交。
在步骤306中,如果成功提交所述第一阶段事务,所述第一服务节点发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程。
如果所述第一阶段事务提交成功,则所述第一服务节点发送所述第一通知消息给所述控制线程,否则取消发送所述第一通知消息给所述控制线程。
在步骤307中,所述控制线程在接收到所述第一通知消息之后,将存储的所述第一提交信息对应的状态修改为已成功。
本步骤中,所述控制线程会将之前存储的所述第一提交信息对应的状态修改为已成功。
在步骤308中,所述控制线程调用预先与所述第二服务节点建立的通知接口,通知所述第二服务节点开始执行所述第二阶段事务。
在步骤309中,所述第二服务节点在执行完成分布式事务中的第二阶段事务后,发送即将提交所述第二阶段事务的第二提交信息到所述控制线程。
在步骤310中,所述控制线程判断是否是首次接收到所述第二提交信息。
为了避免事务的重复提交,所述控制线程在接收到所述第二提交信息后,按照相关技术判断是否是首次接收到所述第二提交信息。如果是,则继续执行步骤311,否则结束当前事务。
在步骤311中,所述控制线程对所述第二提交信息进行分布式存储。
在步骤312中,所述控制线程记录与所述第二阶段事务对应的用户标识信息和标记所述第二阶段事务中的当前步骤的标志位。
本步骤中,所述控制线程记录上述信息,以便在数据回滚时可以根据所述用户标识信息快速确定提交所述第二阶段事务失败的用户,并根据所述标志位快速定位之前所述第二阶段事务提交失败的步骤,即可以快速确定所述第二服务节点在提交所述第二阶段事务失败时的失败原因。
在步骤313中,所述第二服务节点检测是否成功提交所述第二阶段事务。
在步骤314中,如果成功提交所述第二阶段事务,所述第二服务节点发送携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息给所述控制线程。
如果所述第二阶段事务提交成功,所述第二服务节点发送所述第三通知消息给所述控制线程,否则取消发送所述第三通知消息给所述控制线程。
在步骤315中,所述控制线程在接收到所述第三通知消息之后,将存储的所述第二提交信息对应的状态修改为已成功。
在步骤316中,所述控制线程发布所述分布式事务成功提交的成功信息。
本步骤中,所述控制线程在所述第一阶段事务和所述第二阶段事务均提交成功时,即所述第一提交信息和所述第二提交信息对应的状态均为已成功时,所述控制线程可以对外发布所述分布式事务成功提交的成功信息。
上述实施例中,控制线程与支持数据库集群的第二目标数据库所在的终端绑定,其中所述第二目标数据库可以是redis数据库,具备高可用性。由redis数据库统一管理服务节点提交的提交信息,保证数据一致性及事务的可靠性,且可以保证数据的安全性,具备高可用性。
其中,第一服务节点可以在检测是否成功提交第一阶段事务之前,先发送即将提交所述第一阶段事务的第一提交信息给控制线程,以使所述控制线程存储所述第一提交信息。本公开实施例中,由所述控制线程和支持数据库集群的第二目标数据库对所述第一提交信息进行统一管理,可以在进行数据回滚时确保事务执行的可靠性和数据的一致性。进一步地,由于所述控制线程和所述第二目标数据库对所述第一提交信息进行了统一管理,容易维护,且不再涉及到每个阶段事务各自对应的数据库,数据隔离性好。且如果所述第一提交信息指示所述第一阶段事务提交失败,不需要对涉及到的每个数据库的日志进行分析,可以快速确定失败原因,减少了事务提交失败时,分析错误原因的工作量,对资源占用和消耗均较少。
另外,控制线程会在接收到第一服务节点发送的第一提交信息后,判断是否是首次接收到所述第一提交信息、所述控制线程只在首次接收到所述第一提交信息后,存储所述第一提交信息,避免事务的重复提交。控制线程还可以在存储所述第一提交信息后,记录与该阶段事务对应的用户标识信息和标记该阶段事务中的当前步骤的标志位,以便确保数据回滚时数据的一致性。
与前述方法实施例相对应,本公开还提供了装置的实施例。
如图11所示,图11是本公开根据一示例性实施例示出的一种分布式事务处理装置框图,所述装置用于第一服务节点,所述第一服务节点对应第一服务器集群和第一数据库集群,包括:提交模块410、检测模块420和第一发送模块430。
其中,所述提交模块410,被配置为在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
所述检测模块420,被配置为检测所述提交模块410是否成功提交所述第一阶段事务;
所述第一发送模块430,被配置为如果所述检测模块420检测到成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
如图12所示,图12是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图11所示实施例的基础上,所述装置还包括:第二发送模块440。
其中,所述第二发送模块440,被配置为在所述提交模块410提交所述第一阶段事务之前,发送即将提交所述第一阶段事务的第一提交信息给所述控制线程,以使所述控制线程存储所述第一提交信息。
如图13所示,图13是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图11所示实施例的基础上,所述提交模块410包括:发送子模块411、接收子模块412和确定子模块413。
其中,所述发送子模块411,被配置为向所述第一数据库集群中的第一目标数据库发送数据库操作请求,以使所述第一目标数据库执行根据所述数据库操作请求执行相应的数据库操作;
所述接收子模块412,被配置为接收所述第一目标数据库返回的携带表征所述数据库操作是否成功的执行结果的第二通知消息;
所述确定子模块413,被配置为如果所述接收子模块412接收到的所述第二通知消息中携带的所述执行结果指示所述数据库操作成功,确定执行完成分布式事务中的第一阶段事务。
如图14所示,图14是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,所述装置用于终端,所述终端设置有控制线程和支持数据库集群的第二目标数据库,包括:第一接收模块510和通知模块520。
其中,所述第一接收模块510,被配置为接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
所述通知模块520,被配置为在所述第一接收模块510接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
如图15所示,图15是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图14所示实施例的基础上,所述装置还包括:第二接收模块530和第一存储模块540。
其中,所述第二接收模块530,被配置为在所述第一接收模块510接收所述第一通知消息之前,接收所述第一服务节点在执行完成所述第一阶段事务后发送的即将提交所述第一阶段事务的第一提交信息;
所述第一存储模块540,被配置为存储所述第二接收模块530接收到的所述第一提交信息。
如图16所示,图16是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图15所示实施例的基础上,所述第一存储模块540包括:判断子模块541和存储子模块542。
其中,所述判断子模块541,被配置为判断所述第二接收模块530是否是首次接收到所述第一提交信息;
所述存储子模块542,被配置为如果所述判断子模块541确定所述第二接收模块530是首次接收到所述第一提交信息,对所述第一提交信息进行分布式存储。
如图17所示,图17是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图16所示实施例的基础上,所述通知模块520包括:通知子模块521。
其中,所述通知子模块521,被配置为在所述第一接收模块510接收到所述第一通知消息之后,将存储的所述第一提交信息对应的状态修改为已成功之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务。
如图18所示,图18是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图17所示实施例的基础上,所述通知子模块521包括:通知单元5211。
其中,所述通知单元5211,被配置为在所述第一接收模块510接收到所述第一通知消息之后,调用预先与第二服务节点建立的通知接口通知所述第二服务节点开始执行所述分布式事务中的第二阶段事务。
如图19所示,图19是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图15所示实施例的基础上,所述装置还包括:记录模块550。
记录模块550,被配置为在所述第一存储模块540存储所述第一提交信息之后,记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
如图20所示,图20是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图14至图19任一所示实施例的基础上,所述装置还包括:第三接收模块560、第二存储模块570、第四接收模块580和修改模块590。
其中,所述第三接收模块560,被配置为在所述通知模块520通知所述第二服务节点开始执行所述第二阶段事务之后,接收所述第二服务节点在执行完成所述第二阶段事务后发送的即将提交所述第二阶段事务的第二提交信息;
所述第二存储模块570,被配置为存储所述第三接收模块560接收的所述第二提交信息;
所述第四接收模块580,被配置为接收所述第二服务节点发送的携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息;
所述修改模块590,被配置为在所述第四接收模块580接收到所述第三通知消息之后,将所述第二存储模块570存储的所述第二提交信息对应的状态修改为已成功。
如图21所示,图21是本公开根据一示例性实施例示出的另一种分布式事务处理装置框图,该实施例在前述图20所示实施例的基础上,所述装置还包括:发布模块610。
其中,所述发布模块610,被配置为如果所述第一存储模块540存储的所述第一提交信息和所述第二存储模块570存储的所述第二提交信息对应的状态均为已成功,发布所述分布式事务成功提交的成功信息。
可选地,所述第二目标数据库是redis数据库。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本公开还提供一种分布式事务处理装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测是否成功提交所述第一阶段事务;
如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
如图22所示,图22是根据一示例性实施例示出的另一种用于分布式事务处理装置2200的一结构示意图。例如,装置2200可以被提供为服务节点。参照图22,装置2200包括处理组件2222,其进一步包括一个或多个处理器,以及由存储器2232所代表的存储器资源,用于存储可由处理组件2222的执行的指令,例如应用程序。存储器2232中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件2222被配置为执行指令,以执行上述控制智能家居设备的方法。
装置2200还可以包括一个电源组件2226被配置为执行装置2200的电源管理,一个有线或无线网络接口2250被配置为将装置2200连接到网络,和一个输入输出(I/O)接口2258。装置2200可以操作基于存储在存储器2232的操作系统,例如WindowsServerTM,MacOSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。
相应的,本公开还提供一种分布式事务处理装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
在接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
如图23所示,图23是本公开根据一示例性实施例示出的一种分布式事务处理装置2300的结构示意图。例如,装置2300可以是终端,可以具体为移动电话,计算机,数字广播终端,消息收发设备,智能插座,智能血压计,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图23,装置2300可以包括以下一个或多个组件:处理组件2302,存储器2304,电源组件2306,多媒体组件2308,音频组件2310,输入/输出(I/O)的接口2312,传感器组件2314,以及通信组件2316。
处理组件2302通常控制装置2300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件2302可以包括一个或多个处理器2320来执行指令,以完成上述的方法的全部或者部分步骤。此外,处理组件2302可以包括一个或者多个模块,便于处理组件2302和其他组件之间的交互。例如,处理组件2302可以包括多媒体模块,以方便多媒体组件2308和处理组件2302之间的交互。
存储器2304被配置为存储各种类型的数据以支持在装置2300的操作。这些数据的示例包括用于在装置2300上操作的任何应用程序或者方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器2304可以由任何类型的易失性或者非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或者光盘。
电源组件2306为装置2300的各种组件提供电力。电源组件2306可以包括电源管理系统,一个或者多个电源,及其他与为装置2300生成、管理和分配电力相关联的组件。
多媒体组件2308包括在所述装置2300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或者多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或者滑动动作的边界,而且还检测与所述触摸或者滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件2308包括一个前置摄像头和/或后置摄像头。当装置2300处于操作模式,如拍摄模式或者视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或者具有焦距和光学变焦能力。
音频组件2310被配置为输出和/或输入音频信号。例如,音频组件2310包括一个麦克风(MIC),当装置2300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器2304或者经由通信组件2316发送。在一些实施例中,音频组件2310还包括一个扬声器,用于输出音频信号。
I/O接口2312为处理组件2302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件2314包括一个或者多个传感器,用于为装置2300提供各个方面的状态评估。例如,传感器组件2314可以检测到装置23100的打开/关闭状态,组件的相对定位,例如所述组件为装置2300的显示器和小键盘,传感器组件2314还可以检测装置2300或者装置2300一个组件的位置改变,用户与装置2300接触的存在或者不存在,装置2300方位或加速/减速和装置2300的温度变化。传感器组件2314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件2314还可以包括光传感器,如CMOS或者CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件2314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器,微波传感器或者温度传感器。
通信组件2316被配置为便于装置2300和其他设备之间有线或者无线方式的通信。装置2300可以接入基于通信标准的无线网络,如WiFi,2G或者3G,或者它们的组合。在一个示例性实施例中,通信组件2316经由广播信道接收来自外部广播管理系统的广播信号或者广播相关信息。在一个示例性实施例中,所述通信组件2316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置2300可以被一个或者多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或者其他电子元件实现,用于执行上述方法。在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器2304,上述指令可由装置2300的处理器2320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
如图24所示,图24是本公开根据一示例性实施例示出的一种分布式事务处理系统框图,该系统可以包括,第一服务节点2410,即图11至图13任一所示的分布式事务处理装置;第二服务节点2420;终端2430,即图14至图21任一所示的分布式事务处理装置。
如图25所示,图25是本公开根据一示例性实施例示出的另一种分布式事务处理系统的框图,该系统包括图22所示的第一服务节点2510、第二服务节点2520、图23所示的终端2530。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或者惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

Claims (28)

1.一种分布式事务处理方法,其特征在于,所述方法用于第一服务节点,所述第一服务节点对应第一服务器集群和第一数据库集群;
所述方法包括:
在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测是否成功提交所述第一阶段事务;
如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
2.根据权利要求1所述的方法,其特征在于,在所述提交所述第一阶段事务之前,所述方法还包括:
发送即将提交所述第一阶段事务的第一提交信息给所述控制线程,以使所述控制线程存储所述第一提交信息。
3.根据权利要求1所述的方法,其特征在于,采用以下方式确定执行完成分布式事务中的第一阶段事务:
向所述第一数据库集群中的第一目标数据库发送数据库操作请求,以使所述第一目标数据库根据所述数据库操作请求执行相应的数据库操作;
接收所述第一目标数据库返回的携带表征所述数据库操作是否成功的执行结果的第二通知消息;
如果所述执行结果指示所述数据库操作成功,确定执行完成分布式事务中的第一阶段事务。
4.一种分布式事务处理方法,其特征在于,所述方法用于控制线程,所述控制线程与支持数据库集群的第二目标数据库所在的终端绑定;
所述方法包括:
接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
在接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
5.根据权利要求4所述的方法,其特征在于,在所述接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息之前,所述方法还包括:
接收所述第一服务节点在执行完成所述第一阶段事务后发送的即将提交所述第一阶段事务的第一提交信息;
存储所述第一提交信息。
6.根据权利要求5所述的方法,其特征在于,所述存储所述第一提交信息,包括:
判断是否是首次接收到所述第一提交信息;
如果是首次接收到所述第一提交信息,对所述第一提交信息进行分布式存储。
7.根据权利要求6所述的方法,其特征在于,所述通知第二服务节点开始执行所述分布式事务中的第二阶段事务,包括:
在将存储的所述第一提交信息对应的状态修改为已成功之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务。
8.根据权利要求7所述的方法,其特征在于,所述通知第二服务节点开始执行所述分布式事务中的第二阶段事务,包括:
调用预先与第二服务节点建立的通知接口通知所述第二服务节点开始执行所述分布式事务中的第二阶段事务。
9.根据权利要求5所述的方法,其特征在于,在所述存储所述第一提交信息之后,所述方法还包括:
记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
10.根据权利要求4-9任一项所述的方法,其特征在于,所述通知第二服务节点开始执行所述分布式事务中的第二阶段事务之后,所述方法还包括:
接收所述第二服务节点在执行完成所述第二阶段事务后发送的即将提交所述第二阶段事务的第二提交信息;
存储所述第二提交信息;
接收所述第二服务节点发送的携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息;
在接收到所述第三通知消息之后,将存储的所述第二提交信息对应的状态修改为已成功。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
如果所述第一提交信息和所述第二提交信息对应的状态均为已成功,发布所述分布式事务成功提交的成功信息。
12.根据权利要求4所述的方法,其特征在于,所述第二目标数据库是redis数据库。
13.一种分布式事务处理装置,其特征在于,所述装置用于第一服务节点,所述第一服务节点对应第一服务器集群和第一数据库集群;
所述装置包括:
提交模块,被配置为在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测模块,被配置为检测所述提交模块是否成功提交所述第一阶段事务;
第一发送模块,被配置为如果所述检测模块检测到成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第二发送模块,被配置为在所述提交模块提交所述第一阶段事务之前,发送即将提交所述第一阶段事务的第一提交信息给所述控制线程,以使所述控制线程存储所述第一提交信息。
15.根据权利要求13所述的装置,其特征在于,所述提交模块包括:
发送子模块,被配置为向所述第一数据库集群中的第一目标数据库发送数据库操作请求,以使所述第一目标数据库根据所述数据库操作请求执行相应的数据库操作;
接收子模块,被配置为接收所述第一目标数据库返回的携带表征所述数据库操作是否成功的执行结果的第二通知消息;
确定子模块,被配置为如果所述接收子模块接收到的所述第二通知消息中携带的所述执行结果指示所述数据库操作成功,确定执行完成分布式事务中的第一阶段事务。
16.一种分布式事务处理装置,其特征在于,所述装置用于终端,所述终端设置有控制线程和支持数据库集群的第二目标数据库;
所述装置包括:
第一接收模块,被配置为接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
通知模块,被配置为在所述第一接收模块接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:
第二接收模块,被配置为在所述第一接收模块接收所述第一通知消息之前,接收所述第一服务节点在执行完成所述第一阶段事务后发送的即将提交所述第一阶段事务的第一提交信息;
第一存储模块,被配置为存储所述第二接收模块接收到的所述第一提交信息。
18.根据权利要求17所述的装置,其特征在于,所述第一存储模块包括:
判断子模块,被配置为判断所述第二接收模块是否是首次接收到所述第一提交信息;
存储子模块,被配置为如果所述判断子模块确定所述第二接收模块是首次接收到所述第一提交信息,对所述第一提交信息进行分布式存储。
19.根据权利要求18所述的装置,其特征在于,所述通知模块包括:
通知子模块,被配置为在所述第一接收模块接收到所述第一通知消息之后,将存储的所述第一提交信息对应的状态修改为已成功,通知第二服务节点开始执行所述分布式事务中的第二阶段事务。
20.根据权利要求19所述的装置,其特征在于,所述通知子模块包括:
通知单元,被配置为在所述第一接收模块接收到所述第一通知消息之后,调用预先与第二服务节点建立的通知接口通知所述第二服务节点开始执行所述分布式事务中的第二阶段事务。
21.根据权利要求17所述的装置,其特征在于,所述装置还包括:
记录模块,被配置为在所述第一存储模块存储所述第一提交信息之后,记录与所述第一阶段事务对应的用户标识信息和标记所述第一阶段事务中的当前步骤的标志位。
22.根据权利要求16-21任一项所述的装置,其特征在于,所述装置还包括:
第三接收模块,被配置为在所述通知模块通知所述第二服务节点开始执行所述第二阶段事务之后,接收所述第二服务节点在执行完成所述第二阶段事务后发送的即将提交所述第二阶段事务的第二提交信息;
第二存储模块,被配置为存储所述第三接收模块接收的所述第二提交信息;
第四接收模块,被配置为接收所述第二服务节点发送的携带指示成功提交所述第二阶段事务的第二检测结果的第三通知消息;
修改模块,被配置为在所述第四接收模块接收到所述第三通知消息之后,将所述第二存储模块存储的所述第二提交信息对应的状态修改为已成功。
23.根据权利要求22所述的装置,其特征在于,所述装置还包括:
发布模块,被配置为如果所述第一存储模块存储的所述第一提交信息和所述第二存储模块存储的所述第二提交信息对应的状态均为已成功,发布所述分布式事务成功提交的成功信息。
24.根据权利要求16所述的装置,其特征在于,所述第二目标数据库是redis数据库。
25.一种分布式事务处理装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
在执行完成分布式事务中的第一阶段事务后,提交所述第一阶段事务;
检测是否成功提交所述第一阶段事务;
如果成功提交所述第一阶段事务,发送携带指示成功提交所述第一阶段事务的第一检测结果的第一通知消息给控制线程,以使所述控制线程在接收到所述第一通知消息之后,通知对应第二服务器集群和第二数据库集群的第二服务节点开始执行所述分布式事务中的第二阶段事务。
26.一种分布式事务处理装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收第一服务节点发送的携带指示成功提交分布式事务中的第一阶段事务的第一检测结果的第一通知消息;
在接收到所述第一通知消息之后,通知第二服务节点开始执行所述分布式事务中的第二阶段事务;
其中,所述第一服务节点对应第一服务器集群和第一数据库集群,所述第二服务节点对应第二服务器集群和第二数据库集群。
27.一种分布式事务处理系统,其特征在于,包括:第一服务节点、第二服务节点和终端;
所述第一服务节点包括权利要求13-15任一项所述的装置;
所述终端设置有控制线程和支持数据库集群的第二目标数据库,且所述终端包括权利要求16-24任一项所述的装置。
28.一种分布式事务处理系统,其特征在于,包括:第一服务节点、第二服务节点和终端;
所述第一服务节点包括权利要求25所述的装置;
所述终端设置有控制线程和支持数据库集群的第二目标数据库,且所述终端包括权利要求26所述的装置。
CN201610105564.0A 2016-02-25 2016-02-25 分布式事务处理方法、装置及系统 Pending CN105786594A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610105564.0A CN105786594A (zh) 2016-02-25 2016-02-25 分布式事务处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610105564.0A CN105786594A (zh) 2016-02-25 2016-02-25 分布式事务处理方法、装置及系统

Publications (1)

Publication Number Publication Date
CN105786594A true CN105786594A (zh) 2016-07-20

Family

ID=56403754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610105564.0A Pending CN105786594A (zh) 2016-02-25 2016-02-25 分布式事务处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN105786594A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109472546A (zh) * 2018-10-12 2019-03-15 深圳壹账通智能科技有限公司 一种分布式事务处理的智能监控方法及服务器
CN109886795A (zh) * 2019-01-15 2019-06-14 网联清算有限公司 跨机房分布式对账处理方法及装置
CN110471746A (zh) * 2019-08-22 2019-11-19 中国工商银行股份有限公司 一种分布式事务回调方法、装置及系统
CN111737273A (zh) * 2020-06-02 2020-10-02 北京人大金仓信息技术股份有限公司 事务提交方法、装置、协调节点及存储介质
CN112579637A (zh) * 2020-12-15 2021-03-30 深圳市汉云科技有限公司 一种sql语句执行方法、系统、终端及介质
CN112817704A (zh) * 2019-11-15 2021-05-18 北京沃东天骏信息技术有限公司 分布式柔性事务处理方法及装置、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364997A (zh) * 2008-10-09 2009-02-11 阿里巴巴集团控股有限公司 基于网络的分布式事务处理方法和系统
CN102073540A (zh) * 2010-12-15 2011-05-25 北京新媒传信科技有限公司 分布式事务提交方法和装置
CN103514028A (zh) * 2012-06-14 2014-01-15 北京新媒传信科技有限公司 一种处理分布式事务的方法和装置
US20150120645A1 (en) * 2013-10-31 2015-04-30 Futurewei Technologies, Inc. System and Method for Creating a Distributed Transaction Manager Supporting Repeatable Read Isolation level in a MPP Database

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101364997A (zh) * 2008-10-09 2009-02-11 阿里巴巴集团控股有限公司 基于网络的分布式事务处理方法和系统
CN102073540A (zh) * 2010-12-15 2011-05-25 北京新媒传信科技有限公司 分布式事务提交方法和装置
CN103514028A (zh) * 2012-06-14 2014-01-15 北京新媒传信科技有限公司 一种处理分布式事务的方法和装置
US20150120645A1 (en) * 2013-10-31 2015-04-30 Futurewei Technologies, Inc. System and Method for Creating a Distributed Transaction Manager Supporting Repeatable Read Isolation level in a MPP Database

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109472546A (zh) * 2018-10-12 2019-03-15 深圳壹账通智能科技有限公司 一种分布式事务处理的智能监控方法及服务器
CN109886795A (zh) * 2019-01-15 2019-06-14 网联清算有限公司 跨机房分布式对账处理方法及装置
CN110471746A (zh) * 2019-08-22 2019-11-19 中国工商银行股份有限公司 一种分布式事务回调方法、装置及系统
CN110471746B (zh) * 2019-08-22 2022-04-19 中国工商银行股份有限公司 一种分布式事务回调方法、装置及系统
CN112817704A (zh) * 2019-11-15 2021-05-18 北京沃东天骏信息技术有限公司 分布式柔性事务处理方法及装置、存储介质及电子设备
CN111737273A (zh) * 2020-06-02 2020-10-02 北京人大金仓信息技术股份有限公司 事务提交方法、装置、协调节点及存储介质
CN112579637A (zh) * 2020-12-15 2021-03-30 深圳市汉云科技有限公司 一种sql语句执行方法、系统、终端及介质

Similar Documents

Publication Publication Date Title
CN105786594A (zh) 分布式事务处理方法、装置及系统
CN102404444B (zh) 移动终端、电子系统以及使用其传送和接收数据的方法
KR102198778B1 (ko) 통지 메시지를 연관시키는 방법, 장치 및 이동 단말
CN104427074B (zh) 一种显示来电信息的方法、装置和系统
KR101818961B1 (ko) 컨텐츠 전송 방법 및 상기 방법을 채용한 기기, 서버
CN105635266B (zh) 用于上报数据的方法、装置及终端
KR20150009064A (ko) 데이터 처리 방법 및 그 전자 장치
CN105516270A (zh) 信息推送方法及装置
CN106231093A (zh) 闹钟提醒方法及装置
CN107370772A (zh) 账号登录方法、装置及计算机可读存储介质
CN107040591A (zh) 一种对客户端进行控制的方法及装置
CN105099841A (zh) 消息的发送方法、装置、终端及路由器
CN105162193A (zh) 终端的充电方法、装置及终端
CN105487886A (zh) 加载插件的方法及装置
CN108702412A (zh) 一种显示方法及装置
CN106504050A (zh) 一种信息比对装置及方法
CN106528735A (zh) 控制浏览器播放媒体资源的方法及装置
CN109684406A (zh) 跨机房的redis集群备份数据的方法、装置、设备及存储介质
CN106128440A (zh) 一种歌词显示处理方法、装置、终端设备及系统
CN106709788A (zh) 网络订单处理方法及装置
CN104683562A (zh) 移动终端及其控制方法
KR20140118111A (ko) 전자 장치에서 데이터를 공유하기 위한 방법
CN109951701A (zh) 监控故障处理方法及装置
CN105530129A (zh) 路由器重置方法及装置
CN107463419A (zh) 应用重启方法、装置及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160720