CN118113422A - 分布式事务处理方法、装置、计算机设备和存储介质 - Google Patents

分布式事务处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN118113422A
CN118113422A CN202211506276.8A CN202211506276A CN118113422A CN 118113422 A CN118113422 A CN 118113422A CN 202211506276 A CN202211506276 A CN 202211506276A CN 118113422 A CN118113422 A CN 118113422A
Authority
CN
China
Prior art keywords
transaction
transaction request
target
request
request group
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
CN202211506276.8A
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.)
Tencent Technology Shanghai Co Ltd
Original Assignee
Tencent Technology Shanghai 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 Tencent Technology Shanghai Co Ltd filed Critical Tencent Technology Shanghai Co Ltd
Priority to CN202211506276.8A priority Critical patent/CN118113422A/zh
Publication of CN118113422A publication Critical patent/CN118113422A/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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种分布式事务处理方法、装置、计算机设备和存储介质。涉及到分布式事务领域,包括:接收多个事务请求;所述多个事务请求均对应同一目标事务标识,所述目标事务标识用于指示所述多个事务请求属于同一事务;所述多个事务请求中至少两个事务请求所请求访问的数据源节点不同;确定所述事务请求所请求访问的目标数据源节点,将所述事务请求加入至所述目标事务标识下相应的事务请求组中;所述相应的事务请求组用于存储请求访问目标数据源节点的事务请求;目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求;将目标事务标识下的各事务请求组发送至对应的数据源节点。采用本方法能够提高处理分布式事务的效率。

Description

