CN106909467B - 一种基于微服务架构的分布式事务处理方法 - Google Patents
一种基于微服务架构的分布式事务处理方法 Download PDFInfo
- Publication number
- CN106909467B CN106909467B CN201710112586.4A CN201710112586A CN106909467B CN 106909467 B CN106909467 B CN 106909467B CN 201710112586 A CN201710112586 A CN 201710112586A CN 106909467 B CN106909467 B CN 106909467B
- Authority
- CN
- China
- Prior art keywords
- service
- message
- node
- controlling
- calling
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 230000008859 change Effects 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 abstract description 7
- 238000011161 development Methods 0.000 abstract description 6
- 230000007246 mechanism Effects 0.000 abstract description 4
- 238000004458 analytical method Methods 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 15
- 238000012790 confirmation Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 1
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明公开了一种基于微服务架构的分布式事务处理方法,包括:在微服务架构中确定服务调用节点和服务被调用节点;控制服务调用节点向服务被调用节点通过消息队列发送业务消息,并存储业务消息的发送状态;控制服务被调用节点解析业务消息,并根据解析的结果执行对应的业务;控制服务被调用节点反馈业务执行结果至服务调用节点;根据业务执行结果,控制服务调用节点变更自身中存储的业务消息的当前状态。服务调用节点根据服务被调用节点的反馈信息变更自身的业务消息的状态,使用消息队列机制保存消息状态,不依赖具体的开发语言和平台,保证了分布式事务的数据一致性,减少了两个节点间的网络通信次数,通信时间短,系统性能消耗小。
Description
技术领域
本发明涉及微服务架构领域,特别是涉及一种基于微服务架构的分布式事务处理方法。
背景技术
近年来,随着云计算和互联网行业的飞速发展,传统的技术架构已经不能满足业务量的灵活增长和弹性应用。为了解决这一问题,微服务架构应运而生。
在微服务架构中,系统会拆分为若干个相对独立业务的服务,每个服务可部署在不同的节点上。当各服务节点之间出现调用时,如何实现事务的一致性成为亟需解决的问题。目前,分布式事务的处理比较常用的是两阶段提交协议(Two-phase Commit,2pc)方法。即:由客户端提交请求到事务协调器(TC),然后由事务协调器来确认各个事务执行者是否都执行完毕。待全部执行成功后,才能将整个事务提交完成。但是,在使用过程中,发现现有的两阶段提交的方法具有以下的缺陷:现有的方法需要事务协调器主动确认各个事务执行者的状态,因此涉及多次节点间的网络通信,通信时间长,系统性能消耗大等。
因此,如何提供一种基于微服务架构的分布式事务处理方法,以解决以上问题,是本领域技术人员目前需要解决的技术问题。
发明内容
本发明的目的是提供一种基于微服务架构的分布式事务处理方法,可以不依赖具体的开发语言和平台,且保证分布式事务的数据一致性。
为解决上述技术问题,本发明提供了如下技术方案:
一种基于微服务架构的分布式事务处理方法,包括:
在微服务架构中确定服务调用节点和服务被调用节点;
控制所述服务调用节点向所述服务被调用节点通过消息队列发送业务消息,并存储所述业务消息的发送状态;
控制所述服务被调用节点解析所述业务消息,并根据解析的结果执行对应的业务;
控制所述服务被调用节点反馈业务执行结果至所述服务调用节点;
根据所述业务执行结果,控制所述服务调用节点变更自身中存储的所述业务消息的当前状态。
优选地,在所述控制所述服务调用节点向所述服务被调用节点通过消息队列发送业务消息,并存储所述业务消息的发送状态之前还包括:
控制所述服务调用节点进行业务检查,判断所述业务消息是否正常且符合预设的业务提交条件;
若是,则将所述业务消息存储在所述服务调用节点的消息数据库中,并将所述业务消息的状态标记为请求发送状态。
优选地,所述控制所述服务调用节点向所述服务被调用节点通过消息队列发送业务消息,并存储所述业务消息的发送状态,包括:
接收业务消息确认发送信息;
在所述消息数据库中调取所述业务消息,并将所述业务消息通过消息队列发送至所述服务被调用节点;
在所述服务调用节点中将所述业务消息的状态变更为已发送状态。
优选地,所述控制所述服务被调用节点解析所述业务消息,并根据解析的结果执行对应的业务,包括:
在所述服务被调用节点接收到所述业务消息时,解析所述业务消息中定义的调用方法和参数;
根据所述调用方法和参数执行对应的业务。
优选地,所述控制所述服务被调用节点反馈业务执行结果至所述服务调用节点,包括:
判断所述服务被调用节点的业务执行是否正常;
若是,则控制所述服务被调用节点向所述服务调用节点发送确认执行的消息;
若否,则控制所述服务被调用节点向所述服务调用节点发送取消执行的消息。
优选地,所述根据所述业务执行结果,控制所述服务调用节点变更自身中存储的所述业务消息的当前状态,包括:
当所述服务调用节点接收到所述确认执行的消息时,控制所述服务调用节点进行业务提交,并将所述业务消息的状态变更为已提交;
当所述服务调用节点接收到所述取消执行的消息时,控制所述服务调用节点进行业务回滚,并将所述业务消息的状态变更为已回滚。
优选地,还包括:
定时查询所述消息数据库中是否有未确认发送的消息;
若是,则判断该未确认发送的消息是否有效;
若是,则控制所述服务调用节点补发该未确认发送的消息至所述服务被调用节点;
若否,则删除该未确认发送的消息。
与现有技术相比,上述技术方案具有以下优点:
本发明所提供的一种基于微服务架构的分布式事务处理方法,包括:在微服务架构中确定服务调用节点和服务被调用节点;控制服务调用节点向服务被调用节点通过消息队列发送业务消息,并存储业务消息的发送状态;控制服务被调用节点解析业务消息,并根据解析的结果执行对应的业务;控制服务被调用节点反馈业务执行结果至服务调用节点;根据业务执行结果,控制服务调用节点变更自身中存储的业务消息的当前状态。在本技术方案中,由服务调用节点获取服务被调用节点的业务执行结果,服务调用节点根据服务被调用节点的反馈信息变更自身的业务消息的状态,使用消息队列机制保存消息状态,使用该消息机制不依赖具体的开发语言和平台,保证了分布式事务的数据一致性,大大减少了两个节点间的网络通信次数,通信时间短,系统性能消耗小,无需设置事务协调器。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种具体实施方式所提供的基于微服务架构的分布式事务处理方法流程图。
具体实施方式
本发明的核心是提供基于微服务架构的分布式事务处理方法,可以不依赖具体的开发语言和平台,且保证分布式事务的数据一致性。
为了使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施的限制。
请参考图1,图1为本发明一种具体实施方式所提供的基于微服务架构的分布式事务处理方法流程图。
本发明的一种具体实施方式提供了一种基于微服务架构的分布式事务处理方法,包括:
S11:在微服务架构中确定服务调用节点和服务被调用节点。
在微服务架构中设置有多个微服务节点,在微服务架构中包含了两种角色:服务调用者和服务被调用者。同一个微服务节点即可以是调用者也可能是被调用者。不同的微服务节点的结构一致。在本实施方式中根据需要选取两个微服务节点分别作为服务调用节点和服务被调用节点。
S12:控制服务调用节点向服务被调用节点通过消息队列发送业务消息,并存储业务消息的发送状态。
在本发明的一种实施方式中,在控制服务调用节点向服务被调用节点通过消息队列发送业务消息,并存储业务消息的发送状态之前还包括:控制服务调用节点进行业务检查,判断业务消息是否正常且符合预设的业务提交条件;若是,则将业务消息存储在消息队列的消息数据库中,并将业务消息的状态标记为请求发送状态。
在本实施方式中,各微服务节点均包括:业务处理服务、实时消息服务、消息状态确认系统和消息恢复系统。在服务调用节点中,业务处理服务在业务事务提交前,进行业务检查,业务检查正常且具备提交条件时向实时消息服务请求发送消息,当服务调用节点中的实时消息服务接收到请求发送消息时,记录业务消息数据至消息数据库中,而不真正发送消息,此时,该业务消息在消息数据库中的状态为请求发送状态。
进一步地,控制服务调用节点向服务被调用节点通过消息队列发送业务消息,并存储业务消息的发送状态,包括:接收业务消息确认发送信息;在消息数据库中调取业务消息,并将业务消息通过消息队列发送至服务被调用节点;在服务调用节点中将业务消息的状态变更为已发送状态。
在本实施方式中,当服务调用节点中的实时消息服务接收到自身节点中的业务处理服务发送的消息确认发送信息时,实时消息服务真正发送业务消息至服务被调用节点,并更新该业务消息的状态为已发送状态。
S13:控制服务被调用节点解析业务消息,并根据解析的结果执行对应的业务。
在本发明的一种实施方式中,控制服务被调用节点解析业务消息,并根据解析的结果执行对应的业务,包括:在服务被调用节点接收到业务消息时,解析业务消息中定义的调用方法和参数;根据调用方法和参数执行对应的业务。
在本实施方式中,服务被调用节点中的实时消息服务收到业务消息后解析业务消息中定义的调用方法和参数,并通知服务调用节点中的业务处理服务执行该业务。
S14:控制服务被调用节点反馈业务执行结果至服务调用节点。
在本发明的一种实施方式中,控制服务被调用节点反馈业务执行结果至服务调用节点,包括:判断服务被调用节点的业务执行是否正常;若是,则控制服务被调用节点向服务调用节点发送确认执行的消息;若否,则控制服务被调用节点向服务调用节点发送取消执行的消息。
在本实施方式中,若在服务被调用节点中业务正常处理完成,则通过服务被调用节点中的实时消息服务发送一条确认执行的消息至服务调用节点中的实时消息服务;若在服务被调用节点中业务处理出现异常,则通过服务被调用节点中的实时消息服务发送一条取消执行的消息至服务调用节点中的实时消息服务。
S15:根据业务执行结果,控制服务调用节点变更自身中存储的业务消息的当前状态。
在本发明的一种实施方式中,根据业务执行结果,控制服务调用节点变更自身中存储的业务消息的当前状态,包括:当服务调用节点接收到确认执行的消息时,控制服务调用节点进行业务提交,并将业务消息的状态变更为已提交;当服务调用节点接收到取消执行的消息时,控制服务调用节点进行业务回滚,并将业务消息的状态变更为已回滚。
在本实施方式中,当服务调用节点中的实时消息服务收到确认执行的消息时,通知服务调用节点中的业务处理服务进行业务提交,并将业务消息的状态变更为已提交。当服务调用节点中的实时消息服务收到取消执行的消息时,通知服务调用节点中的业务处理服务进行业务回滚,并将业务消息的状态变更为已回滚。
进一步地,还包括:定时查询消息数据库中是否有未确认发送的消息;若是,则判断该未确认发送的消息是否有效;若是,则控制服务调用节点补发该未确认发送的消息至服务被调用节点;若否,则删除该未确认发送的消息。
在本实施方式中,服务调用节点的消息状态确认系统每隔一定的时间,优选为1分钟,定时在消息数据库中查询未确认发送的消息,发现未确认发送的消息时,根据业务主体ID标识向服务调用节点的业务处理服务询问消息状态,该业务处理服务根据消息主体ID或者消息内容确定该消息是否有效。
当消息状态确认系统找到未确认发送的消息经业务处理服务确认消息无效时,由服务调用节点的消息恢复系统负责删除该消息;当消息状态确认系统找到未确认发送的消息经业务处理服务确认消息有效时,由服务调用节点的消息恢复系统通知服务调用节点的实时消息服务补发该消息。补发该消息后,业务的事务处理重复上述各实施方式中的过程。
本发明所提供的基于微服务架构的分布式事务处理方法,主要考虑微服务架构中各服务使用不同开发语言平台的异构性、分布式节点网络通信效率低以及事务特性无法传播到其他业务节点的特点,采用基于消息队列传递事务特性的方法,实现微服务架构的分布式事务处理,可以保证微服务架构中分布式事务的数据一致性,有效提高分布式事务处理的效率。使用消息队列机制保存消息状态,业务处理服务能够进行业务检查并发送请求发送消息,实时消息服务负载记录下该消息,确保业务提交不丢失。在业务执行失败或遇到异常情况时,实时消息服务还可以向被调用节点发送取消提交的消息。服务被调用节点收到取消提交的消息执行相应的回滚操作实现事务回滚。
以上对本发明所提供的一种基于微服务架构的分布式事务处理方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (3)
1.一种基于微服务架构的分布式事务处理方法,其特征在于,包括:
在微服务架构中确定服务调用节点和服务被调用节点;
控制所述服务调用节点向所述服务被调用节点通过消息队列发送业务消息,并存储所述业务消息的发送状态;
控制所述服务被调用节点解析所述业务消息,并根据解析的结果执行对应的业务;
控制所述服务被调用节点反馈业务执行结果至所述服务调用节点;
根据所述业务执行结果,控制所述服务调用节点变更自身中存储的所述业务消息的当前状态;
在所述控制所述服务调用节点向所述服务被调用节点通过消息队列发送业务消息,并存储所述业务消息的发送状态之前还包括:
控制所述服务调用节点进行业务检查,判断所述业务消息是否正常且符合预设的业务提交条件;
若是,则将所述业务消息存储在所述服务调用节点的消息数据库中,并将所述业务消息的状态标记为请求发送状态;
所述控制所述服务调用节点向所述服务被调用节点通过消息队列发送业务消息,并存储所述业务消息的发送状态,包括:
接收业务消息确认发送信息;
在所述消息数据库中调取所述业务消息,并将所述业务消息通过消息队列发送至所述服务被调用节点;
在所述服务调用节点中将所述业务消息的状态变更为已发送状态;
还包括:
定时查询所述消息数据库中是否有未确认发送的消息;
若是,则判断该未确认发送的消息是否有效;
若是,则控制所述服务调用节点补发该未确认发送的消息至所述服务被调用节点;
若否,则删除该未确认发送的消息;
所述控制所述服务被调用节点解析所述业务消息,并根据解析的结果执行对应的业务,包括:
在所述服务被调用节点接收到所述业务消息时,解析所述业务消息中定义的调用方法和参数;
根据所述调用方法和参数执行对应的业务。
2.根据权利要求1所述的方法,其特征在于,所述控制所述服务被调用节点反馈业务执行结果至所述服务调用节点,包括:
判断所述服务被调用节点的业务执行是否正常;
若是,则控制所述服务被调用节点向所述服务调用节点发送确认执行的消息;
若否,则控制所述服务被调用节点向所述服务调用节点发送取消执行的消息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述业务执行结果,控制所述服务调用节点变更自身中存储的所述业务消息的当前状态,包括:
当所述服务调用节点接收到所述确认执行的消息时,控制所述服务调用节点进行业务提交,并将所述业务消息的状态变更为已提交;
当所述服务调用节点接收到所述取消执行的消息时,控制所述服务调用节点进行业务回滚,并将所述业务消息的状态变更为已回滚。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710112586.4A CN106909467B (zh) | 2017-02-28 | 2017-02-28 | 一种基于微服务架构的分布式事务处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710112586.4A CN106909467B (zh) | 2017-02-28 | 2017-02-28 | 一种基于微服务架构的分布式事务处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106909467A CN106909467A (zh) | 2017-06-30 |
CN106909467B true CN106909467B (zh) | 2021-06-29 |
Family
ID=59208075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710112586.4A Active CN106909467B (zh) | 2017-02-28 | 2017-02-28 | 一种基于微服务架构的分布式事务处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909467B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943601A (zh) * | 2017-11-22 | 2018-04-20 | 国云科技股份有限公司 | 平衡微服务架构下非核心业务数据一致性与可靠性的方法 |
CN110045912B (zh) | 2018-01-16 | 2021-06-01 | 华为技术有限公司 | 数据处理方法和装置 |
CN108845867A (zh) * | 2018-07-16 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种分布式事务管理方法、装置、系统及存储介质 |
CN108900356A (zh) * | 2018-07-25 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种云服务部署方法和系统 |
CN110049113A (zh) * | 2019-04-02 | 2019-07-23 | 中国联合网络通信集团有限公司 | 业务消息处理方法及装置 |
CN110175079B (zh) * | 2019-05-10 | 2021-11-09 | 广州市申迪计算机系统有限公司 | 请求队列调度方法、系统、可读存储介质及计算机设备 |
CN110231980A (zh) * | 2019-06-10 | 2019-09-13 | 世纪龙信息网络有限责任公司 | 分布式事务的处理方法、装置及事务处理器 |
CN111580945A (zh) * | 2020-04-21 | 2020-08-25 | 智业互联(厦门)健康科技有限公司 | 微服务任务协调调度方法及系统 |
CN112380039A (zh) * | 2021-01-13 | 2021-02-19 | 常州微亿智造科技有限公司 | 微服务架构下的消息消费方法、装置和存储介质 |
CN115629951B (zh) * | 2022-12-20 | 2023-03-28 | 北京蔚领时代科技有限公司 | 一种任务全链路追踪方法、第一节点、链路系统及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101340400A (zh) * | 2008-08-29 | 2009-01-07 | 中兴通讯股份有限公司 | 一种异步消息处理方法及系统 |
CN105608086A (zh) * | 2014-11-17 | 2016-05-25 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2932402C (en) * | 2013-12-02 | 2018-07-31 | Qbase, LLC | Design and implementation of clustered in-memory database |
-
2017
- 2017-02-28 CN CN201710112586.4A patent/CN106909467B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101340400A (zh) * | 2008-08-29 | 2009-01-07 | 中兴通讯股份有限公司 | 一种异步消息处理方法及系统 |
CN105608086A (zh) * | 2014-11-17 | 2016-05-25 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106909467A (zh) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909467B (zh) | 一种基于微服务架构的分布式事务处理方法 | |
US8275885B2 (en) | Method, apparatus and system for processing a series of service messages | |
KR100817098B1 (ko) | 정보 교환 시스템, 이것에 이용되는 관리 서버, 및네트워크 부하를 경감하기 위한 방법 | |
CN102035893A (zh) | 一种服务器主动推送数据的方法和系统 | |
CN102148817B (zh) | 配置网络设备的方法、客户端、服务器端及网络系统 | |
CN109451020B (zh) | 超时管理方法、设备及计算机可读存储介质 | |
US20210112129A1 (en) | Subscription information update method and apparatus | |
CN112099935B (zh) | 一种任务处理方法及装置 | |
JP2007028117A (ja) | 情報交換システム、管理サーバ、端末装置及びそれらに用いるネットワーク負荷軽減方法 | |
CN111404714A (zh) | 一种网络传送层连接控制方法及网络设备 | |
CN110825441B (zh) | 异步系统的实现方法、计算机设备和存储介质 | |
CN114138500B (zh) | 资源调度系统及方法 | |
CN110365786B (zh) | 作业处理系统、异步作业调度方法和计算机设备 | |
FI120286B (fi) | Menetelmä ja laitejärjestely palvelin-asiakaslaite-ympäristön hallitsemiseksi | |
CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
US11218371B2 (en) | Method and apparatus for performing communication in internet of things | |
CN110738156A (zh) | 一种基于消息中间件的人脸识别系统及方法 | |
US9021109B1 (en) | Controlling requests through message headers | |
CN102055606B (zh) | 一种业务支撑系统中的业务处理方法、系统及设备 | |
CN116321064A (zh) | 车辆远程控制方法、装置、系统及服务器 | |
CN115357395A (zh) | 故障设备任务转移方法及系统、电子设备和存储介质 | |
CN114885020A (zh) | 数据传输系统以及方法 | |
JPWO2006043411A1 (ja) | 通信装置および端末存在確認方法 | |
CN113010330A (zh) | 一种微服务请求重试的方法及终端 | |
CN109688085B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |