CN110532066A - 一种事务一致性的实现方法及系统 - Google Patents
一种事务一致性的实现方法及系统 Download PDFInfo
- Publication number
- CN110532066A CN110532066A CN201810501991.XA CN201810501991A CN110532066A CN 110532066 A CN110532066 A CN 110532066A CN 201810501991 A CN201810501991 A CN 201810501991A CN 110532066 A CN110532066 A CN 110532066A
- Authority
- CN
- China
- Prior art keywords
- state
- message
- target message
- consumer
- finish
- 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
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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种事务一致性的实现方法及系统。方法包括:根据未完结消息列表中的目标消息对应的本地事务的第一状态,将目标消息发送给消费者,以使得消费者根据目标消息对应的远程事务的第二状态,对目标消息进行消费;根据消费者返回的消费成功的响应,将目标消息从未完结消息列表中删除;其中,未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。通过未完结状态列表记录默认为本地事务已被执行但未被消费的消息,对表中的每一条消息进行检测,以重发给消费者消费。可以保证若本地事务已被执行,则远程事务一定也会被执行,保证了本地事务和远程事务的一致性。
Description
技术领域
本发明实施例涉及移动通信的业务支撑技术领域,尤其涉及一种事务一致性的实现方法及系统。
背景技术
随着微服务架构理念的日益流行,传统的单体应用架构方式逐步被分布式服务架构方式取代。消息中间件被广泛应用于微服务架构下的应用间分布式调用场景,以实现应用解耦、服务异步化调用及对高峰业务量削峰,目前主流消息中间件有ActiveMQ、RabbitMQ、Kafka、RocketMQ等。图1为消息中间件的逻辑架构图,如图1所示,消息中间件产品虽然众多,但逻辑架构总体都由MQ发送方(Producer)、MQ服务方(Broker)、MQ订阅方(Consumer)三大块构成,其中Producer负责消息的生产并发送给Broker,Broker负责消息接收并异步传递给Consumer,Consumer负责消息的最终业务处理。
图2为传统单体应用下单一的本地事务在基于消息中间件的分布式解耦方式下的事务分布图,如图2所示,传统单体应用下单一的本地事务在基于消息中间件的分布式解耦方式下不可避免地被拆解为本地事务、MQ事务、远程事务三部分,因此新的架构方式下必须解决以上三者的一致性问题。即需确保Producer侧的本地事务提交后,消息同步发送给Broker,并确保Broker接收消息后成功调度Consumer侧完成远程事务提交。
现有技术中主要通过事务消息来解决分布式服务架构下的事务一致性问题。图3为现有技术中通过事务消息解决分布式服务架构下的事务一致性问题的流程图,如图3所示,事务消息主要通过MQ发送方向MQ服务方进行二阶段提交实现:第一阶段,在MQ发送方进行本地事务的处理时操作业务数据库,在本地事务执行过程中发送初始状态的事务消息到MQ服务方,MQ服务方将该事务消息持久化到消息数据库;第二阶段,在MQ发送方确定事务消息是提交或者回滚,此时会发送指示提交或回滚的消息到MQ服务方,如果是指示回滚的消息,MQ服务方会删除先前持久化到消息数据库的初始状态消息,如果是指示提交的消息,MQ服务方会将事务消息的状态从初始状态更新为提交状态,然后再进行投递。对处于初始状态且长期未提交的消息,MQ服务方会向发送端方查询事务消息的状态后对事务消息进行提交或回滚。
现有事务消息机制可确保Producer侧的本地事务已被执行后,消息被成功发送给Broker,但Broker自身因各种原因工作异常时仍会导致消息丢失,即Consumer侧远程事务和Producer侧本地事务最终不一致。并且,在Broker临时不可用时,只能直接回退本地事务,系统可用性不足。因此,现有技术实质上只是部分解决了本地事务和MQ事务之间的一致性问题,而并没有解决本地事务到远程事务的端到端一致性问题。
发明内容
本发明实施例提供一种事务一致性的实现方法及系统,用以解决现有技术中MQ服务方(Broker)异常导致消息丢失从而使得本地事务和远程事务不一致,且MQ服务方(Broker)临时不可用时本地已提交事务需全部回滚从而导致系统可用性不足的缺陷,提供一个可确保端到端事务一致性的、且支持在MQ服务方不可用时自动保证端到端事务成功而非直接回滚的事务一致性的实现方法及系统。
本发明实施例提供一种事务一致性的实现方法,包括:
根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;
根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;
其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
本发明实施例提供一种事务一致性的实现系统,包括:
目标消息发送模块,用于根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;
目标消息删除模块,用于根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;
其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
本发明实施例提供一种事务一致性的实现设备,包括:包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行一种事务一致性的实现方法。
本发明实施例提供一种非暂态计算机可读存储介质,包括:所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行一种事务一致性的实现方法。
本发明实施例提供的一种事务一致性的实现方法及系统,通过未完结消息列表来记录被一致性控制器默认为本地事务已被执行但未被消费者消费的消息,并对表中的每一条消息进行检测,当检测到该消息对应的本地事务已被生产者执行时,才将该消息进行重发,以使得消费者接收该消息,并对该消息进行检测,当检测到该消息对应的远程事务未被消费者执行时,对该消息进行消费。本发明实施例提供的方法及系统,可以保证若本地事务已被执行,则远程事务一定也会被执行,保证了本地事务和远程事务的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为消息中间件的逻辑架构图;
图2为传统单体应用下单一的本地事务在基于消息中间件的分布式解耦方式下的事务分布图;
图3为现有技术中通过事务消息解决分布式服务架构下的事务一致性问题的流程图;
图4为本发明一种事务一致性的实现方法实施例流程图;
图5为本发明一种事务一致性的实现系统的结构图;
图6为本发明一种事务一致性的实现设备实施例的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图4为本发明一种事务一致性的实现方法实施例流程图,该方法的执行主体为一致性控制器,如图4所示,该方法包括:
一致性控制器根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费。一致性控制器根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除。
其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
优选地,第一状态为已被执行的状态,第二状态为未被执行的状态。本地事务的状态为第一状态指本地事务已被生产者执行,远程事务的状态为第二状态指远程事务未被消费者执行。需要说明的是,若远程事务的状态为第二状态,则说明消息未被消费者消费。
具体地,未完结消息列表用于存储特定状态的消息,特定状态的消息是指被一致性控制器默认为未完结状态的消息,也即本地事务已被执行但未被消费者消费的消息,换言之,特定状态的消息对应的本地事务已被执行但该消息未被消费者消费。在本发明实施例中,也可将特定状态称为新建状态。
需要说明的是,由于在建表的过程中存在一些异常情况,未完结消息列表中可能存储有并不该被存储的消息,例如,本地事务其实未被执行但被一致性控制器认为已被执行的消息,又例如,远程事务其实已被执行但被一致性控制器认为未被执行的消息。因此,在将表中的消息发送给消费者之前,需要对消息进行检测,以防止如下情况出现:生产者未执行本地事务的情况下消费者接收消息并执行远程事务,或者,消费者已经执行过远程事务但又收到消息并进行消费,使得远程事务又被执行一次。
具体地,对于表中的任一消息,需要检测该消息对应的本地事务是否已被生产者执行,若已被执行,则将该消息发送给消费者。消费者接收到该消息后,会检测该消息对应的远程事务是否已被执行,只有当该远程事务未被执行时,消费者才会对该消息进行消费。若消费者消费成功,则会返回消费成功的响应给一致性控制器,使得一致性控制器将该消息从未完结消息列表中删除。
此时,由于消费者对该消息进行了消费,因此远程事务得以执行,又由于本地事务也已被执行,因此,本地事务和远程事务均被执行,实现了本地事务和远程事务的一致性。
本发明实施例提供的方法,通过未完结消息列表来记录被一致性控制器默认为本地事务已被执行但未被消费者消费的消息,并对表中的每一条消息进行检测,当检测到该消息对应的本地事务已被生产者执行时,才将该消息进行重发,以使得消费者接收该消息,并对该消息进行检测,当检测到该消息对应的远程事务未被消费者执行时,对该消息进行消费。本发明实施例提供的方法,可以保证若本地事务已被执行,则远程事务一定也会被执行,保证了本地事务和远程事务的一致性。
基于上述实施例,本发明实施例提供的方法还包括:
一致性控制器根据所述消费者返回的所述远程事务的状态为第一状态的响应,将所述目标消息从所述未完结消息列表中删除。
具体地,若一致性未接收到消费者返回的消费成功的响应,但接收到的是远程事务的状态为第一状态的响应,则说明该消息对应的远程事务其实已被执行,因此,消费者无需再次对该消息进行消费,以免发送同一远程事务多次被执行的情况出现。并且,将该消息从未完结消息列表中删除,保证了消费者不会对相同远程业务的消息进行重复消费。
基于上述实施例,本发明实施例对上述实施例中的根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费,进行进一步说明:
一致性控制器读取所述未完结消息列表,将所述未完结消息列表中的任一消息作为所述目标消息。一致性控制器获取所述目标消息对应的本地事务的状态。一致性控制器若获知所述本地事务的状态为第一状态,则将所述目标消息发送给所述消费者,以使得所述消费者对所述目标消息对应的远程事务的状态进行检测,并当检测结果为第二状态时,对所述目标消息进行消费。
需要说明的是,一致性控制器若获知所述本地事务的状态为第二状态,则将所述目标消息从所述未完结消息列表中删除。
具体地,只有当表中的消息对应的本地事务已被生产者执行,才将该消息发送给消费者。若消息对应的本地事务未被生产者执行,则直接将该消息进行删除。
本发明实施例提供的方法,在将消息发送给消费者之前,对该消息对应的本地事务是否已被执行进行检测,只有当已被执行时才将该消息发送给消费者,保证了在本地事务未被执行时,不会使得消费者执行远程事务,保证
了本地事务和远程事务的一致性。
基于上述实施例,本发明实施例还包括:
若在预设时间段内,一致性控制器未接收到所述消费者返回的消费成功的响应和所述远程事务为第一状态的响应中的任一种响应,则保留所述目标消息,以使得下一次读取所述未完结消息列表时,将所述目标消息发送给所述消费者。
具体地,对于表中的任一消息,若将该消息发送至消费者后,在预设时间段内既未收到消费者返回的消费成功的响应,也未收到消费者返回的远程事务为第一状态的响应,则保留该消息,以使得下一次读取未完结消息列表时,将该消息发送给所述消费者。需要说明的是,一致性控制器可定期或随时读取未完结消息列表,以实现消息的重发。
本发明实施例提供的方法,通过引入自动重试流程,定期或随时读取未完结消息列表以对表中的消息进行判定以重发,可以保证若本地事务已被执行,则远程事务一定也会被执行,保证了本地事务和远程事务的一致性。
基于上述实施例,本发明实施例对未完结消息列表的更新过程进行说明,即,所述根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,之前还包括:
一致性控制器接收生产者在执行所述本地事务之前发送的目标消息。
若在预设时间段内,一致性控制器未接收到所述生产者返回的所述目标消息对应的本地事务为第二状态的响应、所述消费者返回的消费成功的响应和所述消费者返回的远程事务的状态为第一状态的响应中的任一种响应,则将所述目标消息存入所述未完结消息列表中。
具体地,生产者在执行本地事务之前,会将执行本地事务之后发给消费者的消息先发送至一致性控制器。若在预设时间段内,一致性控制器既未接收到生产者返回的该消息对应的本地事务未被执行的响应,也未接收到消费者返回的消费成功的响应,也未接收到消费者返回的远程事务的状态为已被执行的响应,则将该消息存入所述未完结消息列表中。以使得一致性控制器在后续读表过程中,对该消息进行检测以重发。
本发明实施例提供一种事务一致性的实现系统,该系统包括:
目标消息发送模块,用于根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费。目标消息删除模块,用于根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除。
其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
需要说明的是,本发明实施例提供的系统,用于执行如图4所示的一种事务一致性的实现方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的系统,通过未完结消息列表来记录被一致性控制器默认为本地事务已被执行但未被消费者消费的消息,并对表中的每一条消息进行检测,当检测到该消息对应的本地事务已被生产者执行时,才将该消息进行重发,以使得消费者接收该消息,并对该消息进行检测,当检测到该消息对应的远程事务未被消费者执行时,对该消息进行消费。本发明实施例提供的方法,可以保证若本地事务已被执行,则远程事务一定也会被执行,保证了本地事务和远程事务的一致性。
基于上述实施例,本发明实施例作为一个优选实施例,结合附图对本发明提供的方法及系统进行进一步说明:
图5为本发明一种事务一致性的实现系统的结构图,如图5所示,本发明实施例对传统的生产者、服务方、消费者三段式架构进行扩展,新增引入一个通用的一致性控制器,并定义一致性控制器和生产者、服务方、消费者的交互方式,来解决分布式服务架构下端到端的事务一致性问题。以下先分别对一致性控制器、服务方、生产者和消费者进行介绍:
一致性控制器:负责消息状态的记录及维护,并负责对未完结状态的消息自动发起补偿重试,以确保端到端事务(本地事务和远程事务)的最终一致性。
服务方:即MQ服务方,负责接收生产者发送的消息并传递给消费者。在本发明实施例中,服务方可选用ActiveMQ、RabbitMQ、Kafka、RocketMQ等任一种主流消息中间件产品,本发明实施例对此不作限定。
生产者:即MQ生产者,负责在本地事务执行前向一致性控制器登记消息,并在本地事务执行后发送消息给服务方。生产者需向一致性控制器提供本地事务查询接口,支持一致性控制器在重发消息前确认本地事务已执行。
消费者:即MQ消费者,负责消费消息并执行事务,消息消费后通知一致性控制器更新消息状态。消费者已实现幂等性,确保不会对相同业务流水的消息进行重复消费。
一致性控制器主要由以下三部分构成:
消息状态更新代理:消息状态更新代理对外提供消息状态变更接口,负责对新建、撤销及消费完成的消息进行状态登记及更新。消息状态变更接口需要调用方传输业务流水及消息报文。
消息状态存储库:消息状态存储库负责存储消息内容及状态。主要字段有业务流水、消息报文、消息处理状态、消息创建时间、重试次数等。消息处理状态有新建、撤销、消费完成等。
消息重试进程:消息重试进程根据重试策略定期读取超时消息列表进行重发操作,以确保事务的最终一致性。消息重试进程在重发消息前须向消息生产者查询本地事务状态,只有在本地事务状态为已执行时才进行重发。重试策略一般可设置为按重试次数增大重试间隔时间,如对发起重试的消息须满足(当前系统时间-消息创建时间)>(重试最小间隔)*2(重试次数)。
下面结合图5,说明从消息发送到消息最终消费完成的具体流程及消息异常时自动重试以保证最终一致性的具体流程。
从消息发送到消息最终消费完成的具体流程:
步骤1.1:消息生产者在本地事务提交前向消息状态更新代理登记待发送消息状态,如登记失败则终止流程;
步骤1.2:消息状态更新代理向消息状态存储库写入新消息信息;
步骤1.3:消息生产者执行本地事务,如执行失败则通知消息状态更新代理更新该消息状态为撤销并终止流程(本地事务执行成功后,一致性控制器将确保消息被最终成功消费);
步骤1.4:生产者发送消息给MQ服务方;
步骤1.5:MQ服务方传递消息给消费者;
步骤1.6:消费者执行事务;
步骤1.7:消费者调用消息状态更新代理标注消息已消费完成;
步骤1.8:消息状态更新代理向消息状态存储库更新消息完结状态(消息相关事务全部终结);
以上步骤1.4、1.5、1.6任一步异常会导致本地事务执行成功后消费者侧事务未正常执行,而1.7、1.8异常会导致事务执行一致后消息状态存储库的消息状态仍为新建(未消费),因此引入自动重试流程对以上问题进行解决,具体说明如下。
自动重试以保证最终一致性的具体流程:
步骤2.1:消息重试进程定期读取消息状态存储库中的未完结消息列表(状态为“新建”),其中可能存在本地事务执行失败后但消息状态更新失败(以下标注为A类消息数据)、及消费者事务执行成功后但消息状态更新失败(以下标注为B类消息数据)等两种情况导致的脏数据,以下步骤将对这两种脏数据进行消除;
步骤2.2:消息重试进程向发送者查询未完结消息对应的本地事务状态(消除A类脏数据),如本地事务状态为未执行则更新消息状态为“撤销”,并终止重试流程;
步骤2.3:消息重试进程向MQ服务方重新发送未完结消息;
步骤2.4:MQ服务方传递消息给消费者;
步骤2.5:消费者进行消息消费;(通过该步骤,对于各种异常造成的未消费消息进行消费;而对于步骤2.1中提到的B类脏数据导致的重发消息,因消费者已实现幂等性,因此可避免重复消费);
步骤2.6:消费者调用消息状态更新代理标注消息已消费完成。
综上,本发明实施例提供的方法及系统具有的优点如下:
现有技术仅支持从生产者到MQ服务方的事务一致性,无法支持从生产者到消费者的事务一致,如MQ服务方的消息丢失、消费者消费失败进入死信等场景在现有技术下仍会导致事务最终不一致。本发明实施例提供的方法及系统弥补了以上不足,通过引入事务一致性控制模块并定义其和生产者、MQ、消费者的交互方式来实现端到端的事务一致性。
现有技术主要依赖事务消息机制来实现事务一致性,而一致性控制器可以和特定消息中间件产品绑定。本发明实施例提供的方法及系统,构建了一个通用的事务一致性控制器,可以和各种主流消息中间件产品搭配使用。
现有技术在MQ服务方发生异常时,只能直接回滚本地业务事务,并返回业务处理失败,而本发明实施例可以在MQ服务方发生异常时无需回滚本地事务。
图6为本发明一种事务一致性的实现设备实施例的结构框图,如图6所示,所述设备包括:处理器(processor)601、存储器(memory)602和总线603;其中,所述处理器601和所述存储器602通过所述总线603完成相互间的通信;所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种事务一致性的实现方法,其特征在于,包括:
根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;
根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;
其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据所述消费者返回的所述远程事务的状态为第一状态的响应,将所述目标消息从所述未完结消息列表中删除。
3.根据权利要求2所述的方法,其特征在于,所述根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费,进一步包括:
读取所述未完结消息列表,将所述未完结消息列表中的任一消息作为所述目标消息;
获取所述目标消息对应的本地事务的状态;
若获知所述本地事务的状态为第一状态,则将所述目标消息发送给所述消费者,以使得所述消费者对所述目标消息对应的远程事务的状态进行检测,并当检测结果为第二状态时,对所述目标消息进行消费。
4.根据权利要求3所述的方法,其特征在于,还包括:
若获知所述本地事务的状态为第二状态,则将所述目标消息从所述未完结消息列表中删除。
5.根据权利要求3所述的方法,其特征在于,还包括:
若在预设时间段内,未接收到所述消费者返回的消费成功的响应和所述远程事务为第一状态的响应中的任一种响应,则保留所述目标消息,以使得下一次读取所述未完结消息列表时,将所述目标消息发送给所述消费者。
6.根据权利要求1所述的方法,其特征在于,所述根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,之前还包括:
接收生产者在执行所述本地事务之前发送的目标消息;
若在预设时间段内,未接收到所述生产者返回的所述目标消息对应的本地事务为第二状态的响应、所述消费者返回的消费成功的响应和所述消费者返回的远程事务的状态为第一状态的响应中的任一种响应,则将所述目标消息存入所述未完结消息列表中。
7.根据权利要求1所述的方法,其特征在于,所述第一状态为已被执行的状态,所述第二状态为未被执行的状态。
8.一种事务一致性的实现系统,其特征在于,包括:
目标消息发送模块,用于根据未完结消息列表中的目标消息对应的本地事务的第一状态,将所述目标消息发送给消费者,以使得所述消费者根据所述目标消息对应的远程事务的第二状态,对所述目标消息进行消费;
目标消息删除模块,用于根据所述消费者返回的消费成功的响应,将所述目标消息从所述未完结消息列表中删除;
其中,所述未完结消息列表用于存储本地事务的状态为第一状态且远程事务的状态为第二状态的消息。
9.一种事务一致性的实现设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810501991.XA CN110532066A (zh) | 2018-05-23 | 2018-05-23 | 一种事务一致性的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810501991.XA CN110532066A (zh) | 2018-05-23 | 2018-05-23 | 一种事务一致性的实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110532066A true CN110532066A (zh) | 2019-12-03 |
Family
ID=68656530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810501991.XA Pending CN110532066A (zh) | 2018-05-23 | 2018-05-23 | 一种事务一致性的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532066A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111427711A (zh) * | 2020-04-01 | 2020-07-17 | 山东汇贸电子口岸有限公司 | 一种基于RabbitMQ的消息推送方法 |
CN112631808A (zh) * | 2020-12-29 | 2021-04-09 | 上海众源网络有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN113342481A (zh) * | 2021-07-07 | 2021-09-03 | 中国工商银行股份有限公司 | 一种事务状态的确认方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120023369A1 (en) * | 2010-07-21 | 2012-01-26 | International Business Machines Corporation | Batching transactions to apply to a database |
CN105592117A (zh) * | 2014-10-23 | 2016-05-18 | 阿里巴巴集团控股有限公司 | 一种事务消息的处理方法和装置 |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN105897549A (zh) * | 2015-12-14 | 2016-08-24 | 乐视云计算有限公司 | 消息发送、接收方法和装置 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及系统 |
CN107133302A (zh) * | 2017-04-28 | 2017-09-05 | 努比亚技术有限公司 | 实现数据一致性的方法、系统、终端及计算机可读存储介质 |
CN107277022A (zh) * | 2017-06-27 | 2017-10-20 | 中国联合网络通信集团有限公司 | 进程标记方法及装置 |
-
2018
- 2018-05-23 CN CN201810501991.XA patent/CN110532066A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120023369A1 (en) * | 2010-07-21 | 2012-01-26 | International Business Machines Corporation | Batching transactions to apply to a database |
CN105592117A (zh) * | 2014-10-23 | 2016-05-18 | 阿里巴巴集团控股有限公司 | 一种事务消息的处理方法和装置 |
CN105824842A (zh) * | 2015-01-07 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 分布式事务处理方法及其系统 |
CN105897549A (zh) * | 2015-12-14 | 2016-08-24 | 乐视云计算有限公司 | 消息发送、接收方法和装置 |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及系统 |
CN107133302A (zh) * | 2017-04-28 | 2017-09-05 | 努比亚技术有限公司 | 实现数据一致性的方法、系统、终端及计算机可读存储介质 |
CN107277022A (zh) * | 2017-06-27 | 2017-10-20 | 中国联合网络通信集团有限公司 | 进程标记方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941502A (zh) * | 2019-12-16 | 2020-03-31 | 广州市百果园信息技术有限公司 | 消息处理方法、装置、存储介质及设备 |
CN111427711A (zh) * | 2020-04-01 | 2020-07-17 | 山东汇贸电子口岸有限公司 | 一种基于RabbitMQ的消息推送方法 |
CN112631808A (zh) * | 2020-12-29 | 2021-04-09 | 上海众源网络有限公司 | 数据同步方法、装置、电子设备和存储介质 |
CN113342481A (zh) * | 2021-07-07 | 2021-09-03 | 中国工商银行股份有限公司 | 一种事务状态的确认方法及装置 |
CN113342481B (zh) * | 2021-07-07 | 2024-03-26 | 中国工商银行股份有限公司 | 一种事务状态的确认方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532066A (zh) | 一种事务一致性的实现方法及系统 | |
AU2014268241C1 (en) | Systems and methods for event driven object management and distribution among multiple client applications | |
CN108989429A (zh) | 实时更新页面数据的方法、装置、电子设备 | |
CN105468302B (zh) | 一种处理数据的方法、装置及系统 | |
CN109213770B (zh) | 数据处理方法、系统、计算机设备和存储介质 | |
CN101917394B (zh) | 在手机设备上进行数据共享的中间件系统及工作方法 | |
CN112597249B (zh) | 一种业务数据的同步分发存储方法及系统 | |
CN106161145A (zh) | 一种服务器系统运行状态信息的监控方法和系统 | |
CN105553682B (zh) | 事件通知方法及用于事件通知的系统 | |
CN110351366A (zh) | 一种互联网应用的服务调度方法、系统及计算机可读存储介质 | |
CN104866528B (zh) | 多平台数据采集方法及系统 | |
CN109391482A (zh) | 网络功能的升级方法及升级管理实体 | |
CN109151056B (zh) | 基于Canal的消息推送方法和系统 | |
CN108055199A (zh) | 支持离线消息保存的移动推送方法及系统 | |
CN102957594A (zh) | 基于消息队列的消息处理方法、相关设备及系统 | |
CN109286671A (zh) | 物联网环境下订阅通知处理方法、装置、存储介质及设备 | |
US10425778B2 (en) | Distributed transactions on mobile devices via a messaging service provided by a mobile network operator | |
CN106599323B (zh) | 在分布式文件系统中实现分布式管道的方法和装置 | |
CN110191182B (zh) | 分布式文件批处理方法、装置、设备与可读存储介质 | |
CN107135108A (zh) | 网络连接列表的更新方法及系统 | |
CN112822091A (zh) | 一种消息处理方法和装置 | |
US7197533B2 (en) | Non-persistent service support in transactional application support environments | |
CN103297477A (zh) | 一种数据采集上报系统及数据处理方法和代理服务器 | |
CN113254274A (zh) | 消息处理方法、装置、存储介质以及服务器 | |
CN101001213B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191203 |