分布式事务处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种分布式事务处理方法、装置、计算机设备和存储介质。
背景技术
随着云计算和互联网行业的发展,分布式系统的应用越来越广泛。分布式事务是分布式系统必不可少的组成部分。分布式事务通常与数据源相关,例如与数据库相关,例如可以是修改数据库中的数据的分布式事务。
传统技术中,受限于数据库事务时长限制,如果一个事务的执行时间过长,导致整体事务执行时长过长,容易因为数据库对于事务的时长限制而导致失败,从而导致事务的处理效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升事务处理效率的分布式事务处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
一方面,本申请提供了一种分布式事务处理方法。所述方法包括:接收多个事务请求;所述多个事务请求均对应同一目标事务标识,所述目标事务标识用于指示所述多个事务请求属于同一事务;所述多个事务请求中至少两个事务请求所请求访问的数据源节点不同;针对每个所述事务请求,确定所述事务请求所请求访问的目标数据源节点,将所述事务请求加入至所述目标事务标识下相应的事务请求组中;所述相应的事务请求组用于存储请求访问所述目标数据源节点的事务请求;所述目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求;将所述目标事务标识下的各事务请求组发送至对应的数据源节点;所述事务请求组用于指示对应的数据源节点处理所述事务请求组中的事务请求。
另一方面,本申请还提供了一种分布式事务处理装置。所述装置包括:请求接收模块,用于接收多个事务请求;所述多个事务请求均对应同一目标事务标识,所述目标事务标识用于指示所述多个事务请求属于同一事务;所述多个事务请求中至少两个事务请求所请求访问的数据源节点不同;请求分组模块,用于针对每个所述事务请求,确定所述事务请求所请求访问的目标数据源节点,将所述事务请求加入至所述目标事务标识下相应的事务请求组中;所述相应的事务请求组用于存储请求访问所述目标数据源节点的事务请求;所述目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求;请求发送模块,用于将所述目标事务标识下的各事务请求组发送至对应的数据源节点;所述事务请求组用于指示对应的数据源节点处理所述事务请求组中的事务请求。
在一些实施例中,所述请求发送模块,还用于基于各所述事务请求组中的事务请求的发起时间,确定各所述事务请求组分别对应的发送顺序;按照各所述事务请求组分别对应的发送顺序,将各所述事务请求组发送至对应的数据源节点。
在一些实施例中,所述请求发送模块,还用于基于各所述事务请求组中的事务请求的发起时间,确定各所述事务请求组分别对应的最早发起时间;确定各所述事务请求组分别对应的请求组标识;基于各所述事务请求组的请求组标识和最早发起时间,确定各所述事务请求组分别对应的发送顺序。
在一些实施例中,所述请求分组模块,还用于在所述目标事务标识下存在所述目标数据源节点对应的事务请求组的情况下,将所述事务请求加入所述目标数据源节点对应的事务请求组中;在所述目标事务标识下不存在所述目标数据源节点对应的事务请求组的情况下,在所述目标事务标识下创建所述目标数据源节点对应的事务请求组,将所述事务请求加入创建的所述目标数据源节点对应的事务请求组中。
在一些实施例中,所述装置还用于接收所述数据源节点返回的针对当前处理的事务请求组的处理结果;在基于所述处理结果确定所述当前处理的事务请求组执行失败的情况下,利用所述数据源节点的回滚策略对所述当前处理的事务请求组进行回滚处理。
在一些实施例中,所述事务请求还对应有事件标识;所述事件标识对应有预设回滚策略;所述装置还用于在基于所述处理结果确定所述当前处理的事务请求组执行失败的情况下,确定各所述事务请求组中已执行成功的事务请求组;确定所述已执行成功的事务请求组中各事务请求分别对应的事件标识;利用确定出的各事件标识分别对应的预设回滚策略,对所述已执行成功的事务请求组进行回滚处理。
在一些实施例中,所述事务请求包括结构化查询语句以及所述结构化查询语句的注释,所述结构化查询语句的注释中包括事务标识,所述装置还用于从所述事务请求中确定所述结构化查询语句的注释;从确定到的所述结构化查询语句的注释中提取事务标识,得到所述事务请求对应的目标事务标识。
在一些实施例中,所述装置还用于接收所述事务请求对应的事务信息;所述事务信息包括事务标识和所述事务请求的标识;从所述事务信息中提取事务标识,得到所述事务请求对应的目标事务标识。
在一些实施例中,所述请求接收模块,还用于响应于第一微服务节点发送的事务发起请求,生成目标事务标识;将所述目标事务标识返回至所述第一微服务节点;所述第一微服务节点将所述目标事务标识传递至第二微服务节点;所述第一微服务节点和所述第二微服务节点属于同一业务系统;所述业务系统属于分布式系统;接收所述第一微服务节点和所述第二微服务节点分别发送的携带所述目标事务标识的事务请求。
在一些实施例中,所述方法由数据网关执行,所述请求发送模块,还用于接收携带所述目标事务标识的事务提交请求;在确定所述事务提交请求是由所述第一微服务节点发送的情况下,将所述目标事务标识下各事务请求组发送至对应的数据源节点;所述第一微服务节点在确定所述目标事务标识对应的各事务请求均发送至所述数据网关的情况下,向所述数据网关发送携带所述目标事务标识的事务提交请求。
在一些实施例中,所述事务发起请求是所述第一微服务节点响应于交互请求发送的,所述交互请求是终端响应于目标应用中的交互操作触发的;所述装置还用于在确定所述目标事务标识下各事务请求组均提交成功的情况下,向所述第一微服务节点返回用于指示事务提交成功的消息,以使得所述第一微服务节点向所述终端返回请求成功提示信息。
另一方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述分布式事务处理方法中的步骤。
另一方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述分布式事务处理方法中的步骤。
另一方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述分布式事务处理方法中的步骤。
上述分布式事务处理方法、装置、计算机设备、存储介质和计算机程序产品,接收多个事务请求,由于该多个事务请求均对应同一目标事务标识,该同一目标事务标识用于指示该多个事务请求属于同一事务,该多个事务请求中至少两个事务请求所请求访问的数据源节点不同,因此,该同一事务为数据源节点为至少两个的情况下的分布式事务,针对每个事务请求,确定事务请求所请求访问的目标数据源节点,将事务请求加入至目标事务标识下相应的事务请求组中,该相应的事务请求组用于存储请求访问该目标数据源节点的事务请求,由于目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求,从而将同一分布式事务的事务请求按照数据源节点进行分组,从而将目标事务标识下的各事务请求组发送至对应的数据源节点,以使得对应的数据源节点处理处理对应的事务请求组中的事务请求,从而可以对同一数据源节点的事务请求进行集中处理,缩短了事务处理的时间,提升了在数据源节点为至少两个的情况下的处理事务请求的效率,从而提升了事务的处理效率。
附图说明
图1为一些实施例中分布式事务处理方法的应用环境图;
图2为一些实施例中分布式事务处理方法的流程示意图;
图3为一些实施例中事务请求分组的示意图;
图4为一些实施例中分布式事务处理方法的应用环境图;
图5为一些实施例中分布式事务处理方法的时序图;
图6为一些实施例中分布式事务处理方法的流程示意图;
图7为一些实施例中分布式事务处理方法的时序图;
图8为一些实施例中分布式事务处理装置的结构框图;
图9为一些实施例中计算机设备的内部结构图;
图10为一些实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的分布式事务处理方法,可以应用于如图1所示的应用环境中,该应用环境包括终端102、业务系统104、数据网关106和多个数据源节点即数据源节点108_1~108_m。其中,终端102、业务系统104、数据网关106和多个数据源节点即数据源节点108_1~108_m通过网络进行通信。数据存储系统可以存储数据网关106需要处理的数据。数据存储系统可以集成在数据网关106上,也可以放在云上或其他服务器上。其中,数据网关106是用于接收和分发业务系统104与数据源节点之间的数据请求的服务群。负责以下任务:1、负责协调分布式系统的数据请求,针对事务请求进行事务分组的创建、执行和回滚操作;针对非事务的请求则透传至不同数据源;2、负责处理分布式系统的请求结果,针对事务请求进行结果处理,成功则正常返回,失败则根据配置执行对应的回滚操作;针对非事务请求则直接返回结果。
具体地,数据网关106接收业务系统104发送的多个事务请求,多个事务请求均对应同一目标事务标识,目标事务标识用于指示多个事务请求属于同一事务,多个事务请求中至少两个事务请求所请求访问的数据源节点不同,针对每个事务请求,确定事务请求所请求访问的目标数据源节点,将事务请求加入至目标事务标识下相应的事务请求组中,相应的事务请求组用于存储请求访问目标数据源节点的事务请求,目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求,将目标事务标识下的各事务请求组发送至对应的数据源节点,事务请求组用于指示对应的数据源节点处理事务请求组中的事务请求。其中,事务请求可以是业务系统104响应于终端102发送的请求所触发发送的。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。业务系统104、数据网关106和各数据源节点可以分别用独立的服务器或者是多个服务器组成的服务器集群来实现,还可以是云服务器,云服务器用于提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务。当然,各数据源节点也可以属于同一个服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一些实施例中,如图2所示,提供了一种分布式事务处理方法,以该方法应用于图1中的数据网关106为例进行说明,包括以下步骤:
步骤202,接收多个事务请求;多个事务请求均对应同一目标事务标识,目标事务标识用于指示多个事务请求属于同一事务;多个事务请求中至少两个事务请求所请求访问的数据源节点不同。
其中,多个事务请求是指至少两个事务请求。该多个事务请求是由业务系统发送的,可以是由业务系统同时发送的或者由业务系统在不同时间分别发送的。
事务标识即事务ID(Identity document)用于唯一标识一个事务,目标事务标识可以是用于唯一标识任一事务的事务标识。该多个事务请求均对应同一目标事务标识,目标事务标识用于指示多个事务请求属于同一事务。多个事务请求中至少两个事务请求所请求访问的数据源节点不同。
数据源节点是指数据存储系统所部署于的设备,数据存储系统例如为数据库,不同的数据源节点部署不同的数据库,例如,一个数据源节点部署的是数据库1,另一个数据源节点部署的是数据库2。各数据源节点可以分别用独立的服务器或者是多个服务器组成的服务器集群来实现,或者,各数据源节点也可以属于同一个服务器。多个事务请求中至少两个事务请求所请求访问的数据源节点不同,例如,一个事务请求所请求访问的是数据库1,另外一个事务请求所请求访问的是数据库2。
具体地,事务请求中可以携带目标事务标识,事务请求可以包括结构化查询语句以及事务通信协议,事务通信协议用于存储于事务先关的信息即存储事务信息,事务信息包括事务标识,事务信息还可以包括事务标识之外的其他的与事务相关的信息。事务请求中事务通信协议可以采用任意的形式记录,例如,事务通信协议可以记录在结构化查询语句的注释中。其中,结构化查询语句是指SQL语句,SQL(Structured Query Language,结构化查询语言)语句是对数据库进行操作的一种语言。结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。例如,事务请求为/*事务通信协议*/insert into table(...)values(...)。其中,“/insert into table(...)values(...)”为SQL语句。/*事务通信协议*/为包括事务通信协议的该结构化查询语句的注释。
在一些实施例中,业务系统为分布式系统,即业务系统包括至少两个微服务节点,该多个事务请求为业务系统中的微服务节点发送的。其中,微服务节点用于提供微服务,每个微服务节点采用至少一个服务器实现。微服务,是指将单一服务程序拆分成一组小型的独立服务,这些服务之间互相协调、互相配合,以完成服务程序提供的功能。业务系统提供的服务程序被拆分得到多个微服务,并将各个微服务独立部署在不同的服务器上。业务系统可以是提供任意服务的系统,包括但不限于是提供购物或娱乐服务的系统,例如可以为购物类应用程序、金融类应用程序或娱乐类应用程序对应的系统,以该业务系统为视频模板应用程序对应的系统为例,可以分为订单接收服务、模板确认服务、资金确认服务、视频合成配置服务等微服务。其中,视频模板应用程序提供了购买视频模板的功能,视频模板用于合成视频,广告主可以从视频模板应用程序下单采买视频模板用于视频合成,视频模板是由制作方制作的,制作方根据广告主在视频模板应用程序中的订单要求制作视频模板进行交付,广告主收到视频模板后确定其效果,广告主对于交付质量过关的订单,进行一键确认,联动进行模板确认、订单支付和视频合成配置的自动化处理。
步骤204,针对每个事务请求,确定事务请求所请求访问的目标数据源节点,将事务请求加入至目标事务标识下相应的事务请求组中;相应的事务请求组用于存储请求访问目标数据源节点的事务请求;目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求。
其中,目标事务标识下的各事务请求组分别与不同的数据源节点存在对应关系,如图3所示,事务请求组1与数据库1对应,事务请求组2与数据库2对应,事务请求组3与数据库3对应。目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求;目标事务标识下的不同的事务请求组用于存储请求访问不同数据源节点的事务请求。该相应的事务请求组用于存储请求访问目标数据源节点的事务请求,例如,目标数据源节点为数据库1,事务请求是访问数据库1的请求,则该相应的事务请求组用于存储请求访问数据库1的事务请求。
具体地,在目标事务标识下存在目标数据源节点对应的事务请求组的情况下,数据网关可以将事务请求加入目标数据源节点对应的事务请求组中,在目标事务标识下不存在目标数据源节点对应的事务请求组的情况下,数据网关可以在目标事务标识下创建目标数据源节点对应的事务请求组,将事务请求加入创建的目标数据源节点对应的事务请求组中。
步骤206,将目标事务标识下的各事务请求组发送至对应的数据源节点;事务请求组用于指示对应的数据源节点处理事务请求组中的事务请求。
其中,数据源节点对事务请求的处理可以包括执行和提交,执行是指根据事务请求中的结构化查询语句进行数据计算,处理是指利用该数据计算的结果对数据源节点中的数据进行修改,例如,数据源节点为数据库,事务请求中的结构化查询语句是对数据库中的某个表中的数据进行修改的语句,则数据源节点在执行事务请求时,根据结构化查询语句以及该表中的数据进行计算,得到该表的修改后的数据,然而该表的修改后的数据并不会立刻覆盖该表中的数据,在对该事务请求进行提交时,将该表的修改后的数据覆盖该表中的数据,从而完成对数据库中数据的修改。
具体地,针对每个事务请求组,数据网关可以向该事务请求组对应的数据源节点发送提交请求,提交请求中可以携带该事务请求组中的各事务请求。或者,针对该事务请求组中的每个事务请求,数据网关可以分别或依次向该事务请求组对应的数据源节点发送提交请求,该提交请求中携带该事务请求。数据网关在事务执行过程中,可以透传事务过程的数据请求例如事务请求,而不需要理解事务的执行过程。
在一些实施例中,数据源节点接收到提交请求的情况下,从提交请求中提取事务请求,对事务请求进行处理,并可以将处理结果返回至提交请求的发送方。处理结果可以包括执行失败、执行成功、提交失败、提交成功等。具体地,数据源节点执行事务请求,在确定各个事务请求组中的事务请求均执行成功的情况下,提交事务请求即对数据源节点中的数据进行修改,从而使得其他的事务可以获取修改后的数据。
上述分布式事务处理方法中,接收多个事务请求,由于该多个事务请求均对应同一目标事务标识,该同一目标事务标识用于指示该多个事务请求属于同一事务,该多个事务请求中至少两个事务请求所请求访问的数据源节点不同,因此,该同一事务为数据源节点为至少两个的情况下的分布式事务,针对每个事务请求,确定事务请求所请求访问的目标数据源节点,将事务请求加入至目标事务标识下相应的事务请求组中,该相应的事务请求组用于存储请求访问该目标数据源节点的事务请求,由于目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求,从而将同一分布式事务的事务请求按照数据源节点进行分组,从而将目标事务标识下的各事务请求组发送至对应的数据源节点,以使得对应的数据源节点处理处理对应的事务请求组中的事务请求,从而可以对同一数据源节点的事务请求进行集中处理,缩短了事务处理的时间,提升了在数据源节点为至少两个的情况下的处理事务请求的效率,从而提升了事务的处理效率。
在一些实施例中,将目标事务标识下的各事务请求组发送至对应的数据源节点包括:基于各事务请求组中的事务请求的发起时间,确定各事务请求组分别对应的发送顺序;按照各事务请求组分别对应的发送顺序,将各事务请求组发送至对应的数据源节点。
其中,事务请求的发起时间是指触发该事务请求的时间。事务请求中可以携带对应的发起时间。
具体地,针对每个事务请求组,数据网关可以获取该事务请求组中各事务请求分别对应的发起时间,并从各发起时间中确定最早的发起时间,将该最早的发起时间作为该事务请求组的最早发起时间。数据网关可以按照最早发起时间,确定各事务请求组分别对应的发送顺序。最早发起时间越早,事务请求组的发送顺序越靠前。例如,事务请求组1的最早发起时间早于事务请求组2的最早发起时间,则优先发送事务请求组1中的事务请求,后发送事务请求组2中的事务请求。
在一些实施例中,在发送同一事务请求组中的各事务请求时,数据网关可以同时或者分别发送各事务请求。
本实施例中,按照各事务请求组分别对应的发送顺序,将各事务请求组发送至对应的数据源节点,提升了发送事务请求的合理性,有利于事务请求得到及时的响应。
在一些实施例中,基于各事务请求组中的事务请求的发起时间,确定各事务请求组分别对应的发送顺序包括:基于各事务请求组中的事务请求的发起时间,确定各事务请求组分别对应的最早发起时间;确定各事务请求组分别对应的请求组标识;基于各事务请求组的请求组标识和最早发起时间,确定各事务请求组分别对应的发送顺序。
其中,请求组标识用于唯一识别一个事务请求组。请求组标识可以是数字,各请求组标识之间可以比较大小,请求组标识越小,可以代表事务请求组创建的时间越早。
具体地,数据网关可以根据事务请求组中各事务请求的发起时间,确定该事务请求组的最早发起时间,并基于事务请求组的最早发起时间和请求组标识(请求组ID),确定各事务请求组分别对应的发送顺序。
在一些实施例中,数据网关可以先按照最早发起时间从早到晚的顺序,对各事务请求组进行排序,得到初始的事务请求组序列,然后,对于初始的事务请求组序列中最早发起时间相同的各事务请求组,再根据请求组标识从小到大的顺序进行排列,得到目标的事务请求组序列,事务请求组在目标的事务请求组序列中的位置越靠前,则事务请求组的发送顺序越靠前。
本实施例中,基于各事务请求组的请求组标识和最早发起时间,确定各事务请求组分别对应的发送顺序,进一步的提升了发送顺序的合理性,有利于事务请求得到及时的响应。
在一些实施例中,确定事务请求所请求访问的目标数据源节点,将事务请求加入至目标事务标识下相应的事务请求组中包括:在目标事务标识下存在目标数据源节点对应的事务请求组的情况下,将事务请求加入目标数据源节点对应的事务请求组中;在目标事务标识下不存在目标数据源节点对应的事务请求组的情况下,在目标事务标识下创建目标数据源节点对应的事务请求组,将事务请求加入创建的目标数据源节点对应的事务请求组中。
具体地,在目标事务标识下存在目标数据源节点对应的事务请求组的情况下,数据网关将事务请求加入目标数据源节点对应的事务请求组中。在目标事务标识下不存在目标数据源节点对应的事务请求组的情况下,在目标事务标识下创建目标数据源节点对应的事务请求组,即创建目标数据源节点对应的事务请求组,并将创建的事务请求组与目标事务标识建立对应关系。数据网关可以将创建的目标数据源节点对应的事务请求组进行存储。
本实施例中,在目标事务标识下不存在目标数据源节点对应的事务请求组的情况下,在目标事务标识下创建目标数据源节点对应的事务请求组,从而统一管理事务请求组,提升了事务请求组的管理效率,进一步的提升了事务的处理效率。
在一些实施例中,方法还包括:接收数据源节点返回的针对当前处理的事务请求组的处理结果;在基于处理结果确定当前处理的事务请求组执行失败的情况下,利用数据源节点的回滚策略对当前处理的事务请求组进行回滚处理。
其中,当前处理的事务请求组,是指当前时间被对应的数据源节点进行处理的事务请求组,处理包括两个步骤,一个是执行,一个是提交,先执行后提交。处理结果为执行成功、执行失败、提交成功或提交失败中的任意一种。事务请求组的处理结果可以为多个,分别为该事务请求组中各事务请求分别对应的处理结果,在事务请求的处理结果为执行成功的情况下,表征该事务请求执行成功,该事务请求的处理结果为执行失败的情况下,表征该事务请求执行失败。事务请求组的处理结果也可以只有一个,该处理结果为执行成功的情况下,表征该事务请求组执行成功,该处理结果为执行失败的情况下,表征该事务请求组执行失败。数据源节点的回滚策略是指数据源节点自带的进行事务回滚的策略。
数据源节点中的表例如数据库中的表,可以存在临时表,该临时表中存储的数据与该表一致,在执行事务请求是,根据事务请求中的结构化查询语句进行数据计算时,可以利用该临时表中的数据进行计算,并利用计算的结果覆盖该临时表中相应的数据。回滚处理用于恢复临时表中的数据,即恢复至覆盖之前的数据。
具体地,在该事务请求组中的各事务请求均执行成功的情况下,数据网关确定该事务请求组执行成功,在该事务请求组中存在一个事务请求执行失败的情况下,数据网关确定该事务请求组执行失败。
在一些实施例中,数据网关在基于处理结果确定当前处理的事务请求组执行失败的情况下,可以利用数据源节点的回滚策略对当前处理的事务请求组进行回滚处理。
本实施例中,在当前处理的事务请求组执行失败的情况下,利用数据源节点的回滚策略对当前处理的事务请求组进行回滚处理,从而快速进行回滚处理,提高了事务的处理效率。
在一些实施例中,事务请求还对应有事件标识;事件标识对应有预设回滚策略;方法还包括:在基于处理结果确定当前处理的事务请求组执行失败的情况下,确定各事务请求组中已执行成功的事务请求组;确定已执行成功的事务请求组中各事务请求分别对应的事件标识;利用确定出的各事件标识分别对应的预设回滚策略对已执行成功的事务请求组进行回滚处理。
其中,事件标识用于唯一识别事件,事件和事件标识是预先设置好的,每个事务请求对应一个事件并携带对应的事件的标识即事件标识,事件可以为预先生成的特定的结构化查询语句,例如事件为“insert into table(...)values(...)”。事务请求中包括对应的事件标识所标识的事件中的结构化查询语句。
事件标识对应的预设回滚策略是预先设置好的,数据网关中存储有各事件标识分别对应的预设回滚策略。事件也可以称为事务事件,事件标识也可以称为事务事件标识(即事务事件ID)。
具体地,在基于处理结果确定当前处理的事务请求组执行失败的情况下,针对各事务请求组中已执行成功的事务请求组,数据网关确定该已执行成功的事务请求组中各事务请求分别对应的事件标识,利用确定出的各事件标识分别对应的预设回滚策略,对该已执行成功的事务请求组中的事务请求进行回滚处理。
本实施例中,预先设置了事件标识对应的预设回滚策略,在存在事务请求组执行失败的情况下,对已执行成功的事务请求组进行回滚处理,从而提升了回滚的效率,提升了事务处理效率。并且,在自动回滚(利用数据源节点的回滚策略进行回滚)和配置回滚(利用事件标识对应的预设回滚策略进行回滚)的结合下,可以确保执行失败的情况下,已执行的事务可将被修改的数据重置回原来的状态,使数据源节点中的数据处于正确的状态,有效保障了数据的一致性。
在一些实施例中,事务请求包括结构化查询语句以及结构化查询语句的注释,结构化查询语句的注释中包括事务标识,方法还包括:从事务请求中确定结构化查询语句的注释;从确定到的结构化查询语句的注释中提取事务标识,得到事务请求对应的目标事务标识。
其中,事务请求包括结构化查询语句以及结构化查询语句的注释,结构化查询语句的注释中包括事务标识。结构化查询语句的注释的格式是预设的,例如为/*注释*/。事务请求中注释可以位于结构化查询语句之前或之后。例如,事务请求包括“/*事务标识*/select count from table”,其中,“select count from table”为结构化查询语句,“/*事务标识*/”表示结构化查询语句的注释中包括事务标识。
具体地,数据网关接收到事务请求后,可以从事务请求中确定结构化查询语句的注释,从确定到的结构化查询语句的注释中提取事务标识,得到事务请求对应的目标事务标识。
本实施例中,将事务标识隐藏在结构化查询语句的注释中,从而快速准确的将事务标识传递至了数据网关,从而加快了数据网关确定目标事务标识的效率,从而提升了事务处理效率。
在一些实施例中,方法还包括:接收事务请求对应的事务信息;事务信息包括事务标识和事务请求的标识;从事务信息中提取事务标识,得到事务请求对应的目标事务标识。
具体地,事务请求中不包括事务标识,数据网关可以根据事务请求对应的事务信息,确定事务请求对应的目标事务标识,数据网关接收到事务请求对应的事务信息的情况下,从该事务信息中提取携带的事务标识,得到该事务请求对应的目标事务标识。其中,事务请求以及对应的事务信息可以是分别发送的,先发送事务请求,再发送事务信息,例如先传SQL语句,下一条消息发送事务信息。
本实施例中,利用事务信息包括事务标识,从而可以利用事务信息准确切快捷的确定事务请求所属的事务的标识即目标事务标识,提升了分布式事务的处理效率。
在一些实施例中,接收多个事务请求包括:响应于第一微服务节点发送的事务发起请求,生成目标事务标识;将目标事务标识返回至第一微服务节点;第一微服务节点将目标事务标识传递至第二微服务节点;第一微服务节点和第二微服务节点属于同一业务系统;业务系统属于分布式系统;接收第一微服务节点和第二微服务节点分别发送的携带目标事务标识的事务请求。
其中,该多个事务请求是由业务系统中的微服务节点发送的,业务系统为分布式系统,业务系统包括至少两个微服务节点,如图4所示,业务系统104包括多个微服务节点(图4中的104_1~104_n)。第一微服务节点和第二微服务节点为业务系统中的两个不同的微服务节点。事务发起请求用于请求发起事务。
发起事务发起请求的微服务节点可以称为发起者,由于发起即向数据网关发送事务发起请求的为第一微服务节点,故第一微服务节点可以称为发起者。业务系统中的各微服务节点之间可以互相调用,在一次事务中,可以涉及到至少两个微服务节点,各微服务节点之间的调用关系已经预先设置好了。例如,在目标事务标识所表征的事务中,涉及第一微服务节点和第二微服务节点,当然还可以涉及其他的微服务节点。一次事务所涉及到各微服务节点中除发起者之外的微服务节点可以称为参与者。在目标事务标识所表征的事务中,第一微服务节点调用第二微服务节点,故第二微服务节点可以称为参与者。
具体地,第一微服务节点向数据网关发送事务发起请求,数据网关响应于该事务发起请求,生成目标事务标识并存储,将生成的目标事务标识返回至第一微服务节点。
在一些实施例中,第一微服务节点接收终端发送的第一调用请求,响应于该第一调用请求,生成调用标识(调用ID),并向数据网关发送携带该调用标识的事务发起请求,数据网关生成目标事务标识,并将该目标事务标识与调用标识关联存储,该目标事务标识所表征的事务为该调用标识下的事务。第一微服务节点接收到的调用请求下可以触发至少一个事务,本申请实施例中,是采用一次调用请求触发一个事务为例进行说明的。事务请求中可以携带调用标识、事务标识以及事件标识。
在一些实施例中,目标事务标识也可以是由第一微服务节点生成的。具体地,第一微服务节点接收终端发送的第一调用请求,响应于该第一调用请求,生成目标事务标识,向数据网关发送携带调用标识和目标事务标识的事务发起请求,数据网关响应于该事务发起请求,提取该事务发起请求中的调用标识和目标事务标识并进行关联存储。
在一些实施例中,第一微服务节点向第二微服务节点发送携带目标事务标识的第一调用请求,第二微服务节点响应于该第一调用请求,向数据网关发送携带目标事务标识的事务请求。
在一些实施例中,第一微服务节点向数据网关发送携带目标事务标识的事务请求,然后再向第二微服务节点发送携带目标事务标识的第二调用请求。该第二调用请求中还可以携带调用标识,具体地,第一微服务节点向数据网关发送携带调用标识和目标事务标识的事务请求,然后再向第二微服务节点发送携带目标事务标识和调用标识的第二调用请求。如图5所示,展示了一个事务中各微服务节点之间的交互时序图,第一微服务节点例如为图5中的微服务1,第二微服务节点为图2中的微服务2,微服务1向数据网关发起事务即发送事务发起请求,微服务1向微服务2发起业务调用,业务调用中携带调用ID和事务ID。
在一些实施例中,该多个事务请求中还包括第三微服务节点发送的携带目标事务标识的事务请求。具体地,第二微服务节点响应于该第二调用请求,向数据网关发送事务请求,然后再向第三微服务节点发送携带调用标识和目标事务标识的第三调用请求,第三微服务节点响应于该第三调用请求,向数据网关发送携带目标事务标识的事务请求。当然,第三微服务节点发送的事务请求中还可以携带调用标识。第三微服务节点例如为图5中的微服务3,微服务2向微服务3发送业务调用即第三调用请求,微服务3响应于该业务调用,向数据网关发送携带目标事务标识的事务请求。
本实施例中,由于事务请求为分布式系统中的微服务节点发送的,由于各事务请求分别携带目标事务标识,从而使得分布式系统中的各微服务节点根据目标事务标识快速且准确的区分事务请求是否属于同一事务,保证了事务的一致性,提升了分布式系统中的事务的处理效率。
在一些实施例中,将目标事务标识下的各事务请求组发送至对应的数据源节点包括:接收携带目标事务标识的事务提交请求;在确定事务提交请求是由第一微服务节点发送的情况下,将目标事务标识下各事务请求组发送至对应的数据源节点;第一微服务节点在确定目标事务标识对应的各事务请求均发送至数据网关的情况下,向数据网关发送携带目标事务标识的事务提交请求。
其中,事务提交请求用于请求将目标事务标识下的各事务请求组中的事务请求发送至对应的数据源节点,以使得数据源节点执行和提交该事务请求。
具体地,数据网关可以记录发送事务发起请求的微服务节点的标识即第一微服务节点的标识,从而可以根据第一微服务节点的标识,确定发送事务提交请求的微服务节点是否为第一微服务节点。从而数据网关可以识别发起者和参与者,实现了由数据网关定义事务的发起者和参与者。发起者和参与者不需要感知自身的定义,只需要正常执行事务的开启、执行、提交、回滚等操作,提高了发起者与参与者的事务处理效率。
在一些实施例中,发起者即第一微服务节点在确定目标事务标识下各事务请求组中的各事务请求均发送至数据网关的情况下,向数据网关发送携带目标事务标识的事务提交请求。参与者在向数据网关发送完事务请求后,也可以向数据网关发送携带目标事务标识的事务提交请求。数据网关在确定事务提交请求是由发起者即第一微服务节点发送的情况下,将目标事务标识下各事务请求组发送至对应的数据源节点,在确定事务提交请求是由参与者例如第二微服务节点发送的情况下,返回请求功能的消息,即只有在接收到发起者发送的事务提交请求的情况下才会将事务请求组中的事务请求发送至对应的数据源节点。
在一些实施例中,服务器可以确定各事务请求组的发送顺序,按照发送顺序依次对各事务请求组进行发送,针对同一事务请求组中的各事务请求,可以同事发送该各事务请求,也可以依次发送,这里不做限定。
本实施例中,由于第一微服务节点在确定目标事务标识对应的各事务请求均发送至数据网关的情况下,向数据网关发送携带目标事务标识的事务提交请求,从而在确定事务提交请求是由第一微服务节点发送的情况下,将目标事务标识下各事务请求组发送至对应的数据源节点,可以在数据网关获取到目标事务标识的各事务请求的情况下,将目标事务标识下各事务请求组发送至对应的数据源节点,提高了事务提交的效率。
在一些实施例中,事务发起请求是第一微服务节点响应于交互请求发送的,交互请求是终端响应于目标应用中的交互操作触发的;方法还包括:在确定目标事务标识下各事务请求组均提交成功的情况下,向第一微服务节点返回用于指示事务提交成功的消息,以使得第一微服务节点向终端返回请求成功提示信息。
其中,目标应用可以为任意的应用程序,包括但不限于是社交类应用程序、购物类应用程序、金融类应用程序或娱乐类应用程序中的至少一种。交互操作是指在目标应用提供的页面中触发的交互操作,交互操作包括但不限于是对目标应用提供的页面中的控件的点击、滑动或双击等中的至少一种操作。交互请求是终端响应于目标应用中的交互操作触发的,交互请求是交互操作所针对的控件所用于触发的请求,例如,交互操作为针对“一键确认订单”的控件的触发操作,则交互请求为“一键确认订单”的请求。
具体地,数据网关向事务请求组对应的数据源节点发送针对该事务请求组中的事务请求的提交请求,提交请求中可以携带事务请求,数据源节点响应于提交请求,基于提交请求中携带的事务请求进行提交处理,将处理结果返回至数据网关,数据网关在确定该处理结果为提交成功的情况下,确定该事务请求提交成功。在该事务请求组中的各事务请求均提交成功的情况下,数据网关确定该事务请求组提交成功,在该事务请求组中存在一个事务请求提交失败的情况下,数据网关确定该事务请求组提交失败。
在一些实施例中,数据网关在确定目标事务标识下各事务请求组均提交成功的情况下,向第一微服务节点返回用于指示事务提交成功的消息,第一微服务节点接收到该用于指示事务提交成功的消息的情况下,向终端返回请求成功提示信息。
本实施例中,提升了交互请求触发的事务的处理效率,从而提升了交互效率。
在一些实施例中,如图6所示,提供了一种分布式事务处理方法,以该方法应用于数据网关为例进行说明,包括以下步骤:
步骤602,响应于第一微服务节点发送的事务发起请求,生成目标事务标识。
步骤604,将目标事务标识返回至第一微服务节点;第一微服务节点将目标事务标识传递至第二微服务节点;第一微服务节点和第二微服务节点属于同一业务系统;业务系统属于分布式系统。
步骤606,接收第一微服务节点和第二微服务节点分别发送的携带目标事务标识的事务请求;事务请求包括结构化查询语句以及结构化查询语句的注释,结构化查询语句的注释中包括事务标识。
步骤608,从事务请求中确定结构化查询语句的注释,从确定到的结构化查询语句的注释中提取事务标识,得到事务请求对应的目标事务标识。
步骤610,在目标事务标识下存在目标数据源节点对应的事务请求组的情况下,将事务请求加入目标数据源节点对应的事务请求组中;在目标事务标识下不存在目标数据源节点对应的事务请求组的情况下,在目标事务标识下创建目标数据源节点对应的事务请求组,将事务请求加入创建的目标数据源节点对应的事务请求组中。
步骤612,基于各事务请求组中的事务请求的发起时间,确定各事务请求组分别对应的最早发起时间,确定各事务请求组分别对应的请求组标识,基于各事务请求组的请求组标识和最早发起时间,确定各事务请求组分别对应的发送顺序。
步骤614,按照发送顺序将目标事务标识下的各事务请求组发送至对应的数据源节点;事务请求组用于指示对应的数据源节点处理事务请求组中的事务请求。
步骤616,接收数据源节点返回的针对当前处理的事务请求组的处理结果。
步骤618,在基于处理结果确定当前处理的事务请求组执行失败的情况下,利用数据源节点的回滚策略对当前处理的事务请求组进行回滚处理,并确定各事务请求组中已执行成功的事务请求组,确定已执行成功的事务请求组中各事务请求分别对应的事件标识,利用确定出的各事件标识分别对应的预设回滚策略,对已执行成功的事务请求组进行回滚处理。
本实施例中,由数据网关根据实时事务请求编排顺序即发送顺序,不需要区分微服务并且做到微服务层无感知,在失败时按照编排顺序进行反向执行回滚操作,开发人员也无需为区分各微服务而花费更多的时间,减少了人工成本。本实施例中,由数据网关按照数据库实例分组数据请求即事务请求,失败时,分为自动化(数据库的自身的回滚策略)和配置化(事务事件ID对应的预设回滚策略)两部分回滚处理:处于相同失败分组的事务请求,可以结合数据库自身进行回滚,无需调用微服务的回滚操作;处于不同分组即事务请求组的事务请求,可以按照事务事件ID执行数据网关中对应的回滚操作,不调用微服务自身的回滚操作。
本实施例中,分布式系统接入成本低,只需要按照通讯协议封装对应的信息,放在SQL的注释部分即可,数据网关兼容各种数据库协议;分布式系统无需改变系统间的调用方式和调用关系,数据网关统一编排调用顺序,业务层无感知;分布式系统的事务执行过程,数据网关不参与,不做任何加工处理,确保事务执行的准确性;分布式系统实时得到事务执行结果,数据网关将数据库在数据隔离的事务执行结果直接透传给分布式系统,不阻塞分布式系统的业务逻辑;回滚方式灵活配置、智能处理,针对可以自动化回滚的则快速回滚,不可自动化则可根据配置信息,执行相应的回滚操作。
本申请提供的分布式事务处理方法可以应用于对任何领域的应用程序触发的分布式事务进行处理,包括但不限于是购物类应用程序、金融类应用程序或娱乐类应用程序中的至少一种。以应用于视频模板应用程序为例来说明本申请提供的分布式事务处理方法,视频模板应用程序提供了购买视频模板的功能,视频模板用于合成视频,广告主可以从视频模板应用程序下单采买视频模板用于视频合成,视频模板是由制作方制作的,制作方根据广告主在视频模板应用程序中的订单要求制作视频模板进行交付,广告主收到视频模板后确定其效果,广告主对于交付质量过关的订单,进行一键确认,联动进行模板确认、订单支付和视频合成配置的自动化处理。
如图7所示,展示了通过视频模板应用程序购买视频模板的部分交互时序图。图7中,订单模块接收广告主的终端发送的一键确认订单的请求,订单模块发起模板确认的请求给到模板模块,订单模块收到模板确认请求,发起支付信息给到资金模块,支付成功后,订单模块发起模板配置的请求给到视频合成配置模块,模板配置成功,订单确认完成。一键确认中所有的操作,都会确保是一个整体,要么整体成功,要么整体失败,不会只执行其中的一部分,体现了事务的原子性。如图5所示,展示了通过视频模板应用程序购买视频模板的分布式事务处理时序图。图7和图5分别从功能和事务两个方面描述的“一键确认”订单后触发的时序图,需要说明的是,图7与图5中的每个步骤并非是一一对应的关系,图7和图5仅起到示意图的作用。
图5中的“微服务1”、“微服务2”和“微服务3”分别代表分布式系统中的不同的微服务节点。图7中的“订单模块”、“模板模块”、“资金模块”、“视频合成配置模块”分别为视频模板应用程序对应的分布式系统中的不同的微服务节点,例如,“订单模块”为图5中的“微服务1”。图7中发出的消息可以触发至少一个事务请求,例如图7中的订单模块发出的“模板确认”的消息可以触发“模板模块”发起至少一个事务请求。在图5中的事务提交成功的情况下,代表实现了图7中的各个步骤,即完成了订单的确认。
下面对图5进行详细的描述以说明处理分布式事务的过程。图5中,“客户端调用”中的“客户端”可以为视频模板应用程序的客户端。广告主的终端在视频模板应用程序的客户端中展示“一键确认”订单界面,终端响应于通过“一键确认”订单界面触发的“一键确认”操作,向分布式系统中的“微服务1”发送调用请求。“微服务1”响应于调用请求,生成调用ID,其中,调用ID用于唯一标识调用请求,生成调用ID后,“微服务1”向“数据网关”发送事务发起请求,事务发起请求携带调用ID,即如图5中的“发起事务,携带调用ID”,例如,事务发起请求的数据格式为:/*调用ID,事务事件ID*/start transaction。由于“微服务1”是第一个发起事务的微服务节点,故“微服务1”可以称为分布式事务处理过程中的发起者,而“微服务2”和“微服务3”可以称为分布式事务处理过程中的参与者。
“数据网关”接收到“微服务1”发送的事务发起请求,生成与该调用ID对应的事务ID,例如,采用数据格式“trans_id:xxxx-xxxx-xxxx”生成事务ID,其中“xxxx-xxxx-xxxx”为生成的事务ID,“trans_id”为代表事务ID的变量。“数据网关”将生成的事务ID发送至“微服务1”,即图5中的“响应请求,返回事务ID”,其中,事务ID用于标识发起的一次事务。
“微服务1”在接收到“事务ID”的情况下,向“数据网关”发送事务请求,即图5中的“事务请求,携带调用ID、事务ID、事务事件ID1”,例如,事务请求的数据格式为:/*调用ID,事务ID,事务事件ID1*/insert into table(...)values(...)。其中,“/insert intotable(...)values(...)”为SQL语句,“/*调用ID,事务ID,事务事件ID1*/”为事务信息,由于数据格式“/*、、、、、、*/”代表SQL的注释,故这里是采用在SQL注释部分携带事务通信协议。
“数据网关”响应于“微服务1”发送的事务发起请求,根据事务请求中的数据库协议例如SQL语句确定该事务请求针对的数据源,例如,根据SQL语句中的table所属的数据源确定数据源,“数据网关”将调用ID相同、事务ID相同但数据源不同的事务请求进行分组处理,例如,若table1为数据库1中的表格,table2为数据库2中的表格,则对于调用ID相同且事务ID相同的各事务请求,若该事务请求的SQL中的table为table1,则将该事务请求分到一个事务请求组例如事务请求组1中,若该事务请求的SQL中的table为table2,则将该事务请求分到一个事务请求组例如事务请求组2中,事务请求组1和事务请求组2为两个不同的事务请求组。
“微服务1”向“微服务2”发起调用请求,调用请求可以是符合rpc(RemoteProcedure Call,远程过程调用)协议或者http协议的请求,该调用请求携带调用ID和事务ID。“微服务2”从该调用请求中提取调用ID和事务ID并存储。然后,“微服务2”向“数据网关”发送携带调用ID和事务ID的事务发起请求,“数据网关”已知事务ID已经发起了,故并不会根据“微服务2”再次发起事务,“微服务2”接着向“数据网关”发送携带调用ID、事务ID和事务事件ID2的事务请求。或者,“微服务2”可以在发送事务发起请求时,事务发起请求中还可以携带事务事件ID,例如,“微服务2”发送的事务发起请求的数据格式为:/*调用ID,事务ID,事务事件ID2*/start transaction。
“数据网关”响应于“微服务2”发送的事务请求,同样的,确定事务请求所请求访问的数据源节点,将该事务请求加入到对应的事务请求组中。“微服务2”接着向“数据网关”发送事务提交请求,如图5中的“提交事务”,“数据网关”判断是否为发起者即“微服务1”发送的事务提交请求,若不是,则返回请求成功的消息,由于“微服务2”属于参与者,故“数据网关”向“微服务2”返回请求成功的消息。“微服务2”调用“微服务3”的原理与“微服务1”调用“微服务2”相同,这里不再赘述。
“数据网关”在接收到“微服务1”发送的事务提交请求的情况下,确定该事务ID下的各事务请求组分别对应的发送顺序,按照发送顺序对事务请求组中的事务请求进行执行,在当前处理的事务请求组执行失败的情况下,数据网关利用数据源节点的回滚策略对当前处理的事务请求组进行回滚处理,数据网关在基于处理结果确定当前处理的事务请求组执行失败的情况下,确定各事务请求组中已执行成功的事务请求组;确定已执行成功的事务请求组中各事务请求分别对应的事件标识;利用确定出的各事件标识分别对应的预设回滚策略,对已执行成功的事务请求组进行回滚处理。
其中,分布式系统的多个微服务在启动时可以跟数据网关建立长连接通信,将数据库相关的请求统一发送到数据网关,微服务之间、微服务与数据网关之间通过特定的协议约定传递调用ID、事务ID和事务事件ID(例如在SQL注释部分携带事务通信协议),事务通信协议包括事务信息;微服务1在每次调用请求执行前生成调用ID,数据网关在接受到微服务1发起的事务请求后,在调用ID下创建事务分组并分配事务ID,将事务ID给到微服务1;分布式系统在后续执行过程中传递调用ID和事务ID,数据网关根据事务ID调用不同的数据源,在同一事务内执行事务请求;数据网关统一管理所有事务,对成功结果进行记录;如果有部分事务失败,则根据事务事件ID查询相应的配置,判断是否需要执行回滚操作,如果需要则执行对应的回滚方法,从而保证数据的正确性。事务请求实时发送,无需异步,实时执行事务过程,同步获取执行结果。微服务节点提供的微服务之间没有主次之分。当前执行且未提交的事务请求组可利用数据库自身特性进行回滚;已执行的事务请求可用配置化的方式进行自定义回滚。需要说明的是,回滚操作也可以放在微服务自身进行执行的,微服务节点之间可以传递事务执行过程,进行打包传输给数据网关或者数据源节点。
本实施例中,实现了分布式系统中的事务的协调,利用数据库协议(即SQL)的注释部分新增事务通信协议,对分布式系统的数据请求进行统一管理,协调并响应事务请求,针对事务进行分组、创建、执行、统计和回滚操作,从而保证事务的正常执行。应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的分布式事务处理方法的分布式事务处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个分布式事务处理装置实施例中的具体限定可以参见上文中对于分布式事务处理方法的限定,在此不再赘述。
在一些实施例中,如图8所示,提供了一种分布式事务处理装置,包括:请求接收模块802、请求分组模块804和请求发送模块806,其中:
请求接收模块802,用于接收多个事务请求;多个事务请求均对应同一目标事务标识,目标事务标识用于指示多个事务请求属于同一事务;多个事务请求中至少两个事务请求所请求访问的数据源节点不同。
请求分组模块804,用于针对每个事务请求,确定事务请求所请求访问的目标数据源节点,将事务请求加入至目标事务标识下相应的事务请求组中;相应的事务请求组用于存储请求访问目标数据源节点的事务请求;目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求。
请求发送模块806,用于将目标事务标识下的各事务请求组发送至对应的数据源节点;事务请求组用于指示对应的数据源节点处理事务请求组中的事务请求。
在一些实施例中,请求发送模块806,还用于基于各事务请求组中的事务请求的发起时间,确定各事务请求组分别对应的发送顺序;按照各事务请求组分别对应的发送顺序,将各事务请求组发送至对应的数据源节点。
在一些实施例中,请求发送模块806,还用于基于各事务请求组中的事务请求的发起时间,确定各事务请求组分别对应的最早发起时间;确定各事务请求组分别对应的请求组标识;基于各事务请求组的请求组标识和最早发起时间,确定各事务请求组分别对应的发送顺序。
在一些实施例中,请求分组模块804,还用于在目标事务标识下存在目标数据源节点对应的事务请求组的情况下,将事务请求加入目标数据源节点对应的事务请求组中;在目标事务标识下不存在目标数据源节点对应的事务请求组的情况下,在目标事务标识下创建目标数据源节点对应的事务请求组,将事务请求加入创建的目标数据源节点对应的事务请求组中。
在一些实施例中,装置还用于接收数据源节点返回的针对当前处理的事务请求组的处理结果;在基于处理结果确定当前处理的事务请求组执行失败的情况下,利用数据源节点的回滚策略对当前处理的事务请求组进行回滚处理。
在一些实施例中,事务请求还对应有事件标识;事件标识对应有预设回滚策略;装置还用于在基于处理结果确定当前处理的事务请求组执行失败的情况下,确定各事务请求组中已执行成功的事务请求组;确定已执行成功的事务请求组中各事务请求分别对应的事件标识;利用确定出的各事件标识分别对应的预设回滚策略,对已执行成功的事务请求组进行回滚处理。
在一些实施例中,事务请求包括结构化查询语句以及结构化查询语句的注释,结构化查询语句的注释中包括事务标识,装置还用于从事务请求中确定结构化查询语句的注释;从确定到的结构化查询语句的注释中提取事务标识,得到事务请求对应的目标事务标识。
在一些实施例中,装置还用于接收事务请求对应的事务信息;事务信息包括事务标识和事务请求的标识;从事务信息中提取事务标识,得到事务请求对应的目标事务标识。
在一些实施例中,请求接收模块802,还用于响应于第一微服务节点发送的事务发起请求,生成目标事务标识;将目标事务标识返回至第一微服务节点;第一微服务节点将目标事务标识传递至第二微服务节点;第一微服务节点和第二微服务节点属于同一业务系统;业务系统属于分布式系统;接收第一微服务节点和第二微服务节点分别发送的携带目标事务标识的事务请求。
在一些实施例中,方法由数据网关执行,请求发送模块806,还用于接收携带目标事务标识的事务提交请求;在确定事务提交请求是由第一微服务节点发送的情况下,将目标事务标识下各事务请求组发送至对应的数据源节点;第一微服务节点在确定目标事务标识对应的各事务请求均发送至数据网关的情况下,向数据网关发送携带目标事务标识的事务提交请求。
在一些实施例中,事务发起请求是第一微服务节点响应于交互请求发送的,交互请求是终端响应于目标应用中的交互操作触发的;装置还用于在确定目标事务标识下各事务请求组均提交成功的情况下,向第一微服务节点返回用于指示事务提交成功的消息,以使得第一微服务节点向终端返回请求成功提示信息。
上述分布式事务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储分布式事务处理方法中涉及到的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种分布式事务处理方法。
在一些实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种分布式事务处理方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9和图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述分布式事务处理方法中的步骤。
在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述分布式事务处理方法中的步骤。
在一些实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述分布式事务处理方法中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (15)

