CN111127088B - 实现最终一致性的方法、装置、计算机设备及存储介质 - Google Patents
实现最终一致性的方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111127088B CN111127088B CN201911302109.XA CN201911302109A CN111127088B CN 111127088 B CN111127088 B CN 111127088B CN 201911302109 A CN201911302109 A CN 201911302109A CN 111127088 B CN111127088 B CN 111127088B
- Authority
- CN
- China
- Prior art keywords
- request
- system service
- data
- processing result
- processing
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
- G06Q30/0208—Trade or exchange of goods or services in exchange for incentives or rewards
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- General Engineering & Computer Science (AREA)
- Marketing (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Computing Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了实现最终一致性的方法、装置、计算机设备及存储介质,涉及计算机技术领域。该方法包括:主系统服务接收请求并保存请求数据;所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较。该方法可在支持调用多个系统服务的同时降低开发难度并提高处理效率,保证分布式事务的可用性、分区容忍性和最终一致性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及实现最终一致性的方法、装置、计算机设备及存储介质。
背景技术
随着业务发展,单体应用越来越难以维护及无法快速敏捷开发,所以现在越来越多的互联网系统采用微服务设计系统。微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。目前,由于系统微服务化后,即使是一个简单的功能,也需要通过调用多个服务并操作多个数据库来实现该功能,服务调用的分布式事务问题变的非常突出。为了解决服务调用的分布式事务问题,目前提供两种解决方案,一种是采用先直接调用指定系统服务,后调用当前系统的本地服务方法,但其只适用于只调用一个指定系统服务并且该调用未超时的情况;另一种是采用三段式提交的方法,将整个业务逻辑的每个分支显式的分成了Try(准备)、Confirm(提交)、Cancel(回滚)三个部分,Try部分完成业务的准备工作,Confirm部分完成业务的提交,Cancel部分完成事务的回滚,但其存在对应用的侵入性强、改造成本高以及实现难度大的问题。
因此服务调用的分布式事务问题至今仍没有很好的解决方法。
发明内容
本发明实施例提供了实现最终一致性的方法、装置、计算机设备及存储介质,旨在支持调用多个系统服务的同时降低开发难度并提高处理效率,保证分布式事务的可用性、分区容忍性和最终一致性。
第一方面,本发明实施例提供了一种实现分布式事务最终一致性的方法,其包括:
主系统服务接收请求并保存请求数据;
所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;
所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;
通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;
所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致。
第二方面,本发明实施例提供了一种实现分布式事务最终一致性的装置,其包括:
输入单元,用于主系统服务接收请求并保存请求数据;
发送单元,用于所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;
第一处理单元,用于所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;
提取单元,用于通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;
第二处理单元,用于所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的一种实现分布式事务最终一致性的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的一种实现分布式事务最终一致性的方法。
本发明实施例提供了一种实现分布式事务最终一致性的方法、装置、计算机设备及存储介质。该方法包括:主系统服务接收请求并保存请求数据;所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致。本发明实施例使用消息中间件和定时任务核算的方法,在支持调用多个系统服务的同时降低开发难度并提高处理效率,保证了分布式事务的可用性、分区容忍性和最终一致性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种实现分布式事务最终一致性的方法的流程图;
图2为本发明实施例提供的一种实现分布式事务最终一致性的装置的结构框图;
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
下面请参见图1,图1为本发明实施例所提供的一种实现分布式事务最终一致性的方法的流程图。
具体步骤可以包括S110~S150:
S110:主系统服务接收请求并保存请求数据;
在一实施例中,当主系统服务接收到请求后,需要保存请求数据,为了更好地区分所有请求数据,所述请求数据可以包括提出请求的用户数据、请求内容以及请求中具有唯一性的数据。例如:当用户使用优惠券进行支付后,主系统服务接收到核销优惠券的请求,此时所述主系统服务可以对核销优惠券的请求以及所述优惠券的券码数据进行保存(此时请求数据包括请求内容以及请求中具有唯一性的数据),也可以对所述核销优惠券的请求以及用户数据进行保存(此时请求数据包括请求内容以及提出请求的用户数据),也可以对用户数据、核销优惠券的请求以及所述优惠券的券码数据进行保存(此时请求数据包括用户数据、请求内容以及请求中具有唯一性的数据)。
S120:所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;
所述主系统服务保存请求数据后,直接将所述请求发送至消息中间件,所述消息中间件可以是RabbitMQ,RabbitMQ也就是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),所述消息中间件也可以是其它具有传送请求作用的软件。在本实施例中,所述消息中间件的作用是作为传送请求的中介,对所有请求进行传送,所以当所述消息中间件接收到所述请求后,不会对所述请求进行处理操作,而是直接将所述请求发送至指定系统服务。
在本实施例中,所述步骤S120包括:
所述主系统服务将所述请求发送至消息中间件;
所述消息中间件根据所述请求的类型将所述请求发送至对应的指定系统服务。
具体的,当所述主系统服务将所述请求发送至消息中间件后,所述消息中间件可以根据所述请求的类型,将所述请求发送至与之相对应的指定系统服务,例如:若所述主系统服务将核销优惠券的请求发送至消息中间件,此时所述请求的类型为消除类型,则所述消息中间件将会根据所述请求的类型,将所述核销优惠券的请求发送指负责核销的系统服务;若所述主系统服务将获取优惠券的请求发送至消息中间件,此时所述请求的类型为获取类型,则所述消息中间件可以将所述获取优惠券的请求发送至负责发放优惠券的系统服务。
S130:所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;
在一实施例中,所述指定系统服务接收到所述请求后,将会对所述请求进行相应的处理,由于可能会出现请求处理失败的情况,所以在处理结束后将会对处理结果数据进行保存,需要说明的是所述处理结果数据必须包含对所述请求进行处理的处理结果,所述处理结果数据还可以包括用户数据、请求内容以及请求中具有唯一性的数据中的一个或者多个,只要保证所述处理结果数据与相对应的请求数据存在相同且唯一的数据内容即可,以便后续进行比较。例如:当所述指定系统服务接收到核销优惠券的请求后,将会对所述请求进行处理,若核销成功,则所述指定系统服务可以对所述核销优惠券的请求、所述优惠券的券码数据以及核销成功的处理结果进行保存得到处理结果数据,也可以对所述核销优惠券的请求以及所述用户数据以及核销成功的处理结果进行保存得到处理结果数据。在所述指定系统服务对所述处理结果数据进行保存后,进行S140步骤。
S140:通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;
在本实施例中,可以在定时任务服务上预先设置好一定时任务,所述定时任务即每隔一时间周期,便提取所有请求数据以及处理结果数据,继而对所提取的请求数据与处理结果数据进行比较,这样可以及时处理所述请求数据与所述处理结果数据不一致的情况。若比较结果为所述请求数据与所述处理结果数据不一致,则需要返回一处理消息至所述主系统服务,其中,所述处理消息表示需要对所述请求进行重新处理,即再次发送所述请求,只是发送所述请求的方式可以有所调整,例如可以由主系统服务再次发送给消息中间件,然后由消息中间件转发至指定系统服务;也可以由主系统服务直接发送至指定系统服务。例如:在对核销优惠券请求进行处理的过程中,由于消息中间件异常而导致某次请求处理失败,此时主系统服务中记录有5张优惠券被核销,而指定系统服务只记录有4张优惠券被核销,也就是说一请求数据对应的处理结果数据中的处理结果为优惠券核销失败,即未核销优惠券,而该请求数据的请求内容为核销优惠券,所以可以得出比较结果为所述请求数据与所述处理结果数据不一致,此时可以将处理失败的请求再次发送给消息中间件或直接发送给指定系统服务,继而对该请求进行再次的处理操作。
在一实施例中,所述通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较,包括:
每隔一时间周期从主系统服务中提取一个类型的所有请求数据,同时从所述类型对应的指定系统服务中提取所有处理结果数据;
对提取出的请求数据与处理结果数据进行比较。
在本实施例中,为了减少比较的次数,提高比较的效率,所述定时任务可以预先设置为每隔一个时间周期便从主系统服务中提取同一个类型的所有请求数据,同时从所述类型对应的指定系统服务中提取所有处理结果数据,继而对所提取的数据进行比较。
具体的,可以每隔一个时间周期(为与下面的时间周期进行区分,此处可定义为第一时间周期)对不同类型的数据进行一次提取操作,每次仅提取同一个类型的所有请求数据与处理结果数据,例如:可以将提取所有数据的第一时间周期设置为1小时,则第一次对数据进行提取时,仅提取消除类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较;间隔1小时后进行第二次提取操作,第二次对数据进行提取操作时,仅提取获取类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较。间隔1小时后进行第三次提取操作,第三次对数据进行提取操作时,仅提取消除类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较;间隔1小时后进行第二次提取操作,第二次对数据进行提取操作时,仅提取获取类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较。这样不断循环进行新一轮的提取操作以及比较步骤,也就是说循环提取不同类型的数据并进行比较。
优选地,为了提高比较效率,也可以预先设置第二时间周期以及第三时间周期,每隔第二时间周期对不同类型的数据进行一次提取操作,每次仅提取同一个类型的所有请求数据与处理结果数据,当进行完一轮的提取和比较操作后,停止提取和比较操作。然后每隔第三时间周期对同一类型的数据进行再一次提取和比较操作。例如:预先设置第二时间周期为1小时,第三时间周期为1天,则第一次对数据进行提取时,仅提取消除类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较;间隔第二时间周期(即1小时)后进行第二次提取操作,第二次对数据进行提取操作时,仅提取获取类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较。当比较结束后停止提取和比较操作,由于第三时间周期为1天,所以当上一次对所述消除类型的数据进行提取和比较操作结束达到第三时间周期(1天)时,可重新提取消除类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较,然后间隔第二时间周期(即1小时)后进行第二次提取操作,第二次对数据进行提取操作时,仅提取获取类型的请求数据以及处理结果数据,继而对所提取的同一类型的数据进行比较,并以此类推,每隔第三时间周期依次对各类型的请求数据以及处理结果数据进行提取和比较。
需要说明的是,对于请求的类型实质上就是指请求数据的类型,或者处理结果数据的类型。
在一实施例中,所述通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较,包括:
每隔一时间间隔从主系统服务中提取上一个时间周期的所有请求数据,同时从所述指定系统服务中提取上一时间周期的处理结果数据;
对提取出的请求数据与处理结果数据进行比较。
具体的,为了防止已经被提取且进行过比较的数据重复进行比较,可以将所述定时任务设置为每隔一时间周期(如第四时间周期),从主系统服务上提取上一个第四时间周期内产生的所有请求数据,同时从所述指定系统服务中提取上一第四时间周期内产生的所有处理结果数据,继而对提取出的上一个第四时间周期内产生的请求数据与处理结果数据进行遍历比较。上一个第四时间周期内产生的所有请求数据包括上一次进行比较后因比较结果为请求数据与处理结果数据不一致,而再次进行处理的请求数据;对应的,上一个第四时间周期内产生的处理结果数据也包括上一次进行比较后因比较结果为请求数据与处理结果数据不一致,而再次进行处理的处理结果数据。
其中,所述对提取出的请求数据与处理结果数据进行比较,包括:
逐一将提取到的请求数据和所有提取到的处理结果数据进行遍历比较,并记录比较结果。
具体的,可以逐一将提取到的请求数据和提取到的处理结果数据进行遍历比较,也就是说逐一将每一个请求数据与所有的处理结果数据进行比较,继而在得出的所有比较结果中,丢弃所有基本数据不相符合的处理结果数据后,将会只剩余一个与所述请求数据相对应的处理结果数据,此时即可将所述请求数据与所述处理结果数据对应,当所有请求数据与所有处理结果数据一一对应时,即可对当前的所有比较结果进行记录。其中基本数据指的是请求数据与处理结果数据中的提出请求的用户数据、请求内容以及请求中具有唯一性的数据。
S150:所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致。
当比较结果为所述请求数据与所述处理结果数据不一致时,也就是说请求数据对应的处理结果数据中的处理结果与该请求数据的请求内容不一致时,将会返回一处理消息至所述主系统服务,继而在所述主系统服务接收到所述处理消息后,根据所述处理消息再次对所述请求进行相应的处理,直至最终比较结果为所述请求数据与当前处理结果数据一致,数据一致也就是在基本数据一致的同时,请求数据对应的处理结果数据中的处理结果与该请求数据的请求内容一致。例如:一请求数据中的请求内容为核销优惠券,则当与该请求数据对应的处理结果数据中的处理结果为(成功)核销优惠券时,该请求数据与处理结果数据一致;若与该请求数据对应的处理结果数据中的处理结果为未核销优惠券时,该请求数据与处理结果数据不一致。
在一实施例中,所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致,包括:
所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求再次发送至所述消息中间件,并通过所述消息中间件将对应的请求发送至指定系统服务进行处理。
具体的,当所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求再次发送至所述消息中间件,并通过所述消息中间件将对应的请求再次发送至指定系统服务,继而所述指定系统服务再次对所述请求进行处理。
在一实施例中,所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致,包括:
所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求直接发送至指定系统服务进行处理。
在所述主系统服务接收到所述处理消息后,可以将指定系统服务处理失败的请求不经过消息中间件而直接发送至处理过该请求的指定系统服务进行处理。
在一实施例中,当仅仅只有一个处理失败的请求,或者处理失败的请求均是同一种类型时,在所述主系统服务接收到所述处理消息后,也可以将指定系统服务处理失败的请求直接发送至指定系统服务进行处理。
具体的,当步骤S110至S150均完成后,即当所述指定系统服务对该请求(即定义为原始请求)进行处理且处理成功后,所述主系统服务可接收用户发出的撤回请求,此时所述主系统服务可以将撤回请求发送至消息中间件,并通过消息中间件将所述撤回请求发送至另一指定系统服务中,继而通过另一指定系统服务对所述撤回请求进行处理,根据撤回请求的不同可以有不同的处理方法,例如所述撤回请求为取消核销优惠券的请求,而原始请求的处理结果为成功核销优惠券,则可以将所述撤回请求发送至负责将已核销的优惠券变为可使用的优惠券的系统服务,该系统服务接收到所述撤回请求后,即可通过查询原始请求对应的请求数据和/或处理结果数据,找到已核销的优惠券,继而将状态为已核销的优惠券恢复成状态为未使用的优惠券;优选地,也可以将所述撤回请求发送至负责发放的优惠券的系统服务,该系统服务在接收到所述撤回请求后,可直接为该用户发放新的优惠券。
在一实施例中,请参见图2,图2为本发明实施例所提供的一种实现分布式事务最终一致性的装置200的结构框图;
该装置200可以包括:
输入单元201,用于主系统服务接收请求并保存请求数据;
第一发送单元202,用于所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;
第一处理单元203,用于所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;
提取比较单元204,用于通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;
第二处理单元205,用于所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致。
在一实施例中,所述第二处理单元205包括:
第三处理单元,用于当所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求再次发送至所述消息中间件,并通过所述消息中间件将对应的请求发送至指定系统服务进行处理。
在一实施例中,所述第二处理单元205包括:
第四处理单元,用于当所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求直接发送至指定系统服务进行处理。
在一实施例中,所述第一发送单元202包括:
第二发送单元,用于所述主系统服务将所述请求发送至消息中间件;
第三发送单元,用于所述消息中间件根据所述请求的类型将所述请求发送至对应的指定系统服务。
在一实施例中,所述提取比较单元204包括:
第五处理单元,用于每隔一时间周期从主系统服务中提取一个类型的所有请求数据,同时从所述类型对应的指定系统服务中提取所有处理结果数据;
第一比较单元,用于对提取出的请求数据与处理结果数据进行比较。
在一实施例中,所述提取比较单元204包括:
第六处理单元,用于每隔一时间间隔从主系统服务中提取上一个时间周期的所有请求数据,同时从所述指定系统服务中提取上一时间周期的处理结果数据;
第二比较单元,用于对提取出的请求数据与处理结果数据进行比较。
在一实施例中,所述提取比较单元204包括:
第三比较单元,用于逐一将提取到的请求数据和所有提取到的处理结果数据进行遍历比较,并记录比较结果。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本发明还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的方法。
本发明还提供了一种计算机设备,可以包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例所提供的方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (6)
1.一种实现分布式事务最终一致性的方法,其特征在于,包括:
主系统服务接收请求并保存请求数据;
所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;
所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;
通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;
所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致;
所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务,包括:
所述主系统服务将所述请求发送至消息中间件;
所述消息中间件根据所述请求的类型将所述请求发送至对应的指定系统服务;
所述通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较,包括:
每隔一时间周期从主系统服务中提取一个类型的所有请求数据,同时从所述类型对应的指定系统服务中提取所有处理结果数据;每次仅提取同一个类型的所有请求数据与处理结果数据;
对提取出的请求数据与处理结果数据进行比较;
主系统服务接收用户发出的撤回请求,将所述撤回请求发送至所述消息中间件,并通过所述消息中间件将所述撤回请求发送至另一指定系统服务中,通过另一指定系统服务对所述撤回请求进行处理。
2.如权利要求1所述的实现分布式事务最终一致性的方法,其特征在于,所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致,包括:
所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求再次发送至所述消息中间件,并通过所述消息中间件将对应的请求发送至指定系统服务进行处理。
3.如权利要求1所述的实现分布式事务最终一致性的方法,其特征在于,所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致,包括:
所述主系统服务接收到所述处理消息后,将指定系统服务处理失败的请求直接发送至指定系统服务进行处理。
4.一种实现分布式事务最终一致性的装置,其特征在于,包括:
输入单元,用于主系统服务接收请求并保存请求数据;
发送单元,用于所述主系统服务将所述请求发送至消息中间件,并通过所述消息中间件将所述请求发送至指定系统服务;
第一处理单元,用于所述指定系统服务接收到所述请求后对所述请求进行处理,并保存处理结果数据;
提取单元,用于通过一定时任务服务每隔一时间周期提取所有请求数据以及处理结果数据,并对提取的请求数据与处理结果数据进行比较;若所述请求数据与所述处理结果数据不一致,则返回一处理消息至所述主系统服务;
第二处理单元,用于所述主系统服务根据所述处理消息再次对所述请求进行处理,直至所述请求数据与当前处理结果数据一致;
所述发送单元包括:
第二发送单元,用于所述主系统服务将所述请求发送至消息中间件;
第三发送单元,用于所述消息中间件根据所述请求的类型将所述请求发送至对应的指定系统服务;
所述提取单元包括:
第五处理单元,用于每隔一时间周期从主系统服务中提取一个类型的所有请求数据,同时从所述类型对应的指定系统服务中提取所有处理结果数据;每次仅提取同一个类型的所有请求数据与处理结果数据;
第一比较单元,用于对提取出的请求数据与处理结果数据进行比较;
主系统服务接收用户发出的撤回请求,将所述撤回请求发送至所述消息中间件,并通过所述消息中间件将所述撤回请求发送至另一指定系统服务中,通过另一指定系统服务对所述撤回请求进行处理。
5.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至3任一项所述的实现分布式事务最终一致性的方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的实现分布式事务最终一致性的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911302109.XA CN111127088B (zh) | 2019-12-17 | 2019-12-17 | 实现最终一致性的方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911302109.XA CN111127088B (zh) | 2019-12-17 | 2019-12-17 | 实现最终一致性的方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111127088A CN111127088A (zh) | 2020-05-08 |
CN111127088B true CN111127088B (zh) | 2023-06-27 |
Family
ID=70500067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911302109.XA Active CN111127088B (zh) | 2019-12-17 | 2019-12-17 | 实现最终一致性的方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111127088B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949675A (zh) * | 2020-09-23 | 2020-11-17 | 成都精灵云科技有限公司 | 一种分布式强一致性组件 |
CN114244899B (zh) * | 2021-12-02 | 2024-05-17 | 上海微盟企业发展有限公司 | 一种消息传递方法、装置及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183377A (zh) * | 2007-12-10 | 2008-05-21 | 华中科技大学 | 一种基于消息中间件的高可用性数据库集群 |
CN106354747A (zh) * | 2016-08-15 | 2017-01-25 | 成都轻车快马网络科技有限公司 | 用于大数据的服务提供方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108965457A (zh) * | 2018-08-02 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种分布式集群系统的消息传递方法、装置、设备及介质 |
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
-
2019
- 2019-12-17 CN CN201911302109.XA patent/CN111127088B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183377A (zh) * | 2007-12-10 | 2008-05-21 | 华中科技大学 | 一种基于消息中间件的高可用性数据库集群 |
CN106354747A (zh) * | 2016-08-15 | 2017-01-25 | 成都轻车快马网络科技有限公司 | 用于大数据的服务提供方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111127088A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110968586B (zh) | 分布式事务处理方法及装置 | |
KR101993432B1 (ko) | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 | |
CN109815291B (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN111127088B (zh) | 实现最终一致性的方法、装置、计算机设备及存储介质 | |
US20130132335A1 (en) | Updating method and system of application system database thereof | |
CN108845866B (zh) | 处理分布式事务的方法和装置 | |
CN110888718A (zh) | 分布式事务的实现方法及装置 | |
CN110032424B (zh) | 分布式锁的实现方法和装置 | |
CN109451078B (zh) | 一种分布式架构下的事务处理方法和装置 | |
CN108762895B (zh) | 处理分布式事务的方法及装置 | |
CN113760976A (zh) | 业务的处理方法、装置、设备及存储介质 | |
CN111143041B (zh) | 一种数据一致性方法、分布式协调器及中央协调器 | |
CN111309707B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN116467085A (zh) | 任务处理方法、系统、电子设备及存储介质 | |
CN107277108B (zh) | 一种区块链的节点处的消息处理方法、装置及系统 | |
CN110363515B (zh) | 权益卡账户信息查询方法、系统、服务器及可读存储介质 | |
CN113986941A (zh) | 事务批量处理方法及装置 | |
CN109582330B (zh) | 数据模型升级方法、装置、设备及可读存储介质 | |
CN112463810A (zh) | 基于分布式事务的数据处理方法、装置、设备及存储介质 | |
CN106708948A (zh) | 一种用主键唯一性实现事务操作的方法及装置 | |
CN111831455A (zh) | 工业物联网下分布式事务处理系统及方法 | |
CN106375354B (zh) | 数据处理方法及装置 | |
JP2001306380A (ja) | 二相コミット回避方式およびそのプログラム記録媒体 | |
US20230315754A1 (en) | Distributed transaction control system and distributed transaction control method | |
JP4628830B2 (ja) | Dbmsに格納されたデータの整合性を担保するためのシステム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |