CN109783205A - 一种基于事件补偿机制的数据最终一致性办法 - Google Patents

一种基于事件补偿机制的数据最终一致性办法 Download PDF

Info

Publication number
CN109783205A
CN109783205A CN201910004623.9A CN201910004623A CN109783205A CN 109783205 A CN109783205 A CN 109783205A CN 201910004623 A CN201910004623 A CN 201910004623A CN 109783205 A CN109783205 A CN 109783205A
Authority
CN
China
Prior art keywords
event
business
data
compensation mechanism
publishing side
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
Application number
CN201910004623.9A
Other languages
English (en)
Inventor
李兆锐
孙立新
郝志北
齐伟峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Inspur Genersoft Information Technology Co Ltd
Original Assignee
Shandong Inspur Genersoft Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Inspur Genersoft Information Technology Co Ltd filed Critical Shandong Inspur Genersoft Information Technology Co Ltd
Priority to CN201910004623.9A priority Critical patent/CN109783205A/zh
Publication of CN109783205A publication Critical patent/CN109783205A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明特别涉及一种基于事件补偿机制的数据最终一致性办法。该基于事件补偿机制的数据最终一致性办法,在事件定义,动作定义和发布订阅关系过程中自动创建补偿通道;在事件发布时,发布事件和业务在同一事务内,保证事件发布端的事务一致性;在运行阶段,将调用链条缓存起来,根据执行结果自动发送事件,包括消费端的响应事件,事件发布端的业务取消事件,事件发布端的确认和取消动作。该基于事件补偿机制的数据最终一致性办法,不仅降低了配置的技术难度,减少了最终用户的配置的工作量,还保证了发送事件与业务数据的事务一致性,保证了事件数据不会丢失;同时,在运行阶段实现了自动化,灵活高效,自动化程度高,适宜推广应用。

Description

一种基于事件补偿机制的数据最终一致性办法
技术领域
本发明涉及分布式***微服务架构技术领域,特别涉及一种基于事件补偿机制的数据最终一致性办法。
背景技术
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。***中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
微服务有一个特点是可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。通过这一点可以将服务公开与微服务架构(在现有***中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。
在分布式***微服务架构下,服务之间基于事件交互,通过事件补偿机制实现数据最终一致性。但是在分布式***下,每个微服务可能对应不同的数据库,有些业务需要跨域多个微服务,因此给数据一致性带来挑战。
实现数据一致性有多种方案,根据CAP理论不可能同时满足CAP三个基本需求,如果采用数据强一致性方案,则必须放弃可用性和分区容忍性,因此传统的两阶段提交(强数据一致性方案)不适用于微服务架构,需要牺牲强一致性,采用数据最终一致性的方案,通过业务补偿的模式解决数据一致性问题。
业务补偿方式按照调用方式不同可分为:同步调用和基于事件的异步调用。同步调用存在紧耦合、阻塞、易产生性能瓶颈缺点,基于事件的异步调用最大优势是松耦合、非阻塞、高性能,因此基于事件的异步调用方式被广泛采用。
针对上述情况,本发明提出了一种基于事件补偿机制的数据最终一致性办法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于事件补偿机制的数据最终一致性办法。
本发明是通过如下技术方案实现的:
一种基于事件补偿机制的数据最终一致性办法,其特征在于,包括以下步骤:
(A)在事件定义,动作定义和发布订阅关系过程中自动创建补偿通道;
(B)在事件发布时,发布事件和业务在同一事务内,保证事件发布端的事务一致性;
(C)在运行阶段,将调用链条缓存起来,根据执行结果自动发送事件,包括消费端的响应事件,事件发布端的业务取消事件,事件发布端的确认和取消动作。
所述步骤(A)中,业务事件和业务取消事件同时成对出现,当创建业务事件时,自动创建对应的业务取消事件;业务动作和业务取消动作同时成对出现,当创建业务动作时,自动创建对应的业务取消动作。
当业务动作订阅业务事件时,对应的业务取消动作自动订阅在业务取消事件,同时创建事件响应通道,供订阅端将执行结果反馈给事件发布端。
所述步骤(B),发布事件时,先检查事件发布端是否存在事务上下文,如果业务事件处于事务上下文中,则在事务提交时才真正发送事件。
所述步骤(B)中,为了保证事件发布端的事务一致性,首先将事件数据持久化到数据库,事件发送时如果处于事务上下文中,事件不会立即发送,而是监听事务完成事件,当事务完成时,事件发送代理从内存中将事件数据取出,然后发送;事件发送时如果未处于事务上下文中,则立即发送。
所述步骤(C)中,当消费端执行完毕后,框架将执行结果包装成消息,发布对应的响应事件。
所述步骤(C)中,事件发布端在收到所有订阅者的反馈结果后,如果所有业务都执行成功,则将业务全部置为确认状态;如果有一个业务执行失败,则先将自身业务数据回滚,然后发布业务取消事件;消费者端接收到业务取消事件,回滚已提交的数据,最终实现一致性。
所述步骤(C)中,如果存在业务动作执行期间发送了子事件,则需等待子事件反馈结果后在将执行结果反馈给事件发布端。
本发明的有益效果是:该基于事件补偿机制的数据最终一致性办法,不仅降低了配置的技术难度,减少了最终用户的配置的工作量,还保证了发送事件与业务数据的事务一致性,保证了事件数据不会丢失;同时,在运行阶段实现了自动响应、自动确认或取消、自动发送取消事件,无需人为设置,灵活高效,自动化程度高,适宜推广应用。
附图说明
附图1为本发明基于事件补偿机制的数据最终一致性办法示意图。
附图2为本发明消费端未发生异常处理办法示意图。
附图3为本发明消费端发生异常处理办法示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
该基于事件补偿机制的数据最终一致性办法,包括以下步骤:
(A)在事件定义,动作定义和发布订阅关系过程中自动创建补偿通道;
(B)在事件发布时,发布事件和业务在同一事务内,保证事件发布端的事务一致性;
(C)在运行阶段,将调用链条缓存起来,根据执行结果自动发送事件,包括消费端的响应事件,事件发布端的业务取消事件,事件发布端的确认和取消动作。
所述步骤(A)中,业务事件和业务取消事件同时成对出现,当创建业务事件时,自动创建对应的业务取消事件;业务动作和业务取消动作同时成对出现,当创建业务动作时,自动创建对应的业务取消动作。
当业务动作订阅业务事件时,对应的业务取消动作自动订阅在业务取消事件,同时创建事件响应通道,供订阅端将执行结果反馈给事件发布端。
所述步骤(B),发布事件时,先检查事件发布端是否存在事务上下文,如果业务事件处于事务上下文中,则在事务提交时才真正发送事件。
所述步骤(B)中,为了保证事件发布端的事务一致性,首先将事件数据持久化到数据库,事件发送时如果处于事务上下文中,事件不会立即发送,而是监听事务完成事件,当事务完成时,事件发送代理从内存中将事件数据取出,然后发送;事件发送时如果未处于事务上下文中,则立即发送。
所述步骤(C)中,当消费端执行完毕后,框架将执行结果包装成消息,发布对应的响应事件。
所述步骤(C)中,事件发布端在收到所有订阅者的反馈结果后,如果所有业务都执行成功,则将业务全部置为确认状态;如果有一个业务执行失败,则先将自身业务数据回滚,然后发布业务取消事件;消费者端接收到业务取消事件,回滚已提交的数据,最终实现一致性。
所述步骤(C)中,如果存在业务动作执行期间发送了子事件,则需等待子事件反馈结果后在将执行结果反馈给事件发布端。
实施例
示例环境:某订单、***、库存微服务,有一创建订单需求,在创建订单同时,要扣除商品的库存,并将***开出,三者的数据需要保证最终一致。
应用方式如下:
(1)首先创建订单,将订单状态置为创建中,然后发送订单创建事件。
(2)库存和***订阅了订单创建事件
(3)库存服务在收到事件后,扣除库存,然后发送响应事件。
(4)***服务在收到事件后,创建***,然后发送响应事件。
(5)订单订阅了两者的响应事件。
(6)收到两者响应事件后,根据事件消息内容得知两者都执行成功,将订单状态置为订单已创建。
该基于事件补偿机制的数据最终一致性办法,通过在设计阶段自动建立发布订阅关系、事件响应关系、事件取消关系,降低了配置的技术难度,减少了最终用户的配置的工作量;在事件发布端,通过事件日志和业务数据在同一个事务内,保证了发送事件与业务数据的事务一致性,同时保证了事件数据不会丢失;在运行阶段,通过各种发布订阅关系实现了自动响应、自动确认或取消、自动发送取消事件,无需人为设置。
以上对本发明实例中的一种基于事件补偿机制的数据最终一致性办法进行了详细的介绍。本部分采用具体实例对发明的原理及实施方式进行了阐述,以上实例仅用于帮助理解本发明的核心思想,在不脱离本发明原理的情况下,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

Claims (8)

1.一种基于事件补偿机制的数据最终一致性办法,其特征在于,包括以下步骤:
(A)在事件定义,动作定义和发布订阅关系过程中自动创建补偿通道;
(B)在事件发布时,发布事件和业务在同一事务内,保证事件发布端的事务一致性;
(C)在运行阶段,将调用链条缓存起来,根据执行结果自动发送事件,包括消费端的响应事件,事件发布端的业务取消事件,事件发布端的确认和取消动作。
2.根据权利要求1所述的基于事件补偿机制的数据最终一致性办法,其特征在于:所述步骤(A)中,业务事件和业务取消事件同时成对出现,当创建业务事件时,自动创建对应的业务取消事件;业务动作和业务取消动作同时成对出现,当创建业务动作时,自动创建对应的业务取消动作。
3.根据权利要求2所述的基于事件补偿机制的数据最终一致性办法,其特征在于:当业务动作订阅业务事件时,对应的业务取消动作自动订阅在业务取消事件,同时创建事件响应通道,供订阅端将执行结果反馈给事件发布端。
4.根据权利要求1所述的基于事件补偿机制的数据最终一致性办法,其特征在于:所述步骤(B),发布事件时,先检查事件发布端是否存在事务上下文,如果业务事件处于事务上下文中,则在事务提交时才真正发送事件。
5.根据权利要求4所述的基于事件补偿机制的数据最终一致性办法,其特征在于:所述步骤(B)中,为了保证事件发布端的事务一致性,首先将事件数据持久化到数据库,事件发送时如果处于事务上下文中,事件不会立即发送,而是监听事务完成事件,当事务完成时,事件发送代理从内存中将事件数据取出,然后发送;事件发送时如果未处于事务上下文中,则立即发送。
6.根据权利要求1所述的基于事件补偿机制的数据最终一致性办法,其特征在于:所述步骤(C)中,当消费端执行完毕后,框架将执行结果包装成消息,发布对应的响应事件。
7.根据权利要求6所述的基于事件补偿机制的数据最终一致性办法,其特征在于:所述步骤(C)中,事件发布端在收到所有订阅者的反馈结果后,如果所有业务都执行成功,则将业务全部置为确认状态;如果有一个业务执行失败,则先将自身业务数据回滚,然后发布业务取消事件;消费者端接收到业务取消事件,回滚已提交的数据,最终实现一致性。
8.根据权利要求7所述的基于事件补偿机制的数据最终一致性办法,其特征在于:所述步骤(C)中,如果存在业务动作执行期间发送了子事件,则需等待子事件反馈结果后在将执行结果反馈给事件发布端。
CN201910004623.9A 2019-01-03 2019-01-03 一种基于事件补偿机制的数据最终一致性办法 Pending CN109783205A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910004623.9A CN109783205A (zh) 2019-01-03 2019-01-03 一种基于事件补偿机制的数据最终一致性办法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910004623.9A CN109783205A (zh) 2019-01-03 2019-01-03 一种基于事件补偿机制的数据最终一致性办法

Publications (1)

Publication Number Publication Date
CN109783205A true CN109783205A (zh) 2019-05-21

Family

ID=66499851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910004623.9A Pending CN109783205A (zh) 2019-01-03 2019-01-03 一种基于事件补偿机制的数据最终一致性办法

Country Status (1)

Country Link
CN (1) CN109783205A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111191180A (zh) * 2020-01-15 2020-05-22 百望股份有限公司 ***领域的微服务***的构建方法、装置及存储介质
CN111414266A (zh) * 2020-03-23 2020-07-14 山东浪潮通软信息科技有限公司 一种分布式事务的同步异步通信方法和装置
CN112416955A (zh) * 2020-11-18 2021-02-26 四川长虹电器股份有限公司 基于高并发环境的缓存一致性问题解决方法
CN112835983A (zh) * 2021-02-26 2021-05-25 紫光云技术有限公司 一种保证分布式***最终一致性模式的实现方法
CN113900840A (zh) * 2021-12-08 2022-01-07 浙江新华移动传媒股份有限公司 一种分布式事务最终一致性处理方法及装置
CN114529301A (zh) * 2022-02-21 2022-05-24 山东浪潮通软信息科技有限公司 一种凭证过账方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119146A1 (en) * 2002-09-12 2009-05-07 Mauro Antonio Giacomello Method and system for managing transactions
CN106777026A (zh) * 2016-12-08 2017-05-31 用友网络科技股份有限公司 支持微服务架构事务最终一致性的方法、装置及***
US20180101564A1 (en) * 2014-10-14 2018-04-12 Red Hat, Inc. Transaction compensation for single phase resources
CN108459919A (zh) * 2018-03-29 2018-08-28 中信百信银行股份有限公司 一种分布式事务处理方法及装置
CN109086319A (zh) * 2018-07-02 2018-12-25 无锡天脉聚源传媒科技有限公司 针对交易数据的高并发数据处理方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090119146A1 (en) * 2002-09-12 2009-05-07 Mauro Antonio Giacomello Method and system for managing transactions
US20180101564A1 (en) * 2014-10-14 2018-04-12 Red Hat, Inc. Transaction compensation for single phase resources
CN106777026A (zh) * 2016-12-08 2017-05-31 用友网络科技股份有限公司 支持微服务架构事务最终一致性的方法、装置及***
CN108459919A (zh) * 2018-03-29 2018-08-28 中信百信银行股份有限公司 一种分布式事务处理方法及装置
CN109086319A (zh) * 2018-07-02 2018-12-25 无锡天脉聚源传媒科技有限公司 针对交易数据的高并发数据处理方法及***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
田向阳: "分布式事务一致性,看这一篇就够了", 《HTTPS://WWW/SOHU.COM/A/228496709_609518》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111191180A (zh) * 2020-01-15 2020-05-22 百望股份有限公司 ***领域的微服务***的构建方法、装置及存储介质
CN111414266A (zh) * 2020-03-23 2020-07-14 山东浪潮通软信息科技有限公司 一种分布式事务的同步异步通信方法和装置
CN111414266B (zh) * 2020-03-23 2024-04-05 浪潮通用软件有限公司 一种分布式事务的同步异步通信方法和装置
CN112416955A (zh) * 2020-11-18 2021-02-26 四川长虹电器股份有限公司 基于高并发环境的缓存一致性问题解决方法
CN112416955B (zh) * 2020-11-18 2022-02-22 四川长虹电器股份有限公司 基于高并发环境的缓存一致性问题解决方法
CN112835983A (zh) * 2021-02-26 2021-05-25 紫光云技术有限公司 一种保证分布式***最终一致性模式的实现方法
CN113900840A (zh) * 2021-12-08 2022-01-07 浙江新华移动传媒股份有限公司 一种分布式事务最终一致性处理方法及装置
CN114529301A (zh) * 2022-02-21 2022-05-24 山东浪潮通软信息科技有限公司 一种凭证过账方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN109783205A (zh) 一种基于事件补偿机制的数据最终一致性办法
US11102292B2 (en) System and method for real-time cloud data synchronization using a database binary log
US9721246B2 (en) Synchronization patterns for mobile applications
CN111367628A (zh) 分布式事务的处理方法、装置及消息生产方、消费方***
US7624112B2 (en) Asynchronously storing transaction information from memory to a persistent storage
CN110955534A (zh) 一种基于中间件的业务流程自动化***及方法
US20170251051A1 (en) Method, Apparatus, and System for Executing Distributed Transaction Resources
CN105262831A (zh) 一种存储***间同步数据的方法、装置及同步***
WO2019047441A1 (zh) 一种通信优化方法及***
CN101917394B (zh) 在手机设备上进行数据共享的中间件***及工作方法
CN104778175A (zh) 一种实现异构数据库数据同步的方法及***
CN111144883A (zh) 一种区块链网络的处理性能分析方法及装置
CN109002462A (zh) 一种实现分布式事物的方法及***
CN107026880A (zh) 数据同步方法和装置
CN109040094A (zh) 一种基于RabbitMQ实现异步RPC的方法及***
CN103139157A (zh) 一种基于socket的网络通信方法、装置及***
CN107729176A (zh) 一种配置文件管理***的容灾方法及容灾***
CN113779094B (zh) 基于批流一体的数据处理方法、装置、计算机设备和介质
CN105828300A (zh) 一种集群***中状态信息订阅的实现方法
CN109961366A (zh) 一种基于分区共识的交易方法及***
CN108965109A (zh) 一种即时通讯控制方法、装置及存储介质
CN110928746B (zh) 可调配的业务处理***、方法、装置及可存储介质
CN105812594A (zh) 一种预测式自动外拨***
CN103782277B (zh) 用于管理便携式计算装置上的平行资源请求的方法及***
CN110647385A (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

Application publication date: 20190521

RJ01 Rejection of invention patent application after publication