1.一种分布式事务处理方法,其特征在于,所述方法包括:
接收多个事务请求;所述多个事务请求均对应同一目标事务标识,所述目标事务标识用于指示所述多个事务请求属于同一事务;所述多个事务请求中至少两个事务请求所请求访问的数据源节点不同;
针对每个所述事务请求,确定所述事务请求所请求访问的目标数据源节点,将所述事务请求加入至所述目标事务标识下相应的事务请求组中;所述相应的事务请求组用于存储请求访问所述目标数据源节点的事务请求;所述目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求;
将所述目标事务标识下的各事务请求组发送至对应的数据源节点;所述事务请求组用于指示对应的数据源节点处理所述事务请求组中的事务请求。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标事务标识下的各事务请求组发送至对应的数据源节点包括:
基于各所述事务请求组中的事务请求的发起时间,确定各所述事务请求组分别对应的发送顺序;
按照各所述事务请求组分别对应的发送顺序,将各所述事务请求组发送至对应的数据源节点。
3.根据权利要求2所述的方法,其特征在于,所述基于各所述事务请求组中的事务请求的发起时间,确定各所述事务请求组分别对应的发送顺序包括:
基于各所述事务请求组中的事务请求的发起时间,确定各所述事务请求组分别对应的最早发起时间;
确定各所述事务请求组分别对应的请求组标识;
基于各所述事务请求组的请求组标识和最早发起时间,确定各所述事务请求组分别对应的发送顺序。
4.根据权利要求1所述的方法,其特征在于,所述确定所述事务请求所请求访问的目标数据源节点,将所述事务请求加入至所述目标事务标识下相应的事务请求组中包括:
在所述目标事务标识下存在所述目标数据源节点对应的事务请求组的情况下,将所述事务请求加入所述目标数据源节点对应的事务请求组中;
在所述目标事务标识下不存在所述目标数据源节点对应的事务请求组的情况下,在所述目标事务标识下创建所述目标数据源节点对应的事务请求组,将所述事务请求加入创建的所述目标数据源节点对应的事务请求组中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述数据源节点返回的针对当前处理的事务请求组的处理结果;
在基于所述处理结果确定所述当前处理的事务请求组执行失败的情况下,利用所述数据源节点的回滚策略对所述当前处理的事务请求组进行回滚处理。
6.根据权利要求5所述的方法,其特征在于,所述事务请求还对应有事件标识;所述事件标识对应有预设回滚策略;
所述方法还包括:
在基于所述处理结果确定所述当前处理的事务请求组执行失败的情况下,确定各所述事务请求组中已执行成功的事务请求组;
确定所述已执行成功的事务请求组中各事务请求分别对应的事件标识;
利用确定出的各事件标识分别对应的预设回滚策略,对所述已执行成功的事务请求组进行回滚处理。
7.根据权利要求1所述的方法,其特征在于,所述事务请求包括结构化查询语句以及所述结构化查询语句的注释,所述结构化查询语句的注释中包括事务标识,所述方法还包括:
从所述事务请求中确定所述结构化查询语句的注释;
从确定到的所述结构化查询语句的注释中提取事务标识,得到所述事务请求对应的目标事务标识。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述事务请求对应的事务信息;所述事务信息包括事务标识和所述事务请求的标识;
从所述事务信息中提取事务标识,得到所述事务请求对应的目标事务标识。
9.根据权利要求1所述的方法,其特征在于,所述接收多个事务请求包括:
响应于第一微服务节点发送的事务发起请求,生成目标事务标识;
将所述目标事务标识返回至所述第一微服务节点;所述第一微服务节点将所述目标事务标识传递至第二微服务节点;所述第一微服务节点和所述第二微服务节点属于同一业务系统;所述业务系统属于分布式系统;
接收所述第一微服务节点和所述第二微服务节点分别发送的携带所述目标事务标识的事务请求。
10.根据权利要求9所述的方法,其特征在于,所述方法由数据网关执行,所述将所述目标事务标识下的各事务请求组发送至对应的数据源节点包括:
接收携带所述目标事务标识的事务提交请求;
在确定所述事务提交请求是由所述第一微服务节点发送的情况下,将所述目标事务标识下各事务请求组发送至对应的数据源节点;所述第一微服务节点在确定所述目标事务标识对应的各事务请求均发送至所述数据网关的情况下,向所述数据网关发送携带所述目标事务标识的事务提交请求。
11.根据权利要求9所述的方法,其特征在于,所述事务发起请求是所述第一微服务节点响应于交互请求发送的,所述交互请求是终端响应于目标应用中的交互操作触发的;
所述方法还包括:
在确定所述目标事务标识下各事务请求组均提交成功的情况下,向所述第一微服务节点返回用于指示事务提交成功的消息,以使得所述第一微服务节点向所述终端返回请求成功提示信息。
12.一种分布式事务处理装置,其特征在于,所述装置包括:
请求接收模块,用于接收多个事务请求;所述多个事务请求均对应同一目标事务标识,所述目标事务标识用于指示所述多个事务请求属于同一事务;所述多个事务请求中至少两个事务请求所请求访问的数据源节点不同;
请求分组模块,用于针对每个所述事务请求,确定所述事务请求所请求访问的目标数据源节点,将所述事务请求加入至所述目标事务标识下相应的事务请求组中;所述相应的事务请求组用于存储请求访问所述目标数据源节点的事务请求;所述目标事务标识下的同一事务请求组用于存储请求访问相同数据源节点的事务请求;
请求发送模块,用于将所述目标事务标识下的各事务请求组发送至对应的数据源节点;所述事务请求组用于指示对应的数据源节点处理所述事务请求组中的事务请求。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
CN202211506276.8A 2022-11-29 2022-11-29 分布式事务处理方法、装置、计算机设备和存储介质 Pending CN118113422A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211506276.8A CN118113422A (zh) 2022-11-29 2022-11-29 分布式事务处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211506276.8A CN118113422A (zh) 2022-11-29 2022-11-29 分布式事务处理方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN118113422A true CN118113422A (zh) 2024-05-31

Family

ID=91212979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211506276.8A Pending CN118113422A (zh) 2022-11-29 2022-11-29 分布式事务处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN118113422A (zh)

Similar Documents

Publication Publication Date Title
CN113711536B (zh) 从区块链网络中提取数据
CN109522330B (zh) 基于区块链的云平台数据处理方法、装置、设备及介质
US11847135B2 (en) Blockchain node and transaction method
CN108470298B (zh) 资源数值转移的方法、装置和系统
CN110163755B (zh) 基于区块链的数据压缩、查询方法及装置和电子设备
US11720545B2 (en) Optimization of chaincode statements
CN110557284B (zh) 基于客户端网关的数据聚合方法及装置
US10795882B2 (en) Blockchain-based data compression and searching
CN109614271A (zh) 多个集群数据一致性的控制方法、装置、设备及存储介质
CN112866421A (zh) 基于分布式缓存以及nsq的智能合约运行方法及装置
CN112995014B (zh) 消息群发的方法及装置
CN114675982A (zh) 一种业务集成系统的数据获取通用方法及系统
CN109218272A (zh) 媒体内容推送方法、装置、服务器、系统及存储介质
CN116166514A (zh) 多渠道数据联动处理方法、装置、计算机设备和存储介质
CN118113422A (zh) 分布式事务处理方法、装置、计算机设备和存储介质
CN117952748A (zh) 智能合约处理方法、装置、设备、存储介质和程序产品
US20230334726A1 (en) Blockchain-based data processing method and apparatus, device, storage medium, and program product
CN118449853A (zh) 访问数据处理方法、装置、计算机设备和可读存储介质
CN117114665A (zh) 一种统一转账系统和方法
CN116628666A (zh) 交互方法、装置、计算机设备和存储介质
CN117422396A (zh) 业务审批处理方法、装置、计算机设备和存储介质
CN117112693A (zh) 数据管理方法、装置及系统
CN116737375A (zh) 资源分配方法、装置、计算机设备和存储介质
CN117035981A (zh) 基于区块链的资源申请方法、装置、设备和存储介质
CN118573690A (zh) 信息处理方法、装置、电子设备、存储介质及程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication