CN112527472A - 基于微服务的分布式事务处理系统和方法 - Google Patents
基于微服务的分布式事务处理系统和方法 Download PDFInfo
- Publication number
- CN112527472A CN112527472A CN202011297402.4A CN202011297402A CN112527472A CN 112527472 A CN112527472 A CN 112527472A CN 202011297402 A CN202011297402 A CN 202011297402A CN 112527472 A CN112527472 A CN 112527472A
- Authority
- CN
- China
- Prior art keywords
- message
- database
- sends
- middleware
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种基于微服务的分布式事务处理系统和方法,涉及数据处理技术领域,其中,系统包括:包括:第一系统向消息中间件发送预设消息,在发送成功的情况下,第一系统对第一数据库进行操作,并向消息中间件发送确认消息;第二系统通过消息中间件接收确认信息,第二系统对第二数据库进行操作,并向消息中间件发送回执消息;在第一系统向消息中间件发送确认消息之后,在分布式应用程序协调服务建立消息节点并持续监听,在获取第二系统对第二数据库进行操作失败的情况下,向第一系统发送执行失败信息,以使第一系统再次发送确认消息。由此,实现了多个系统分布式事务一致性问题,并且实现了最终一致性和可靠消息传递。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于微服务的分布式事务处理系统和方法。
背景技术
在微服务下,系统会拆分为若干个子系统,当一个实例需要跨过多子系统才能完成时候时,为了保证整个过程的一致性,此时需要使用分布式事务的一种解决方案。比如:典型的购物网站的下单支付流程,至少会涉及交易系统和支付系统,整个过程是必须保证强一致性。由于分布式事务中事务的参与者,支持事务的服务器,资源服务器以及事务管理器分别为了不同的系统的不同节点上,给分布式事务的实施带来了巨大的阻碍。
相关技术中,将长事务拆分为多个本地短事务并通过事务协调器协调,如果正常结束意味事务提交成功,如果某个步骤失败,则根据相反顺序依次调用补偿操作,然而服务之间存在循环依赖的故障风险,以及当涉及的步骤较多,服务间关系混乱,难以跟踪服务链路和服务测试。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种基于微服务的分布式事务处理系统,通过基于消息中间件实现分布式事务,消息数据独立存储,降低业务与消息系统的耦合,并且方案实现简单。
本申请的第二个目的在于提出一种基于微服务的分布式事务处理方法。
本申请的第三个目的在于提出一种计算机设备。
本申请的第四个目的在于提出一种非临时性计算机可读存储介质。
本申请的第五个目的在于提出一种计算机程序产品。
为达上述目的,本申请第一方面实施例提出了一种基于微服务的分布式事务处理系统,包括:第一系统、第二系统、第一数据库、第二数据库、消息中间件以及分布式应用程序协调服务;
第一系统向所述消息中间件发送预设消息,在发送成功的情况下,所述第一系统对所述第一数据库进行操作,并向所述消息中间件发送确认消息;
第二系统通过所述消息中间件接收所述确认信息,所述第二系统对所述第二数据库进行操作,并向所述消息中间件发送回执消息;
在所述第一系统向所述消息中间件发送确认消息之后,在所述分布式应用程序协调服务建立消息节点并持续监听,在获取所述第二系统对所述第二数据库进行操作失败的情况下,向所述第一系统发送执行失败信息,以使所述第一系统再次发送所述确认消息。
本申请实施例的基于微服务的分布式事务处理系统,通过第一系统向消息中间件发送预设消息,在发送成功的情况下,第一系统对第一数据库进行操作,并向消息中间件发送确认消息;第二系统通过消息中间件接收确认信息,第二系统对第二数据库进行操作,并向消息中间件发送回执消息;在第一系统向消息中间件发送确认消息之后,在分布式应用程序协调服务建立消息节点并持续监听,在获取第二系统对第二数据库进行操作失败的情况下,向第一系统发送执行失败信息,以使第一系统再次发送确认消息。由此,通过基于消息中间件实现分布式事务,实现多个系统分布式事务一致性,并且实现了最终一致性和可靠消息传递。
在本申请的一个实施例中,所述第一系统向所述消息中间件发送预设消息,在发送失败的情况下,所述第一系统停止对所述第一数据库进行操作。
在本申请的一个实施例中,所述消息中间件按照预设时间间隔轮询所有的预设消息回调系统发送方第一系统的接口,获取对所述第一数据库进行操作失败没有发送确认消息,在对所述第一数据库进行操作成功的情况下,发送所述确认消息。
在本申请的一个实施例中,在消息发送失败的情况下,所述消息存储在日志文件中;
在消息发送时间大于预设时间阈值时,通过查询日志文件的接口检测所述消息是否在所述消息中间件存储成功。
在本申请的一个实施例中,采用消息持久化到所述日志文件中,其中,通过支持刷盘和异步刷盘的操作保证数据的持久化。
在本申请的一个实施例中,当所述第二系统对所述第二数据库进行操作成功后,通过在远程字典服务进行记录标识代表该消息已经处理,当重复消息传递过来时直接报错或者抛出异常。
在本申请的一个实施例中,对所述第一数据库、所述第二数据库的操作永久保存对应数据库中。
为达上述目的,本申请第二方面实施例提出了一种基于微服务的分布式事务处理方法,包括:
第一系统向所述消息中间件发送预设消息,在发送成功的情况下,所述第一系统对所述第一数据库进行操作,并向所述消息中间件发送确认消息;
第二系统通过所述消息中间件接收所述确认信息,所述第二系统对所述第二数据库进行操作,并向所述消息中间件发送回执消息;
在所述第一系统向所述消息中间件发送确认消息之后,在所述分布式应用程序协调服务建立消息节点并持续监听,在获取所述第二系统对所述第二数据库进行操作失败的情况下,向所述第一系统发送执行失败信息,以使所述第一系统再次发送所述确认消息。
本申请实施例的基于微服务的分布式事务处理方法,通过第一系统向消息中间件发送预设消息,在发送成功的情况下,第一系统对第一数据库进行操作,并向消息中间件发送确认消息;第二系统通过消息中间件接收确认信息,第二系统对第二数据库进行操作,并向消息中间件发送回执消息;在第一系统向消息中间件发送确认消息之后,在分布式应用程序协调服务建立消息节点并持续监听,在获取第二系统对第二数据库进行操作失败的情况下,向第一系统发送执行失败信息,以使第一系统再次发送确认消息。由此,通过基于消息中间件实现分布式事务,实现多个系统分布式事务一致性,并且实现了最终一致性和可靠消息传递。
为达上述目的,本申请第三方面实施例提出了一种计算机设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行第一方面实施例所述的基于微服务的分布式事务处理方法。
为了实现上述目的,本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请第一方面实施例所述的基于微服务的分布式事务处理方法。
为了实现上述目的,本申请第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时实现如本申请第一方面实施例所述的基于微服务的分布式事务处理方法。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例一所提供的一种基于微服务的分布式事务处理系统的结构示意图;
图2为本申请实施例二所提供的一种基于微服务的分布式事务处理系统的示例图;
图3为本申请实施例所提供的一种基于微服务的分布式事务处理方法的流程示意图;以及
图4示出了适于用来实现本申请实施方式的示例性计算机设备的框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的基于微服务的分布式事务处理系统和方法。
图1为本申请实施例一所提供的一种基于微服务的分布式事务处理系统的结构示意图。
由于微服务下系统被拆分为多个子系统,一个流程处理可能涉及多个子系统合作,现有技术在分布式事务处理中需要开发者书写大量补偿代码,很大程度上增加了开发成本,同时公共代码和业务代码高度耦合,很容易出现系统异常问题,本申请实现简单,很好的解决了代码耦合性的问题。
在本申请中主要解决了分布式事务的最终一致性和消息可靠性两个问题,并且通过消息中间件的引用可以支撑高并发的压力,在幂等性上采用Redis标识方案简单,方便,并且通过Zookeeper动态监听机制很好的实现了分布式事务的最终一致性问题。
如图1所示,该基于微服务的分布式事务处理系统包括:第一系统100、第二系统200、第一数据库300、第二数据库400、消息中间件500以及分布式应用程序协调服务600。
其中,第一系统100向消息中间件500发送预设消息,在发送成功的情况下,第一系统100对第一数据库300进行操作,并向所述消息中间件发送确认消息。
第二系统200通过消息中间件500接收确认信息,第二系统200对第二数据库400进行操作,并向消息中间件500发送回执消息。
在第一系统100向消息中间件500发送确认消息之后,在分布式应用程序协调服务600建立消息节点并持续监听,在获取第二系统200对第二数据库400进行操作失败的情况下,向第一系统100发送执行失败信息,以使第一系统100再次发送确认消息。
在本申请的一个实施例中,第一系统100向消息中间件500发送预设消息,在发送失败的情况下,第一系统100停止对第一数据库300进行操作。
在本申请的一个实施例中,消息中间件500按照预设时间间隔轮询所有的预设消息回调系统发送方第一系统100的接口,获取对第一数据库进行操作失败没有发送确认消息,在对第一数据库进行操作成功的情况下,发送确认消息。
在本申请的一个实施例中,在消息发送失败的情况下,消息存储在日志文件中;在消息发送时间大于预设时间阈值时,通过查询日志文件的接口检测消息是否在消息中间件500存储成功。
在本申请的一个实施例中,采用消息持久化到日志文件中,其中,通过支持刷盘和异步刷盘的操作保证数据的持久化。
在本申请的一个实施例中,当第二系统对第二数据库进行操作成功后,通过在远程字典服务进行记录标识代表该消息已经处理,当重复消息传递过来时直接报错或者抛出异常。
在本申请的一个实施例中,对第一数据库300、第二数据库400的操作永久保存对应数据库中。
具体地,分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
具体地,事务具有4大特性,称为ACID特性:1.原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行;2.一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态;3.隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行,如同只有这一个操作在被数据库所执行一样;4.持久性:已被提交的事务对数据库的修改应该永久保存在数据库中,在事务结束时,此操作将不可逆转。
为了更加清楚描述上述实施例,下面结合图2进行详细描述。
如图2所示,系统发送A发送一个prepared消息到消息中间件,如果这个prepared消息发送失败直接取消操作停止执行;如果消息发送成功,则直接执行本地事务,如果成功就告诉消息中间件发送confirm确定消息,如果失败则需要发送回滚消息;如果发送了确认消息,此时系统接收方B会接收到确认消息,然后执行本地事务,并发送ACK消息,如果系统B本地事务失败,会一直重试,如果是业务失败,则发送回滚;消息中间件会定时轮询所有的prepared消息回调系统发送方A的接口,咨询消息是不是在本地处理失败没有发送确认消息,如果本地事务处理成功,则发送确认消息,否则回滚该消息。
在本申请实施例中,在引用消息中间件后,最重要的一件事情是如何保证消息的可靠性,可靠性从两个方面保证,一个保证消息不丢失,另一个是消息不能被多次消费,本质上是消息队列如何保证幂等性问题。
在本申请实施例中,消息丢失主要发生在三个阶段,分别是生产端丢失数据,消息中间件本身丢失数据以及消费端丢失数据。本申请主要基于RocketMQ消息中间进行处理,在生产端采用事务投递的方式,这种方式不能保证消息100%发送到消息中间件,但是如果消息发送ACK失败的话,此消息会存储在CommitLog中,当一条消息发送之后超时,通过查询日志的API来check是否在消息中间件存储成功;消息中间件本身采用消息持久化到日志文件,通过支持刷盘和异步刷盘的操作保证数据的持久化;消费端采用手动提交offset方式并行消费保证数据的不丢失。
在本申请实施例中,主要采用消费端消息验证机制保证消息的幂等性,具体的做法是,当消费端执行成功后通过在Redis进行记录标识代表该消息已经处理,当重复消息传递过来时直接报错或者抛出异常。
在本申请实施例中,最终一致性式是保证事务在A系统本地执行成功后,在B系统一定也执行成功,否则就破坏了事务的原子性特性,在本方法中采用Zookeeper动态监听的方式解决,系统A发送完confirm确定消息后,在Zookeeper建立消息节点并持续监听,当系统B消费失败后会通知Zookeeper,然后Zookeeper反过来通知系统A,系统A接受消息后再发送一次confirm确认消息。
由此,通过引用消息中间快速、简单的解决了分布式事务问题,本方法中采用Zookeeper方式保证了分布式事务在各个系统的最终一致性,通过Redis标识解决消费端幂等性问题。
本申请实施例的基于微服务的分布式事务处理方法,通过第一系统向消息中间件发送预设消息,在发送成功的情况下,第一系统对第一数据库进行操作,并向消息中间件发送确认消息;第二系统通过消息中间件接收确认信息,第二系统对第二数据库进行操作,并向消息中间件发送回执消息;在第一系统向消息中间件发送确认消息之后,在分布式应用程序协调服务建立消息节点并持续监听,在获取第二系统对第二数据库进行操作失败的情况下,向第一系统发送执行失败信息,以使第一系统再次发送确认消息。由此,通过基于消息中间件实现分布式事务,实现多个系统分布式事务一致性,并且实现了最终一致性和可靠消息传递。
为了实现上述实施例,本申请还提出一种基于微服务的分布式事务处理方法。
图3为本申请实施例提供的一种基于微服务的分布式事务处理方法的流程示意图。
如图3所示,包括:
步骤101,第一系统向消息中间件发送预设消息,在发送成功的情况下,第一系统对第一数据库进行操作,并向消息中间件发送确认消息。
步骤102,第二系统通过消息中间件接收确认信息,第二系统对第二数据库进行操作,并向消息中间件发送回执消息。
步骤103,在第一系统向消息中间件发送确认消息之后,在分布式应用程序协调服务建立消息节点并持续监听,在获取第二系统对第二数据库进行操作失败的情况下,向第一系统发送执行失败信息,以使第一系统再次发送确认消息。
本申请实施例的基于微服务的分布式事务处理装置,通过第一系统向消息中间件发送预设消息,在发送成功的情况下,第一系统对第一数据库进行操作,并向消息中间件发送确认消息;第二系统通过消息中间件接收确认信息,第二系统对第二数据库进行操作,并向消息中间件发送回执消息;在第一系统向消息中间件发送确认消息之后,在分布式应用程序协调服务建立消息节点并持续监听,在获取第二系统对第二数据库进行操作失败的情况下,向第一系统发送执行失败信息,以使第一系统再次发送确认消息。由此,通过基于消息中间件实现分布式事务,实现多个系统分布式事务一致性,并且实现了最终一致性和可靠消息传递。
需要说明的是,前述对基于微服务的分布式事务处理系统实施例的解释说明也适用于该实施例的基于微服务的分布式事务处理方法,此处不再赘述。
为了实现上述实施例,本申请还提出一种计算机设备,包括:处理器,以及用于存储所述处理器可执行指令的存储器。
其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如本申请前述实施例提出的基于微服务的分布式事务处理方法。
为了实现上述实施例,本申请还提出一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器被执行时,使得处理器能够执行本申请前述实施例提出的基于微服务的分布式事务处理方法。
为了实现上述实施例,本申请还提出一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行实现本申请前述实施例提出的基于微服务的分布式事务处理方法。
图4示出了适于用来实现本申请实施方式的示例性计算机设备的框图。图4显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local AreaNetwork;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的基于微服务的分布式事务处理方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于微服务的分布式事务处理系统,其特征在于,包括:第一系统、第二系统、第一数据库、第二数据库、消息中间件以及分布式应用程序协调服务;
第一系统向所述消息中间件发送预设消息,在发送成功的情况下,所述第一系统对所述第一数据库进行操作,并向所述消息中间件发送确认消息;
第二系统通过所述消息中间件接收所述确认信息,所述第二系统对所述第二数据库进行操作,并向所述消息中间件发送回执消息;
在所述第一系统向所述消息中间件发送确认消息之后,在所述分布式应用程序协调服务建立消息节点并持续监听,在获取所述第二系统对所述第二数据库进行操作失败的情况下,向所述第一系统发送执行失败信息,以使所述第一系统再次发送所述确认消息。
2.如权利要求1所述的基于微服务的分布式事务处理系统,其特征在于,
所述第一系统向所述消息中间件发送预设消息,在发送失败的情况下,所述第一系统停止对所述第一数据库进行操作。
3.如权利要求1所述的基于微服务的分布式事务处理系统,其特征在于,
所述消息中间件按照预设时间间隔轮询所有的预设消息回调系统发送方第一系统的接口,获取对所述第一数据库进行操作失败没有发送确认消息,在对所述第一数据库进行操作成功的情况下,发送所述确认消息。
4.如权利要求1所述的基于微服务的分布式事务处理系统,其特征在于,
在消息发送失败的情况下,所述消息存储在日志文件中;
在消息发送时间大于预设时间阈值时,通过查询日志文件的接口检测所述消息是否在所述消息中间件存储成功。
5.如权利要求1所述的基于微服务的分布式事务处理系统,其特征在于,
采用消息持久化到所述日志文件中,其中,通过支持刷盘和异步刷盘的操作保证数据的持久化。
6.如权利要求1所述的基于微服务的分布式事务处理系统,其特征在于,
当所述第二系统对所述第二数据库进行操作成功后,通过在远程字典服务进行记录标识代表该消息已经处理,当重复消息传递过来时直接报错或者抛出异常。
7.如权利要求1所述的基于微服务的分布式事务处理系统,其特征在于,
对所述第一数据库、所述第二数据库的操作永久保存对应数据库中。
8.一种基于微服务的分布式事务处理方法,其特征在于,包括:
第一系统向所述消息中间件发送预设消息,在发送成功的情况下,所述第一系统对所述第一数据库进行操作,并向所述消息中间件发送确认消息;
第二系统通过所述消息中间件接收所述确认信息,所述第二系统对所述第二数据库进行操作,并向所述消息中间件发送回执消息;
在所述第一系统向所述消息中间件发送确认消息之后,在所述分布式应用程序协调服务建立消息节点并持续监听,在获取所述第二系统对所述第二数据库进行操作失败的情况下,向所述第一系统发送执行失败信息,以使所述第一系统再次发送所述确认消息。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如权利要求8所述的基于微服务的分布式事务处理方法。
10.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求8所述的基于微服务的分布式事务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011297402.4A CN112527472A (zh) | 2020-11-18 | 2020-11-18 | 基于微服务的分布式事务处理系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011297402.4A CN112527472A (zh) | 2020-11-18 | 2020-11-18 | 基于微服务的分布式事务处理系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527472A true CN112527472A (zh) | 2021-03-19 |
Family
ID=74981220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011297402.4A Withdrawn CN112527472A (zh) | 2020-11-18 | 2020-11-18 | 基于微服务的分布式事务处理系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527472A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113449039A (zh) * | 2021-07-09 | 2021-09-28 | 中国银行股份有限公司 | 分布式微服务中异库数据处理系统及方法 |
CN113839856A (zh) * | 2021-11-25 | 2021-12-24 | 北京慧点科技有限公司 | 一种基于消息事务办公处理系统 |
CN113867897A (zh) * | 2021-09-30 | 2021-12-31 | 紫光云技术有限公司 | 一种基于Rabbitmq实现分布式事务的方法 |
CN115022318A (zh) * | 2022-05-30 | 2022-09-06 | 在线途游(北京)科技有限公司 | 一种基于微服务架构的消息发布方法及系统 |
WO2023273028A1 (zh) * | 2021-06-29 | 2023-01-05 | 深圳市商汤科技有限公司 | 事务处理方法及相关产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
-
2020
- 2020-11-18 CN CN202011297402.4A patent/CN112527472A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
RESSMIX: "分布式基础(十四)—分布式理论之分布式事务:可靠消息最终一致性方案", 《HTTPS://WWW.TPVLOG.COM/ARTICLE/70》 * |
霁云HYY: "RocketMQ消息重复消费场景及解决办法", 《HTTPS://BLOG.CSDN.NET/LO_YUN/ARTICLE/DETAILS/104135197》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023273028A1 (zh) * | 2021-06-29 | 2023-01-05 | 深圳市商汤科技有限公司 | 事务处理方法及相关产品 |
CN113449039A (zh) * | 2021-07-09 | 2021-09-28 | 中国银行股份有限公司 | 分布式微服务中异库数据处理系统及方法 |
CN113867897A (zh) * | 2021-09-30 | 2021-12-31 | 紫光云技术有限公司 | 一种基于Rabbitmq实现分布式事务的方法 |
CN113839856A (zh) * | 2021-11-25 | 2021-12-24 | 北京慧点科技有限公司 | 一种基于消息事务办公处理系统 |
CN115022318A (zh) * | 2022-05-30 | 2022-09-06 | 在线途游(北京)科技有限公司 | 一种基于微服务架构的消息发布方法及系统 |
CN115022318B (zh) * | 2022-05-30 | 2023-08-29 | 在线途游(北京)科技有限公司 | 一种基于微服务架构的消息发布方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112527472A (zh) | 基于微服务的分布式事务处理系统和方法 | |
CN107908494B (zh) | 异常事件的处理方法、装置、电子设备及存储介质 | |
US7290086B2 (en) | Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system | |
US7889384B2 (en) | Method for more efficiently managing complex payloads in a point of sale system | |
US20090300424A1 (en) | Fault detecting method and information processing apparatus | |
CN107341062B (zh) | 一种数据推送方法、装置、设备以及存储介质 | |
US20080115128A1 (en) | Method, system and computer program product for implementing shadow queues for recovery of messages | |
CN112437001B (zh) | 保证消息可靠性投递与消费方法、装置 | |
CN100501685C (zh) | 用于在奇偶错误检测之后维持数据完整性的装置和方法 | |
CN109753378A (zh) | 一种内存故障的隔离方法、装置、系统及可读存储介质 | |
CN108460160B (zh) | 数据库实例的下线方法、装置、终端及存储介质 | |
CN114138838A (zh) | 数据处理方法及装置、设备和介质 | |
CN110554929B (zh) | 数据校验方法、装置、计算机设备及存储介质 | |
US6535119B1 (en) | System and method of managing failure of an electronic shelf label to respond to a message | |
US10990469B2 (en) | Maintenance methods of digital signage and troubleshooting and warning methods, digital signage playing systems and players thereof | |
CN112015766A (zh) | 一种基于流水的数据处理方法、装置及数据处理系统 | |
CN111679892A (zh) | 分布式事务的处理方法、装置、设备及介质 | |
US7856507B2 (en) | Data transmission process | |
CN113176967B (zh) | 数据的处理方法及装置、电子设备和计算机可读存储介质 | |
US7933873B2 (en) | Handling transfer of bad data to database partitions in restartable environments | |
US20240143431A1 (en) | Managing audit logs in a production environment | |
US20180136847A1 (en) | Control device and computer readable recording medium storing control program | |
CN111105314A (zh) | 一种保险数据清分系统 | |
US20090192818A1 (en) | Systems and method for continuous health monitoring | |
CN114969072B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210319 |