CN108055296B - 一种基于微服务架构的事务处理方法及装置 - Google Patents
一种基于微服务架构的事务处理方法及装置 Download PDFInfo
- Publication number
- CN108055296B CN108055296B CN201711235601.0A CN201711235601A CN108055296B CN 108055296 B CN108055296 B CN 108055296B CN 201711235601 A CN201711235601 A CN 201711235601A CN 108055296 B CN108055296 B CN 108055296B
- Authority
- CN
- China
- Prior art keywords
- transaction
- micro
- services
- information
- voting information
- 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 18
- 238000012545 processing Methods 0.000 claims abstract description 89
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000012790 confirmation Methods 0.000 claims 20
- 230000009471 action Effects 0.000 abstract description 11
- 238000000034 method Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 10
- 230000007704 transition Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 101100465000 Mus musculus Prag1 gene Proteins 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005034 decoration Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种基于微服务架构的事务处理方法及装置,在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
Description
技术领域
本发明涉及微服务架构领域,尤其涉及一种基于微服务架构的事务处理方法及装置。
背景技术
近年来,随着云计算和互联网行业的飞速发展,传统的技术架构已经不能满足业务量的灵活增长和弹性应用。为了解决这一问题,微服务架构应运而生。
微服务架构是基于软件的系统架构,能够将小型独立的,像一个微型应用程序一样,能够以自己的方式独立运行的组件组合成复杂的应用程序。这些组件之间通过与语言无关的应用程序编程接口(API)和简单协议实现互相通信,比如远程方法调用(RMI),Restful Web服务或者Push Messaging。这样的系统架构可以让企业更容易地跨不同部门或者业务的多个开发团队分发工作负载,提供了高度的灵活性,并且帮助加速项目的生命周期。每个组件都有自己的存储,内存或者CPU资源,这使得硬件的利用更为简单,特别是在基于云平台及服务(PaaS)上,只需要预配并且跟踪即可。
在微服务架构中,每个组件都是一个相对独立业务的服务,每个服务可部署在不同的节点上,每个服务在自身存储空间单独存储业务数据。当各服务节点之间出现调用时,如何实现微服务架构中业务数据的一致性成为亟需解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种基于微服务架构的事务处理方法及装置,以解决现有技术中存在的微服务架构中业务数据的一致性问题。
技术方案如下:
本发明提供一种基于微服务架构的事务处理方法,包括:
接收微服务发送的事务请求;
根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;其中,一个事务组中包括的每个微服务分别被部署在执行一项业务的不同节点上;
接收全部微服务响应所述事务投票信息后返回的事务决策信息;
根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理。
优选地,所述根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息包括:
解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;创建事务投票信息;
根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
向与所述事务组标识对应的全部微服务发送事务投票信息。优选地,所述向与所述事务组标识对应的全部微服务发送事务投票信息之后,还包括:
判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送了事务投票信息,则再次向与所述事务组标识对应的全部微服务发送事务投票信息。
优选地,所述接收全部微服务响应所述事务投票信息后返回的事务决策信息之后,还包括:
判断是否接收到全部微服务返回的事务决策信息;
判断没有接收到全部微服务返回的事务决策信息,则间隔预定时间后,再次判断是否接收到全部微服务返回的事务决策信息。
本发明提供一种基于微服务架构的事务处理方法,包括:
向事务协调器发送事务请求;
接收所述事务协调器响应所述事务请求后发送的事务投票信息;
根据所述事务投票信息,向所述事务协调者发送事务决策信息;
接收所述事务协调器响应所述事务决策信息后返回的处理指令;
根据所述处理指令,对事务进行相应的处理。
本发明还提供一种基于微服务架构的事务处理装置,包括:
第一接收单元,用于接收微服务发送的事务请求;
第一发送单元,用于根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;其中,一个事务组中包括的每个微服务分别被部署在执行一项业务的不同节点上;
第二接收单元,用于接收全部微服务响应所述事务投票信息后返回的事务决策信息;
第二发送单元,用于根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理。
优选地,所述第一发送单元包括:
解析子单元,用于解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;创建子单元,用于创建事务投票信息;
查找子单元,用于根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
发送子单元,用于向与所述事务组标识对应的全部微服务发送事务投票信息。优选地,还包括第一判断单元;
所述第一判断单元,用于判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送了事务投票信息,则调用所述发送子单元。
优选地,还包括第二判断单元;
所述第二判断单元,用于判断是否接收到全部微服务返回的事务决策信息;
判断没有接收到全部微服务返回的事务决策信息,则间隔预定时间后,再次判断是否接收到全部微服务返回的事务决策信息。,
本发明还提供一种基于微服务架构的事务处理装置,包括:
第三发送单元,用于向事务协调器发送事务请求;
第三接收单元,用于接收所述事务协调器响应所述事务请求后发送的事务投票信息;
第四发送单元,用于根据所述事务投票信息,向所述事务协调者发送事务决策信息;
第四接收单元,用于接收所述事务协调器响应所述事务决策信息后返回的处理指令;
处理单元,用于根据所述处理指令,对事务进行相应的处理。
与现有技术相比,本发明提供的上述技术方案具有如下优点:
从上述技术方案可知,本申请中在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于微服务架构的事务处理方法的流程图;
图2是本发明实施例提供的另一种基于微服务架构的事务处理方法的流程图;
图3是本发明实施例提供的另一种基于微服务架构的事务处理方法的流程图;
图4是本发明实施例提供的一种基于微服务架构的事务处理装置的结构示意图;
图5是本发明实施例提供的另一种基于微服务架构的事务处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例公开了一种基于微服务架构的事务处理方法,应用在事务协调器侧,参见图1,该实施例包括以下步骤:
S101、接收微服务发送的事务请求;
事务请求包括更新请求和部署请求。其中,作为一个业务节点的微服务完成自身所需要执行的业务功能后,需要更新数据库中存储的数据而产生更新请求。即更新请求具体可以为对微服务对应的数据库中的数据的更新操作。在由多个微服务分别被部署在不同的业务节点上而组成的系统而言,当需要加入新的业务功能,即需要部署新的业务节点时,产生部署请求。
S102、根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;其中,一个事务组中包括的每个微服务分别被部署在执行一项业务的不同节点上;
执行不同的业务时,所需要调用的微服务是不同的,针对一个业务而言,分别被部署在不同业务节点上的微服务为一个事务组。不同的业务对应的事务组中包括的微服务是不同的。例如,业务A需要调用微服务a、b和c,微服务a被部署在节点1,微服务b被部署在节点2,微服务c被部署在节点3,那么业务A对应的事务组包括微服务a、微服务b和微服务c;业务B需要调用微服务d、e、f和g,微服务d被部署在节点1,微服务e被部署在节点2,微服务f被部署在节点3,微服务g被部署在节点4,那么业务B对应的事务组包括微服务d、微服务e、微服务f和微服务g。
以接收到的事务请求为更新请求为例说明,当位于一个业务节点上的微服务需要更新数据时,首先需要向事务协调者发送更新请求。事务协调者在接收到微服务发送的更新请求后,会根据微服务所在的业务节点,向被部署在同一业务不同节点上的微服务发送事务投票信息,以便得知位于不同业务节点上的微服务是否能够同步更新数据。
S103、接收全部微服务响应所述事务投票信息后返回的事务决策信息;
事务协调者在将事务投票信息发送至位于不同业务节点的微服务后,等待接收位于不同业务节点的微服务分别响应所述事务投票信息后返回的事务决策信息。其中,事务决策信息包括同意信息和取消信息。同意信息表示微服务当前可以执行更新动作,取消信息表示微服务当前不能执行更新动作。例如,某个业务节点上的微服务正在执行对自身存储的数据库的读操作或者写操作时收到了事务投票信息,由于当前对正在进行读操作或者写操作的数据库进行更新,会导致影响当前正在进行的读操作或写操作的正确性,因此,微服务将返回取消信息,即不能进行更新动作。当某个业务节点上的微服务允许对自身存储的数据库进行更新时,将返回同意信息。
S104、根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理。
不同业务节点调用的微服务返回的事务决策信息可能不同,有的微服务返回的事务决策信息为同意信息,有的微服务返回的事务决策信息为取消信息。
当接收到的事务决策信息全部都是同意信息,则向所述事务组包括的全部微服务发送同意处理指令;当接收到的事务决策信息中至少包括一个取消信息,则向所述事务组包括的全部微服务发送取消处理指令。
在事务请求为更新请求时,仍然以业务B需要调用微服务d、e、f和g,微服务d被部署在节点1,微服务e被部署在节点2,微服务f被部署在节点3,微服务g被部署在节点4为例说明,微服务d发送更新请求后,事务协调者向微服务e、f和g发送事务投票信息,微服务e、f和g接收到更新请求后,分别根据自身当前状态响应所述事务投票信息,并向事务协调者发送事务决策信息。在微服务e和微服务f发送的事务决策信息是同意信息,微服务g发送的事务决策信息是取消信息时,由于事务决策信息中包括了一个取消信息,因此向微服务d、e、f和g发送取消处理指令,所述取消处理指令用于控制微服务d、e、f和g取消更新操作,并回滚;在微服务e、微服务f和微服务g发送的事务决策信息是同意信息时,由于事务决策信息全部是同意信息,因此向微服务d、e、f和g发送同意处理指令,所述同意处理指令用于控制微服务d、e、f和g进行更新操作。
从上述技术方案可知,本申请中在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
本实施例公开了另一种基于微服务架构的事务处理方法,参见图2,该实施例包括以下步骤:
S201、接收微服务发送的事务请求;
本实施例中步骤S201的实现方式与上一实施例中步骤S101的实现方式类似,此处不再赘述。
S202、解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;
每个业务包括的业务节点不同,因此需要调用的微服务的数量不同,但是每个业务分别对应一个事务组(Group),事务组是由执行此业务时所需要调用的微服务构成。在事务协调器中预先存储有事务协调器可以处理的每个业务与事务组之间的映射关系,每个事务组具有唯一标识其身份的标识(GID),例如,GID=1代表的是业务A,GID=2代表的是业务B。
针对一个微服务而言,其可以被不同的业务在不同的业务节点调用,微服务在向事务协调器发送的事务请求中携带有微服务正在执行的业务对应的事务组的标识,例如,微服务正在被业务A的一个业务节点调用,则微服务发送的事务请求中携带有GID=1的内容。
通过对接收到的事务请求的解析,可以得到发送事务请求的微服务所在的事务组标识。
S203、创建事务投票信息;
本实施例中加入了对内部消息的生命周期管理。
在本步骤中事务协调器为发送方,而微服务为接收方。一个内部消息在发送的一个生命周期中包括的状态如表1所示:
表1
本步骤中,事务投票信息为一项内部消息。下面以事务投票信息为例,介绍对内部消息的生命周期管理。
事务投票信息的初始状态为q0,即不存在的这一状态。在需要将事务投票信息发送给微服务前,需要先创建事务投票信息。在创建了事务投票信息后,事务投票信息的状态将由初始状态q0转换为状态q1,即转换为消息被创建完毕的状态。
其中,通过函数I(in,Payload,GID)实现对事务投票信息的创建。第一个参数是内部事件,第二个参数是有效负载,即消息发送/接收双方用来交换的实际数据,第三个参数是事务组标识。其中,一个事务组中可以包括多个内部消息,每个内部消息都具有身份标识(MID),MID用于唯一标识内部消息在事务组中的序号,且用Range[low,high]表示组内上界high和下界low之间的内部消息的序号范围。
内部事件in可以包括多种操作,具体如表2所示:
表2
发送方的内部事件可以在集合{in1,in2,in3,in4,in5,in6,in7,in8,in9}中取值。在本步骤中,由于是要创建一个消息,因此函数中第一个参数IN为in1,CreateMessage;由于在步骤S202中已经解析得到了事务组标识,因此第三个参数GID的值也已经确定了。第二个参数Payload,不同的消息Payload是不同的,例如,消息为对更新请求投票的信息,Payload可以为1,消息为对部署请求投票的信息,Payload可以为2。当然,Payload的内容还可以是字符串形式的内容。在本实施例中只要能够通过不同的内容区分不同的消息即可,而并不限定Payload的具体内容。
但是,并不是在所有条件下都可以完成消息的创建,只有满足一定条件时才能创建一个消息。本实施例中创建条件为系统有空闲的缓存和CPU处理能力。
本步骤中在创建内部消息后,会完成内部消息的状态转换,状态转换表达式为:
在满足创建条件C(Free Cache&CPU)的情况下,即系统有空闲的缓存和CPU处理能力时,GID组创建内容为Payload的消息,消息状态从q0(不存在)转为q1(消息被创建完毕),且不进行其他的内部事件操作。
在发送方的内部消息的状态转换函数δ表示为:
Q表示消息状态,具体可以为Q={Inexistent,Created,Sent,GotAck};Σ表示对内部消息或者内部消息自身带有的变量的内部事件,Σ={ξ0,ξ1,ξ2,…,ξm};Δ表示内部消息对所在组的带有变量的内部事件,Δ={χ0,χ1,χ2,…,χi};带有Σ、Δ的状态转换函数δ从集合(δ0,δ1,δ2,…)中进行取值。
具体状态转换如表3所示:
表3
S204、根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
事务协调器内预先存储有事务协调器可以处理的每个业务与事务组之间的映射关系,每个事务组具有唯一标识其身份的标识(GID),例如,GID=1代表的是业务A,GID=2代表的是业务B。且,预先存储有每个事务组包括的全部微服务,其中,可以通过调用微服务的IP地址、端口地址等建立与事务组之间的对应关系。
在本实施例中并不限定创建事务投票信息和查找与事务组标识对应的全部微服务的执行顺序。
S205、向与所述事务组标识对应的全部微服务发送事务投票信息;
将创建的事务投票信息通过IP地址、端口地址发送给与所述事务组标识对应的全部微服务。在发送了事务投票信息后,将此事务投票信息的状态转换为q2,即已发送。
S206、判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送了事务投票信息,则返回执行步骤S205;
判断向所述事务组标识对应的全部微服务都成功发送了事务投票信息,则执行步骤S207;
在发送事务投票信息的过程中可能存在多种原因导致不能将事务投票信息成功发送到微服务。为了确保事务投票信息能够成功发送到事务组标识对应的全部微服务中,在发送了事务投票信息后需要判断是否成功将事务投票信息发送到事务组标识对应的每个微服务中。
判断方法可以为通过事务投票信息的状态判断。具体地,在向所述事务组标识对应的全部微服务发送了事务投票信息后,事务投票信息的状态为已发送;当微服务接收到事务投票信息后,事务协调器会接收到确认信息(Ack),当接收到的确认信息的数量等于所述事务组标识对应的全部微服务的总数量时,说明全部微服务都已经成功接收到事务投票信息,事务投票信息的状态由已发送的状态转换为已获得肯定确认的状态(GotAck)。其中,可以预先设置消息确认范围参数(AckRange),用于表示已成功接收消息的范围,AckRange设置为与所述事务组标识对应的全部微服务的总数量相同。在接收到的确认信息的数量等于AckRange,则说明全部微服务都已经成功接收到事务投票信息。
当任意一个微服务没有接收到事务投票信息时,事务协调器会接收到否定确认信息(Nack),事务投票信息的状态由已发送的状态转换为已获得否定确认的状态(GotNack)。
当事务投票信息的状态为GotAck,则说明向全部微服务都成功发送了事务投票信息,则进行下一步操作;当事务投票信息的状态为GotNack,则说明没有向全部微服务都成功发送事务投票信息,则将状态为GotNack的事务投票信息重新发送至全部微服务,当然还可以仅将状态为GotNack的事务投票信息重新发送至没有成功接收到事务投票信息的微服务中。
S207、接收全部微服务响应所述事务投票信息后返回的事务决策信息;
在本步骤中事务协调器为接收方,而微服务为发送方。一个内部消息在接收的一个生命周期中包括的状态如表4所示:
表4
例如,事务协调器成功接收到微服务发送的事务决策信息后,向微服务返回Ack信息,此时事务协调器内部消息的状态为已发送肯定确认(SentAck);事务协调器接收到微服务发送的事务决策信息但存在故障,向微服务返回Fault信息,此时事务协调器内部消息的状态为已发送故障信息(SentFault);事务协调器没有接收到微服务发送的事务决策信息,则向微服务返回Nack信息,此时事务协调器内部消息的状态为已发送否定确认(SentNack)。
在接收方的内部消息的状态转换函数δ表示为:
Q表示消息状态,具体可以为Q={Inexistent,SentNack,Received,SentAck/Fault,Delivered};Σ表示对内部消息或者内部消息自身带有的变量的内部事件,Σ={ξ0,ξ1,ξ2,…,ξm};Δ表示内部消息对所在组的带有变量的内部事件,Δ={χ0,χ1,χ2,…,χl};带有Σ、Δ的状态转换函数δ从集合(δ0,δ1,δ2,…)中进行取值。
例如,δ1:表示标识GID的事务组一直在等待该消息,但始终没有接收到(条件C:Wait but not received),则状态转换δ1发生,消息状态从q0转为q1,并输出标识为GID的事务组的要求I(Nack,GID),即要向发送方发送Nack的否定确认消息。
具体状态转换如表5所示:
表5
接收方的内部事件可以在集合{in1,in2,in3,in4,in5,in6,in13,in15}中取值。
本实施例中发送方与接收方对内部消息的管理方式类似,只是接收方相较于发送方还包括故障信息。所述故障信息指的是接收方要求使用Protocol协议(如WSR或WSRM),而却接收到一个未使用Protocol协议或存在和协议规定Schema冲突的消息,此时产生故障信息。
S208、判断是否接收到全部微服务返回的事务决策信息;
判断没有接收到全部微服务返回的事务决策信息,则间隔预定时间后,返回执行步骤S208;
判断接收到全部微服务返回的事务决策信息,则执行步骤S209;
等待接收全部微服务返回的事务决策信息。
S209、根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理。
本实施例中步骤S209的实现方式与上一实施例中步骤S104的实现方式类似,此处不再赘述。
从上述技术方案可知,本申请中在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
本实施例中还公开了一种基于微服务架构的事务处理方法,应用在微服务侧,参见图3,该实施例包括以下步骤:
S301、向事务协调器发送事务请求;
事务请求包括更新请求和部署请求。不同的微服务被部署在不同的业务节点上,位于一个业务节点的微服务完成自身所需要执行的业务功能后,需要更新数据库中存储的数据而产生更新请求。即更新请求具体可以为对微服务对应的数据库中的数据的更新操作。当需要加入新的业务功能,即需要部署新的业务节点时,产生部署请求。
S302、接收所述事务协调器响应所述事务请求后发送的事务投票信息;
接收事务协调器发送的事务投票信息,其中,事务投票信息为对位于同一事务组中的微服务发出的事务请求进行投票的信息。当然,事务投票信息也可以为对自身发出的事务请求进行投票的信息。
S303、根据所述事务投票信息,向所述事务协调者发送事务决策信息;
事务决策信息包括同意信息和取消信息。
在接收到事务投票信息后,根据当前的工作状态生成事务决策信息。例如,微服务正在执行对自身存储的数据库的读操作或者写操作时收到了事务投票信息,由于当前对正在进行读操作或者写操作的数据库进行更新,会导致影响当前正在进行的读操作或写操作的正确性,因此,微服务将返回取消信息,即不能进行更新动作。当微服务允许对自身存储的数据库进行更新时,将返回同意信息。
S304、接收所述事务协调器响应所述事务决策信息后返回的处理指令;
当事务组包括的全部微服务向事务协调器发送的事务决策信息都是同意信息,则接收到的处理指令为同意处理指令;当事务组包括的微服务中存在至少一个微服务向事务协调器发送的事务决策信息是取消信息,则接收到的处理指令为取消处理指令。
S305、根据所述处理指令,对事务进行相应的处理。
处理指令为同意处理指令,则根据事务请求对事务进行相应的处理。例如,事务请求为更新请求,且接收到的处理指令为同意处理指令,则进行更新操作。
当然,本实施例公开的事务处理方法也对发送的内部消息和接收的内部消息的生命周期管理,具体实现方式与上一实施例中发送和接收内部消息的方式类似,此处不再赘述。
从上述技术方案可知,本申请中在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
对应上述事务处理方法,本实施例还公开了一种基于微服务架构的事务处理装置,所述事务处理装置可以集成在事务协调器中,所述事务处理装置的结构示意图请参阅图4所示,本实施例中事务处理装置包括:
第一接收单元401、第一发送单元402、第二接收单元403、第二发送单元404、第一判断单元405和第二判断单元406;
第一接收单元401,用于接收微服务发送的事务请求;
第一发送单元402,用于根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;其中,一个事务组中包括的每个微服务分别被部署在执行一项业务的不同节点上;
可选地,第一发送单元402包括:
解析子单元501、创建子单元502、查找子单元503和发送子单元504;
解析子单元501,用于解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;创建子单元502,用于创建事务投票信息;
查找子单元503,用于根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
发送子单元504,用于向与所述事务组标识对应的全部微服务发送事务投票信息。
第二接收单元403,用于接收全部微服务响应所述事务投票信息后返回的事务决策信息;
第二发送单元404,用于根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理;
第一判断单元405,用于判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送了事务投票信息,则调用发送子单元504;
第二判断单元406,用于判断是否接收到全部微服务返回的事务决策信息;
判断没有接收到全部微服务返回的事务决策信息,则间隔预定时间后,再次判断是否接收到全部微服务返回的事务决策信息。
从上述技术方案可知,本实施例中在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
本实施例还公开了另一种基于微服务架构的事务处理装置,所述事务处理装置可以集成在微服务中,所述事务处理装置的结构示意图请参阅图5所示,本实施例中事务处理装置包括:
第三发送单元601、第三接收单元602、第四发送单元603、第四接收单元604和处理单元605;
第三发送单元601,用于向事务协调器发送事务请求;
第三接收单元602,用于接收所述事务协调器响应所述事务请求后发送的事务投票信息;
第四发送单元603,用于根据所述事务投票信息,向所述事务协调者发送事务决策信息;
第四接收单元604,用于接收所述事务协调器响应所述事务决策信息后返回的处理指令;
处理单元605,用于根据所述处理指令,对事务进行相应的处理。
从上述技术方案可知,本实施例中在接收到微服务发送的事务请求后,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;并接收全部微服务响应所述事务投票信息后返回的事务决策信息;根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,实现了控制全部微服务同步进行相同的处理动作,进而满足了微服务架构中数据一致性的需求。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种基于微服务架构的事务处理方法,其特征在于,包括:
接收微服务发送的事务请求;
根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;其中,一个事务组中包括的每个微服务分别被部署在执行一项业务的不同节点上;
接收全部微服务响应所述事务投票信息后返回的事务决策信息;
根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理;
其中,所述根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息包括:
解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;根据内部事件、有效负载和事务组标识,创建得到事务投票信息,并将事务投票信息的状态由初始状态转换为表征创建完毕的状态;
根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
向与所述事务组标识对应的全部微服务发送事务投票信息,将事务投票信息的状态由表征创建完毕的状态转换为表征已发送的状态,并在接收到微服务返回的确认信息后,将所述事务投票信息的状态由表征已发送的状态转换为表征已获得肯定确认的状态;其中,预先设置消息确认范围参数,所述消息确认范围参数的数值与所述事务组标识对应的全部微服务的总数量相同;
通过确定接收到的确认信息的数量是否等于所述消息确认范围参数的数值,来判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送事务投票信息,则再次向与所述事务组标识对应的全部微服务发送事务投票信息。
2.根据权利要求1所述的事务处理方法,其特征在于,所述接收全部微服务响应所述事务投票信息后返回的事务决策信息之后,还包括:
判断是否接收到全部微服务返回的事务决策信息;
判断没有接收到全部微服务返回的事务决策信息,则间隔预定时间后,再次判断是否接收到全部微服务返回的事务决策信息。
3.一种基于微服务架构的事务处理方法,其特征在于,包括:
向事务协调器发送事务请求;
接收所述事务协调器响应所述事务请求后发送的事务投票信息;
根据所述事务投票信息,向所述事务协调器发送事务决策信息;
接收所述事务协调器响应所述事务决策信息后返回的处理指令;
根据所述处理指令,对事务进行相应的处理;
其中,所述事务协调器响应所述事务请求后发送的事务投票信息,包括:
解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;根据内部事件、有效负载和事务组标识,创建得到事务投票信息,并将事务投票信息的状态由初始状态转换为表征创建完毕的状态;
根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
向与所述事务组标识对应的全部微服务发送事务投票信息,将事务投票信息的状态由表征创建完毕的状态转换为表征已发送的状态,并在接收到微服务返回的确认信息后,将所述事务投票信息的状态由表征已发送的状态转换为表征已获得肯定确认的状态;其中,预先设置消息确认范围参数,所述消息确认范围参数的数值与所述事务组标识对应的全部微服务的总数量相同;
通过确定接收到的确认信息的数量是否等于所述消息确认范围参数的数值,来判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送了事务投票信息,则再次向与所述事务组标识对应的全部微服务发送事务投票信息。
4.一种基于微服务架构的事务处理装置,其特征在于,包括:
第一接收单元,用于接收微服务发送的事务请求;
第一发送单元,用于根据所述事务请求,向与所述微服务所在的事务组中的全部微服务发送事务投票信息;其中,一个事务组中包括的每个微服务分别被部署在执行一项业务的不同节点上;
第二接收单元,用于接收全部微服务响应所述事务投票信息后返回的事务决策信息;
第二发送单元,用于根据所述事务决策信息,向所述事务组包括的全部微服务发送相应的处理指令,其中,所述处理指令用于控制所述全部微服务进行相应的处理;
其中,所述第一发送单元包括:
解析子单元,用于解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;创建子单元,用于根据内部事件、有效负载和事务组标识,创建得到事务投票信息,并将事务投票信息的状态由初始状态转换为表征创建完毕的状态;
查找子单元,用于根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
发送子单元,用于向与所述事务组标识对应的全部微服务发送事务投票信息,将事务投票信息的状态由表征创建完毕的状态转换为表征已发送的状态,并在接收到微服务返回的确认信息后,将所述事务投票信息的状态由表征已发送的状态转换为表征已获得肯定确认的状态;其中,预先设置消息确认范围参数,所述消息确认范围参数的数值与所述事务组标识对应的全部微服务的总数量相同;
还包括,第一判断单元;
所述第一判断单元,用于通过确定接收到的确认信息的数量是否等于所述消息确认范围参数的数值,来判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送事务投票信息,则调用所述发送子单元。
5.根据权利要求4所述的事务处理装置,其特征在于,还包括第二判断单元;
所述第二判断单元,用于判断是否接收到全部微服务返回的事务决策信息;
判断没有接收到全部微服务返回的事务决策信息,则间隔预定时间后,再次判断是否接收到全部微服务返回的事务决策信息。
6.一种基于微服务架构的事务处理装置,其特征在于,包括:
第三发送单元,用于向事务协调器发送事务请求;
第三接收单元,用于接收所述事务协调器响应所述事务请求后发送的事务投票信息;
第四发送单元,用于根据所述事务投票信息,向所述事务协调器发送事务决策信息;
第四接收单元,用于接收所述事务协调器响应所述事务决策信息后返回的处理指令;
处理单元,用于根据所述处理指令,对事务进行相应的处理;
其中,所述事务协调器响应所述事务请求后发送的事务投票信息,包括:
解析所述事务请求得到发送所述事务请求的微服务所在的事务组标识;根据内部事件、有效负载和事务组标识,创建得到事务投票信息,并将事务投票信息的状态由初始状态转换为表征创建完毕的状态;
根据所述事务组标识,查找与所述事务组标识对应的全部微服务;
向与所述事务组标识对应的全部微服务发送事务投票信息,将事务投票信息的状态由表征创建完毕的状态转换为表征已发送的状态,并在接收到微服务返回的确认信息后,将所述事务投票信息的状态由表征已发送的状态转换为表征已获得肯定确认的状态;其中,预先设置消息确认范围参数,所述消息确认范围参数的数值与所述事务组标识对应的全部微服务的总数量相同;
通过确定接收到的确认信息的数量是否等于所述消息确认范围参数的数值,来判断是否向所述事务组标识对应的全部微服务都成功发送了事务投票信息;
判断没有向所述事务组标识对应的全部微服务都成功发送事务投票信息,则再次向与所述事务组标识对应的全部微服务发送事务投票信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711235601.0A CN108055296B (zh) | 2017-11-30 | 2017-11-30 | 一种基于微服务架构的事务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711235601.0A CN108055296B (zh) | 2017-11-30 | 2017-11-30 | 一种基于微服务架构的事务处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108055296A CN108055296A (zh) | 2018-05-18 |
CN108055296B true CN108055296B (zh) | 2020-11-27 |
Family
ID=62121685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711235601.0A Active CN108055296B (zh) | 2017-11-30 | 2017-11-30 | 一种基于微服务架构的事务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108055296B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213770B (zh) * | 2018-06-06 | 2023-05-30 | 平安科技(深圳)有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
CN111917816B (zh) * | 2020-05-22 | 2022-08-26 | 淮阴工学院 | 服务应用独立式架构系统 |
CN112199075B (zh) * | 2020-09-30 | 2021-09-21 | 黑龙江省网络空间研究中心 | 一种基于微服务智能信息处理方法及框架系统 |
CN113592471A (zh) * | 2021-07-29 | 2021-11-02 | 中国人民银行清算总中心 | 支付交易应用系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706811A (zh) * | 2009-11-24 | 2010-05-12 | 中国科学院软件研究所 | 一种分布式数据库系统事务提交方法 |
CN105933448A (zh) * | 2016-06-29 | 2016-09-07 | 江苏电力信息技术有限公司 | 一种自管理的微服务架构及其服务方法 |
CN106503132A (zh) * | 2016-10-19 | 2017-03-15 | 广州快塑电子商务有限公司 | 一种分布式事务管理方法及系统 |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及系统 |
CN106993023A (zh) * | 2017-03-01 | 2017-07-28 | 北京交通大学 | 微服务架构下的分布式事务解决方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644305B2 (en) * | 2006-05-18 | 2010-01-05 | Microsoft Corporation | Quorum establishment based on a vote from a voting device |
-
2017
- 2017-11-30 CN CN201711235601.0A patent/CN108055296B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706811A (zh) * | 2009-11-24 | 2010-05-12 | 中国科学院软件研究所 | 一种分布式数据库系统事务提交方法 |
CN105933448A (zh) * | 2016-06-29 | 2016-09-07 | 江苏电力信息技术有限公司 | 一种自管理的微服务架构及其服务方法 |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及系统 |
CN106503132A (zh) * | 2016-10-19 | 2017-03-15 | 广州快塑电子商务有限公司 | 一种分布式事务管理方法及系统 |
CN106993023A (zh) * | 2017-03-01 | 2017-07-28 | 北京交通大学 | 微服务架构下的分布式事务解决方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108055296A (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108055296B (zh) | 一种基于微服务架构的事务处理方法及装置 | |
US11522951B2 (en) | Configuring service mesh networking resources for dynamically discovered peers or network functions | |
US8209213B2 (en) | Method for the construction and execution of a distributed workflow in a communication system | |
US8788565B2 (en) | Dynamic and distributed queueing and processing system | |
EP3667500A1 (en) | Using a container orchestration service for dynamic routing | |
WO2020228449A1 (zh) | 一种节点选择方法和装置 | |
US8914804B2 (en) | Handling queues associated with web services of business processes | |
CN109600375B (zh) | 消息跟踪方法、装置、电子设备及存储介质 | |
CN105103507A (zh) | 网络功能虚拟化的方法及装置 | |
US11354152B2 (en) | Self-evolving microservices | |
CN103780679A (zh) | 基于http协议的长延时远程调用方法 | |
Da et al. | Kalimucho: middleware for mobile applications | |
CN106155775B (zh) | 消息处理方法、设备及系统 | |
CN106790131B (zh) | 一种参数修改方法、装置及分布式平台 | |
CN112787999B (zh) | 跨链调用方法、装置、系统与计算机可读存储介质 | |
CN111124589B (zh) | 一种服务发现系统、方法、装置及设备 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN110677462A (zh) | 多区块链网络的访问处理方法、系统、装置及存储介质 | |
WO2002065230A2 (en) | Non-hierarchical collaborative computing platform | |
CN114138500A (zh) | 资源调度系统及方法 | |
CN112579319A (zh) | 一种基于LRU Cache优化的服务调用方法及装置 | |
CN112882792A (zh) | 信息加载方法、计算机设备及存储介质 | |
WO2011087584A2 (en) | Fault tolerant and scalable load distribution of resources | |
CN111008254A (zh) | 一种对象创建方法、装置、计算机设备和存储介质 | |
CN114820187A (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 |