CN115422225A - 分布式事务处理方法及事务管理器、中间件、系统 - Google Patents
分布式事务处理方法及事务管理器、中间件、系统 Download PDFInfo
- Publication number
- CN115422225A CN115422225A CN202211114286.7A CN202211114286A CN115422225A CN 115422225 A CN115422225 A CN 115422225A CN 202211114286 A CN202211114286 A CN 202211114286A CN 115422225 A CN115422225 A CN 115422225A
- Authority
- CN
- China
- Prior art keywords
- transaction
- target
- statement
- middleware
- link
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种分布式事务处理方法及事务管理器、中间件、系统,涉及数据库分布式管理技术领域,主要目的在于解决基于中间件的分布式事务处理方法,开发效率较低的问题。主要包括响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件。主要用于处理分布式事务。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种分布式事务处理方法及事务管理器、中间件、系统。
背景技术
分布式事务是指涉及多个数据库,需要通过事务管理器协调多个数据库共同完成的操作。随着互联网的不断发展,以及用户隐私法不断普及落地,为了满足系统对分布式事务处理过程中数据库安全性的要求,更多企业选择将中间件引入分布式事务处理过程。引入中间件作为事务管理器,由中间件根据应用程序请求生成事务语句,并将事务语句发送至数据库。
现有基于中间件的分布式事务处理方法,将中间件作为事务管理器,由中间件根据应用程序请求的数据库生成事务语句,并将事务语句发送至数据库。但由于中间件与应用程序的兼容性问题,为了满足分布式数据库的业务处理需求,在引入中间件的开发阶段,需要对应用程序的原有业务逻辑进行修改,因而产生较大的开发工作量,造成开发工作成本较高,开发效率较低。
发明内容
有鉴于此,本发明提供一种分布式事务处理方法及事务管理器、中间件、系统,主要目的在于解决现有基于中间件的分布式事务处理方法,开发效率较低的问题。
依据本发明一个方面,提供了一种分布式事务处理方法,包括:
响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析。
进一步地,所述根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,包括:
根据所述业务信息解析得到目标资源管理器,并为所述目标资源管理器配置对应的分支事务;
根据所述分支事务生成开始事务语句,并基于所述目标资源管理器对应的配置信息配置初始事务链接;
基于所述业务类型、所述开始事务语句的事务语句类型从所述初始事务链接中确定出目标事务链接。
进一步地,所述基于所述业务类型、所述开始事务语句的事务语句类型从所述事务链接中确定出目标事务链接,包括:
若所述事务语句类型为非分布式事务语句,则确定目标事务链接为中间件链接;
若所述事务语句类型为分布式事务语句,则从安全级别映射关系集中识别出与所述业务类型匹配的目标安全级别;
若所述目标安全级别为第一安全级别,则将所述中间件链接确定为目标事务链接;
若所述目标安全级别为第二安全级别,则将所述非中间件链接确定为目标事务链接;
其中,所述第一安全级别大于所述第二安全级别。
依据本发明一个方面,提供了另一种分布式事务处理方法,包括:
接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理。
进一步地,通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型,包括:
基于预先构建的语法分析器对所述目标事务语句进行语法分析,得到所述目标事务语句的语法分析结果;
若所述语法分析结果与预设分布式事务语法规则匹配成功,则确定所述目标事务语句的事务语句类型为分布式事务语句;
若所述语法分析结果与预设分布式事务语法规则匹配失败,则确定所述目标事务语句的事务语句类型为非分布式事务语句。
进一步地,所述接收目标事务管理器发送的目标事务语句之后,所述方法还包括:
在接收到所述结束事务语句之前,若接收到非目标事务管理器发送的非目标事务语句,则生成用于指示资源已占用的预警信息,并将所述预警信息发生至所述非目标事务管理器。
进一步地,所述目标事务语句为开始事务语句,所述将所述目标事务语句转发至目标资源管理器之后,所述方法还包括:
接收所述目标资源管理器反馈的分支事务执行状态,并将所述分支事务执行状态发送至所述目标事务管理器。
依据本发明一个方面,提供了一种事务管理器,包括:
确定模块,用于响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
第一发送模块,用于若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
第二发送模块,用于根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析。
进一步地,所述确定模块,包括:
第一配置单元,用于根据所述业务信息解析得到目标资源管理器,并为所述目标资源管理器配置对应的分支事务;
第二配置单元,用于根据所述分支事务生成开始事务语句,并基于所述目标资源管理器对应的配置信息配置初始事务链接;
确定单元,用于基于所述业务类型、所述开始事务语句的事务语句类型从所述初始事务链接中确定出目标事务链接。
进一步地,在具体应用场景中,所述确定单元用于若所述事务语句类型为非分布式事务语句,则确定目标事务链接为中间件链接;
若所述事务语句类型为分布式事务语句,则从安全级别映射关系集中识别出与所述业务类型匹配的目标安全级别;
若所述目标安全级别为第一安全级别,则将所述中间件链接确定为目标事务链接;
若所述目标安全级别为第二安全级别,则将所述非中间件链接确定为目标事务链接;
其中,所述第一安全级别大于所述第二安全级别。
依据本发明一个方面,提供了一种中间件,包括:
接收模块,用于接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
分析模块,用于通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
转发模块,用于若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理。
进一步地,所述分析模块,包括:
分析单元,用于基于预先构建的语法分析器对所述目标事务语句进行语法分析,得到所述目标事务语句的语法分析结果;
第一匹配单元,用于若所述语法分析结果与预设分布式事务语法规则匹配成功,则确定所述目标事务语句的事务语句类型为分布式事务语句;
第二匹配单元,用于若所述语法分析结果与预设分布式事务语法规则匹配失败,则确定所述目标事务语句的事务语句类型为非分布式事务语句。
进一步地,所述中间件还包括:
预警模块,用于在接收到所述结束事务语句之前,若接收到非目标事务管理器发送的非目标事务语句,则生成用于指示资源已占用的预警信息,并将所述预警信息发生至所述非目标事务管理器。
进一步地,所述中间件还包括:
所述转发模块,还用于接收所述目标资源管理器反馈的分支事务执行状态,并将所述分支事务执行状态发送至所述目标事务管理器。
依据本发明一个方面,提供一种分布式事务处理系统,包括:事务管理器、中间件、资源管理器;
所述事务管理器,用于响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
所述事务管理器,还用于若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
所述事务管理器,还用于根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析;
所述中间件,用于接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
所述中间件,还用于通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
所述中间件,还用于若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理;
所述资源管理器,用于接收所述中间件或所述事务管理器发送的目标事务语句。
本发明提供了一种分布式事务处理方法及事务管理器、中间件、系统,本发明实施例通过事务管理器响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析,中间件接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理,大大降低了分布式事务处理的安全风险,实现了事务语句传输方式的灵活配置,从而有效提升分布式事务处理的安全性,同时,在基于中间件的分布式事务处理过程中,由应用程序担当事务管理器对分布式事务进行配置,能够避免对系统原有业务逻辑的改动,大大降低开发工作量,从而有效降低开发成本、提升开发效率
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种分布式事务处理方法流程图;
图2示出了本发明实施例提供的另一种分布式事务处理方法流程图;
图3示出了本发明实施例提供的一种事务管理器组成框图;
图4示出了本发明实施例提供的一种中间件组成框图;
图5示出了本发明实施例提供的一种分布式事务处理系统组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有基于中间件的分布式事务处理方法,将中间件作为事务管理器,由中间件根据应用程序请求的数据库生成事务语句,并将事务语句发送至数据库。但由于中间件与应用程序的兼容性问题,为了满足分布式数据库的业务处理需求,在引入中间件的开发阶段,需要对应用程序的原有业务逻辑进行修改,因而产生较大的开发工作量,造成开发工作成本较高,开发效率较低的技术问题。本发明实施例提供了一种分布式事务处理方法,如图1所示,该方法包括:
101、响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接。
本发明实施例中,执行主体为事务管理器,由应用程序担任事务管理器,例如ERP系统。开始事务语句为目标事务管理器接收到目标资源管理器反馈的分支事务执行状态之前生成的XA事务标识语句。例如,XA START xid、XA BEGIN xid、XA END xid等。其中,XA是由X/Open组织提出的分布式事务处理规范,主要定义了事务管理器TM和局部资源管理器RM之间的接口。待处理业务为需要对两个及两个以上分布式数据库进行增、删、改、查的业务。例如,订单推仓业务,在订单推仓过程中,需要对商品库存数据库进行查询及修改,同时,还需要对存储商品订单信息的数据库进行查询。业务信息包括业务所对应的具体内容,例如,订单生成业务信息包括商品编号信息、商品交易数量信息等内容。基于业务信息能够确定需要执行分布式事务的目标资源管理器,以及目标资源管理器对应的分支事务。根据目标资源管理器的数据库列表配置用于向目标资源管理器传输事务语句的初始事务链接,以及根据目标资源管理器对应的分支事务生成开始事务语句。其中,初始事务链接包括与每个目标资源管理器分别对应的中间件链接、非中间件链接。例如,目标资源管理器包括数据库A、数据库B,中间件为S,则中间件链接包括S-A、S-B,非中间件链接包括A、B。中间件链接的数据安全性高于非中间件链接。
进一步地,在得到初始事务链接之后,由于初始事务链接包括中间件链接、非中间件链接的不同链接选择,需要基于业务类型配置对应的事务链接。其中,业务类型可以包括销售业务类型、采购业务类型、出库业务类型、入库业务类型等,本发明实施例不做具体限定。具体地,基于不用业务类型所对应的不同分布式事务处理需求,从初始事务链接中确定出用于传输开始事务语句的目标事务链接。例如,业务类型所对应的分布式事务处理需求为安全级别需求,销售业务类型、采购业务类型的数据库查询过程涉及用户个人信息及金额敏感信息,对数据性安全性要求较高,对应的安全级别较高;出库业务类型、入库业务类型的数据库查询过程未涉及隐私及敏感信息,对应的安全级别较低。
需要说明的是,在事务管理器与资源管理器之间增加中间件,由中间件将事务管理器发出的目标事务语句及查询语句转发至资源管理器,避免由应用程序(目标事务管理器)直接与数据库交互,从而提高分布式事务处理的安全性。此外,通过配置包括中间件链接及非中间件链接的初始事务链接,为分布式事务的传输路径提供了多种选择,基于业务类型确定目标事务链接,对不同分布式事务处理需求的业务,使用相应的事务链接,实现对事务语句传输方式有针对性的灵活配置,从而提升分布式事务处理的灵活性、及适用性。
102、若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态。
本发明实施例中,中间件链接即为通过中间件与目标资源管理器交互的链接,每个中间件对应一个目标资源管理器。因此,当所述目标事务链接为中间件链接时,将开始事务语句发送至中间件链接中的目标中间件,以使目标中间件将开始事务语句转发至目标资源管理器。非中间件链接即为与目标资源管理器直接交互的链接,当所述目标事务链接为非中间件链接时,将开始事务语句直接发送至目标资源管理器,以使目标资源管理器执行对应分支事务即可,不需要通过目标中间件转发。在发出开始事务语句之后,还需要根据每个目标资源管理器反馈的分支事务执行状态进行分析,以指示目标资源管理器下一步事务执行动作的,因此,需要得到分支事务执行状态。
103、根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件。
本发明实施例中,结束事务语句为由事务管理器基于目标资源管理器反馈的分支事务执行状态生成的事务标识语句。例如,XA COMMIT xid、XA ROLLBACK xid等。在接受到每个目标资源管理器反馈的分支事务执行状态之后,根据分支事务执行状态确定结束事务语句。具体地,若全部分支事务执行状态均为成功,则生成用于指示执行提交操作的结束事务语句,若存在任一分支事务执行状态为失败,则生成用于指示执行回滚操作的结束事务语句,由应用程序担当事务管理器,对分布式事务的事务开始语句及结束事务语句进行配置,能够避免对系统原有业务逻辑的改动,大大降低开发工作量,从而有效降低开发成本、提升开发效率。
需要说明的是,所述开始事务语句与所述结束事务语句的事务语句类型一致,所述事务语句类型包括分布式事务语句、非分布式事务语句。由于开始事务语句与结束事务语句对应同一待处理业务所触发的分布式事务,因此,当开始事务语句为分布式事务语句时,结束事务语句也为分布式事务语句。以使目标中间件对开始事务语句及结束事务语句的处理方式相同。
在一个本发明实施例中,为了进一步说明及限定,步骤101所述根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,包括:
根据所述业务信息解析得到目标资源管理器,并为所述目标资源管理器配置对应的分支事务。
根据所述分支事务生成开始事务语句,并基于所述目标资源管理器对应的配置信息配置初始事务链接。
基于所述业务类型、所述开始事务语句的事务语句类型从所述初始事务链接中确定出目标事务链接。
本发明实施例中,针对系统中预存有对应分布式事务的业务,则可以生成分布式事务语句。针对系统中不包括对应分布式事务的业务,则生成非分布式事务,也称普通事务。因此,开始事务语句可以为分布式事务语句,也可以为非分布式事务。基于所述目标资源管理器对应的配置信息配置初始事务链接的具体实现过程如步骤101所述,此处不再赘述。
在一个本发明实施例中,为了进一步说明及限定,所述基于所述业务类型、所述开始事务语句的事务语句类型从所述事务链接中确定出目标事务链接,包括:
若所述事务语句类型为非分布式事务语句,则确定目标事务链接为中间件链接。
若所述事务语句类型为分布式事务语句,则从安全级别映射关系集中识别出与所述业务类型匹配的目标安全级别。
若所述目标安全级别为第一安全级别,则将所述中间件链接确定为目标事务链接。
若所述目标安全级别为第二安全级别,则将所述非中间件链接确定为目标事务链接。
本发明实施例中,所述第一安全级别大于所述第二安全级别。由于非分布式事务无法被目标资源管理器识别,需要发送至中间件进行转换,当开始事务语句为非分布式事务时,目标事务链接为中间件链接。当开始事务语句的事务语句类型为分布式事务语句时,既可以直接发送至目标资源管理器,也可以通过中间件发送至目标资源管理器。因此,需要进一步基于业务类型确定目标事务链接。本发明实施例中,预设有安全级别映射关系集,其中包括与不同业务类型存在映射关系的安全级别。可以从安全级别映射关系集中匹配出与业务类型对应的目标安全级别,进而根据目标安全级别确定目标事务链接。
需要说明的是,通过配置包括中间件链接及非中间件链接的初始事务链接,为分布式事务的传输路径提供了对应不同安全级别的选择,并基于业务类型确定目标事务链接,对不同安全性要求的业务,使用不同安全级别的事务链接,实现对事务语句传输方式有针对性的灵活配置,从而提升分布式事务处理安全性。
本发明提供了一种分布式事务处理方法,本发明实施例通过响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析,大大降低了分布式事务处理的安全风险,实现了事务语句传输方式的灵活配置,从而有效提升分布式事务处理的安全性,同时,在基于中间件的分布式事务处理过程中,由应用程序担当事务管理器对分布式事务进行配置,能够避免对系统原有业务逻辑的改动,大大降低开发工作量,从而有效降低开发成本、提升开发效率。
依据本发明一个方面,本发明实施例提供了另一种分布式事务处理方法,如图2所示,该方法包括:
201、接收目标事务管理器发送的目标事务语句。
本发明实施例中,目标事务语句为用于表达目标事务管理器发起的分布式事务的语句,可以为对应分布式事务处理过程中的开始事务语句、结束事务语句。执行主体为中间件,该中间件为在现有数据库中间件ShardingSphere的基础上进行源代码优化得到的。具体地,构建能够对SQL分布式事务语句进行分析的语法树,并基于语法树对ShardingSphere进行优化,使得优化后的中间件能够识别现有ShardingSphere无法识别的SQL分布式事务语句。
需要说明的是,考虑到若以中间件作为事务管理器,在将引入中间件的过程中,为了使数据库及应用程序能够迁入中间件,且满足原有业务处理需求,需要对原有应用程序的业务逻辑及代码进行修改,导致开发工作量较大,开发效率降低。通过继续以应用程序作为事务管理器,将中间件作为分布式事务的转发组件,能够大大降低开发工作量,实现中间件的无感知引入,从而在提高分布式事务处理安全性的同时,降低开发难度,有效提升开发效率。
202、通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型。
本发明实施例中,由于应用程序(事务管理器)会根据自身的业务逻辑将分布式事务以分布式事务语句或非分布式事务语句(普通事务语句)的方式呈现,目标事务语句可以为分布式事务语句,也可以为非分布式事务语句。而对于分布式事务语句和非分布式事务语句的转发方式是不同的。因此,需要基于语法树对收到的目标事务语句进行语法分析,以根据目标事务语句的语法结构确定对应的事务语句类型是分布式事务语句,还是非分布式事务语句。
需要说明的是,现有的中间件仅能够对非分布式事务语句进行转换处理,得到分布式事务语句,但不支持对SQL分布式事务语句的识别,当接收到应用程序发送的SQL分布式事务语句时,无法识别,仅进行异常报错处理,从而阻碍事务的处理及业务的推进。本发明实施例中优化后的中间件能够基于预先配置的语法树识别出分布式事务语句,从而保障分布式事务处理的成功率。
203、若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理。
本发明实施例中,若分析出目标事务语句为分布式事务语句,则表明目标事务语句为与目标资源管理器对应的分支事务标识语句。该分支事务标识语句可以为分布式事务处理过程中的任一分布式事务标识语句。例如,用于指示事务开始的语句“XA BEGIN xid”、用于指示事务提交的语句“XA COMMIT xid”等。分支事务标识语句为资源管理器支持的事务语句,可以直接转发至目标资源管理器。其中,目标资源管理器为分布式事务中的一个节点数据库,数据库类型可以为MYSQL5.7,也可以根据具体应用需求配置,本发明实施例不做具体限定。
需要说明的是,若分析出目标事务语句为非分布式事务语句,则需要将非分布式事务语句转换为目标资源管理器能够识别的分布式事务标识语句,进而转发至对应的目标资源管理器。基于中间件对非分布式事务语句进行转换的过程为中间件的现有技术手段,本发明实施例在此不再赘述。通过对不同事务语句类型的目标事务语句,按照对应的方式进行转发,使应用程序无需感知中间件的存在,避免对应用程序业务逻辑及代码的修改,大大降低了开发工作量,从而在保障数据库安全性的同时,有效提升开发效率,降低开发成本。
在一个本发明实施例中,为了进一步说明及限定,步骤202通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型,包括:
基于预先构建的语法分析器对所述目标事务语句进行语法分析,得到所述目标事务语句的语法分析结果。
若所述语法分析结果与预设分布式事务语法规则匹配成功,则确定所述目标事务语句的事务语句类型为分布式事务语句。
若所述语法分析结果与预设分布式事务语法规则匹配失败,则确定所述目标事务语句的事务语句类型为非分布式事务语句。
本发明实施例中,语法分析器为基于antlr语法分析器构建的,支持SQL分布式事务标识语句的分析,以及非分布式事务语句的分析。基于语法分析器对目标事务语句进行左递归语法分析,得到目标事务语句的语法树结构,即语法分析结果。将得到的语法分析结果与预设分布式事务语法规则进行匹配。其中,预设分布式事务语法规则为基于不同分布式事务标识语句对应的语法结构配置的。当语法分析结果符合某一分布式事务标识语句对应的语法规则时,则认为匹配成功,确定语法分析结果所对应的目标事务语句的事务语句类型为分布式事务语句。反之,则确定语法分析结果所对应的目标事务语句的事务语句类型为非分布式事务语句。
在一个本发明实施例中,为了进一步说明及限定,步骤203所述接收目标事务管理器发送的目标事务语句之后,所述方法还包括:
在接收到所述结束事务语句之前,若接收到非目标事务管理器发送的非目标事务语句,则生成用于指示资源已占用的预警信息,并将所述预警信息发生至所述非目标事务管理器。
本发明实施例中,用于表征事务结束的目标事务语句具体可以为“XA COMMITxid”或“XA ROLLBACK xid”等。非目标事务管理器为除目标事务管理器之外的其他事务管理器。非目标事务语句为除目标事务语句所对应的当前事务以外的其他事务所对应的事务语句。为了避免在当前事务执行过程中,向目标资源管理器发送非当前事务的事务语句,造成当前事务执行异常,需要保证当前目标资源管理器链接仅接收当前事务所对应的事务语句。若接收到非目标事务语句,则通过发送预警信息的方式拒绝非目标事务管理器发送的非目标事务语句,从而保障当前分布式事务执行的成功率。
在一个本发明实施例中,为了进一步说明及限定,所述目标事务语句为开始事务语句,所述将所述目标事务语句转发至目标资源管理器之后,所述方法还包括:
接收所述目标资源管理器反馈的分支事务执行状态,并将所述分支事务执行状态发送至所述目标事务管理器。
本发明实施例中,当开始事务语句用于指示目标资源管理器提交分支事务执行状态时,如“XA END xid”,则需要接收目标资源管理器反馈的分支事务执行状态,并将其转发至目标事务管理器,以使目标事务管理器做出事务决策。
本发明提供了一种分布式事务处理方法,本发明实施例通过接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理,大大降低了分布式事务处理的安全风险,同时,又避免产生较大的开发工作量,从而有效提升分布式事务处理的安全性。
进一步的,作为对上述图1所示方法的实现,本发明实施例提供了一种事务管理器,如图3所示,该事务管理器包括:
确定模块31,用于响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
第一发送模块32,用于若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
第二发送模块33,用于根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析。
进一步地,所述确定模块31,包括:
第一配置单元,用于根据所述业务信息解析得到目标资源管理器,并为所述目标资源管理器配置对应的分支事务;
第二配置单元,用于根据所述分支事务生成开始事务语句,并基于所述目标资源管理器对应的配置信息配置初始事务链接;
确定单元,用于基于所述业务类型、所述开始事务语句的事务语句类型从所述初始事务链接中确定出目标事务链接。
进一步地,在具体应用场景中,所述确定单元用于若所述事务语句类型为非分布式事务语句,则确定目标事务链接为中间件链接;
若所述事务语句类型为分布式事务语句,则从安全级别映射关系集中识别出与所述业务类型匹配的目标安全级别;
若所述目标安全级别为第一安全级别,则将所述中间件链接确定为目标事务链接;
若所述目标安全级别为第二安全级别,则将所述非中间件链接确定为目标事务链接;
其中,所述第一安全级别大于所述第二安全级别。
进一步的,作为对上述图2所示方法的实现,本发明实施例提供了一种中间件,如图4所示,该中间件包括:
接收模块41,用于接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
分析模块42,用于通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
转发模块43,用于若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理。
进一步地,所述分析模块42,包括:
分析单元,用于基于预先构建的语法分析器对所述目标事务语句进行语法分析,得到所述目标事务语句的语法分析结果;
第一匹配单元,用于若所述语法分析结果与预设分布式事务语法规则匹配成功,则确定所述目标事务语句的事务语句类型为分布式事务语句;
第二匹配单元,用于若所述语法分析结果与预设分布式事务语法规则匹配失败,则确定所述目标事务语句的事务语句类型为非分布式事务语句。
进一步地,所述中间件还包括:
预警模块,用于在接收到所述结束事务语句之前,若接收到非目标事务管理器发送的非目标事务语句,则生成用于指示资源已占用的预警信息,并将所述预警信息发生至所述非目标事务管理器。
进一步地,所述中间件还包括:
所述转发模块43,还用于接收所述目标资源管理器反馈的分支事务执行状态,并将所述分支事务执行状态发送至所述目标事务管理器。
依据本发明一个方面,提供一种分布式事务处理系统,包括:事务管理器51、中间件52、资源管理器53;
所述事务管理器51,用于响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
所述事务管理器51,还用于若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
所述事务管理器51,还用于根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析;
所述中间件52,用于接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
所述中间件52,还用于通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
所述中间件52,还用于若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理;
所述资源管理器53,用于接收所述中间件或所述事务管理器发送的目标事务语句。
本发明提供了一种分布式事务处理方法及事务管理器、中间件、系统,本发明实施例通过事务管理器响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析,中间件接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理,大大降低了分布式事务处理的安全风险,实现了事务语句传输方式的灵活配置,从而有效提升分布式事务处理的安全性,同时,在基于中间件的分布式事务处理过程中,由应用程序担当事务管理器对分布式事务进行配置,能够避免对系统原有业务逻辑的改动,大大降低开发工作量,从而有效降低开发成本、提升开发效率。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (10)
1.一种分布式事务处理方法,其特征在于,所述方法应用于事务管理器,包括:
响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析。
2.根据权利要求1所述的方法,其特征在于,所述根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,包括:
根据所述业务信息解析得到目标资源管理器,并为所述目标资源管理器配置对应的分支事务;
根据所述分支事务生成开始事务语句,并基于所述目标资源管理器对应的配置信息配置初始事务链接;
基于所述业务类型、所述开始事务语句的事务语句类型从所述初始事务链接中确定出目标事务链接。
3.根据权利要求2所述的方法,其特征在于,所述基于所述业务类型、所述开始事务语句的事务语句类型从所述事务链接中确定出目标事务链接,包括:
若所述事务语句类型为非分布式事务语句,则确定目标事务链接为中间件链接;
若所述事务语句类型为分布式事务语句,则从安全级别映射关系集中识别出与所述业务类型匹配的目标安全级别;
若所述目标安全级别为第一安全级别,则将所述中间件链接确定为目标事务链接;
若所述目标安全级别为第二安全级别,则将所述非中间件链接确定为目标事务链接;
其中,所述第一安全级别大于所述第二安全级别。
4.一种分布式事务处理方法,其特征在于,所述方法应用于中间件,包括:
接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理。
5.根据权利要求4所述的方法,其特征在于,通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型,包括:
基于预先构建的语法分析器对所述目标事务语句进行语法分析,得到所述目标事务语句的语法分析结果;
若所述语法分析结果与预设分布式事务语法规则匹配成功,则确定所述目标事务语句的事务语句类型为分布式事务语句;
若所述语法分析结果与预设分布式事务语法规则匹配失败,则确定所述目标事务语句的事务语句类型为非分布式事务语句。
6.根据权利要求4所述的方法,其特征在于,所述接收目标事务管理器发送的目标事务语句之后,所述方法还包括:
在接收到所述结束事务语句之前,若接收到非目标事务管理器发送的非目标事务语句,则生成用于指示资源已占用的预警信息,并将所述预警信息发生至所述非目标事务管理器。
7.根据权利要求4所述的方法,其特征在于,所述目标事务语句为开始事务语句,所述将所述目标事务语句转发至目标资源管理器之后,所述方法还包括:
接收所述目标资源管理器反馈的分支事务执行状态,并将所述分支事务执行状态发送至所述目标事务管理器。
8.一种事务管理器,其特征在于,包括:
确定模块,用于响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
第一发送模块,用于若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
第二发送模块,用于根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析。
9.一种中间件,其特征在于,包括:
接收模块,用于接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
分析模块,用于通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
转发模块,用于若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理。
10.一种分布式事务处理系统,其特征在于,包括:事务管理器、中间件、资源管理器;
所述事务管理器,用于响应于业务处理请求,根据待处理业务的业务信息、业务类型确定开始事务语句、目标事务链接,所述目标事务链接为中间件链接或非中间件链接;
所述事务管理器,还用于若所述目标事务链接为中间件链接,则通过所述目标事务链接将所述开始事务语句发送至目标中间件,并接收所述目标中间件发送的分支事务执行状态;
所述事务管理器,还用于根据所述分支事务执行状态确定结束事务语句,并通过所述目标事务链接将所述结束事务语句发送至所述目标中间件,以使得中间件对所述开始事务语句、结束事务语句进行语法分析;
所述中间件,用于接收目标事务管理器发送的目标事务语句,所述目标事务语句包括开始事务语句、结束事务语句中的一个;
所述中间件,还用于通过对所述目标事务语句进行语法分析,确定所述目标事务语句所对应的事务语句类型;
所述中间件,还用于若所述事务语句类型为分布式事务语句,则将所述目标事务语句转发至目标资源管理器,以使所述目标资源管理器基于所述目标事务语句进行事务处理;
所述资源管理器,用于接收所述中间件或所述事务管理器发送的目标事务语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211114286.7A CN115422225A (zh) | 2022-09-14 | 2022-09-14 | 分布式事务处理方法及事务管理器、中间件、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211114286.7A CN115422225A (zh) | 2022-09-14 | 2022-09-14 | 分布式事务处理方法及事务管理器、中间件、系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115422225A true CN115422225A (zh) | 2022-12-02 |
Family
ID=84203159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211114286.7A Pending CN115422225A (zh) | 2022-09-14 | 2022-09-14 | 分布式事务处理方法及事务管理器、中间件、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115422225A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115766865A (zh) * | 2023-01-09 | 2023-03-07 | 利尔达科技集团股份有限公司 | 一种面向5g智能终端异构平台应用服务方法及系统 |
-
2022
- 2022-09-14 CN CN202211114286.7A patent/CN115422225A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115766865A (zh) * | 2023-01-09 | 2023-03-07 | 利尔达科技集团股份有限公司 | 一种面向5g智能终端异构平台应用服务方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9247022B2 (en) | Method and apparatus for optimizing performance and network traffic in distributed workflow processing | |
WO2020000720A1 (zh) | 服务器、报文处理方法、程序和计算机可读存储介质 | |
CN106503974B (zh) | 交易数据处理方法及装置 | |
CN111309550A (zh) | 应用程序的数据采集方法、系统、设备和存储介质 | |
KR102417742B1 (ko) | Api 데이터 수집시스템 및 그에 관한 방법 | |
CN111240955A (zh) | Http接口自动化测试方法及装置、存储介质、电子设备 | |
CN110011875A (zh) | 拨测方法、装置、设备及计算机可读存储介质 | |
CN110389765A (zh) | 一种参数校验方法和参数校验系统 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
CN110609755A (zh) | 跨区块链节点的消息处理方法及装置、设备、介质 | |
CN112068973A (zh) | 策略模式的异步信息处理方法、装置、服务器和存储介质 | |
CN115422225A (zh) | 分布式事务处理方法及事务管理器、中间件、系统 | |
CN113901083A (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
US20130138801A1 (en) | System and method for adaptive data monitoring | |
CN113297081B (zh) | 一种持续集成流水线的执行方法和装置 | |
CN108874837A (zh) | 数据库分库方法、装置、中间件及存储介质和电子设备 | |
CN112035270A (zh) | 接口适配方法、系统、装置、计算机可读介质及电子设备 | |
CN113885876A (zh) | 一种参数校验方法、装置、存储介质及计算机系统 | |
CN111831536A (zh) | 一种自动化测试方法和装置 | |
US9258187B2 (en) | System and method for optimizing and digitally correcting errors on a computer system | |
CN113191889A (zh) | 风控配置方法、配置系统、电子设备及可读存储介质 | |
KR20170130911A (ko) | Dds-dbms 연동 도구의 실시간 변경 데이터 발간 서비스 수행 방법 | |
CN111949862B (zh) | 一种管理业务任务流程的方法、装置和电子设备 | |
CN114707961A (zh) | 基于审批流配置的待审批任务执行方法、装置、设备、介质和程序产品 | |
CN113986462A (zh) | 一种基于k8s的运维系统、应用方法及存储介质 |
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 |