CN108038141A - 微服务架构http交互模式下保证数据一致性的方法 - Google Patents
微服务架构http交互模式下保证数据一致性的方法 Download PDFInfo
- Publication number
- CN108038141A CN108038141A CN201711201403.2A CN201711201403A CN108038141A CN 108038141 A CN108038141 A CN 108038141A CN 201711201403 A CN201711201403 A CN 201711201403A CN 108038141 A CN108038141 A CN 108038141A
- Authority
- CN
- China
- Prior art keywords
- business
- business service
- service
- call
- micro services
- 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.)
- Withdrawn
Links
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及微服务开发技术领域,特别是指一种微服务架构HTTP交互模式下保证数据一致性的方法。本发明首先主业务服务分别调用所有从业务服务的预操作,然后在活动管理器中记录所有从业务服务;如果所有从业务服务预操作成功或者某个从业务服务预操作失败,那么继续事务,否则执行事务停止执行;如果所有从业务服务都预操作成功,则协作者调用所有从业务服务的确认操作,如果确认操作失败,那么回滚所有确认操作,并执行从服务业务的取消操作。最后如果有部分从业务服务预操作失败,那么调用所有从业务服务的取消操作,直到取消成功为止。本发明解决了传统二阶段提交协议性能较差、不适用于微服务架构的问题;可实现业务服务上的三个简单语义的操作并进行调用。
Description
技术领域
本发明涉及微服务开发技术领域,特别是指一种微服务架构HTTP交互模式下保证数据一致性的方法。
背景技术
随着微服务架构的推广,越来越多的企业采用微服务架构来构建自己的业务平台。微服务架构为业务开发带来了诸多好处的同时,例如单一职责、独立开发部署、功能复用和***容错等等;也带来一些问题,例如开发门槛较高,运维更复杂,模块之间的依赖关系更复杂,从而导致数据一致性难以保证。目前微服务架构下一般采用二阶段提交协议的方式来保证数据的强一致性,二阶段提交协议是一个分布式事务模型,此模型主要使用二阶段提交来保证分布式事务的完整性。在这个模型里面,有三个角色:
1、AP:Application,应用程序,业务层。
2、RM:Resource Manager,资源管理器,关系型数据库或支持XA接口的组件。
3、TM:Transaction Manager,事务管理器,负责各个RM的提交和回滚。
二段提交协议分为两个阶段:
1、TM通知所有参与事务的各个RM,给每个RM发送prepare消息。RM接收到消息后进入准备阶段后,要么直接返回失败,要么创建并执行本地事务,写本地事务日志(redo和undo日志),但是不提交;
2、TM收到RM准备阶段的失败消息或者获取RM返回消息超时,则直接给RM发送回滚(rollback)消息,否则发送提交(commit)消息。RM根据TM的指令执行提交或者回滚,执行完成后释放所有事务处理过程中使用的锁。
上述方法实现了数据的强一致性,但是存在以下弊端:
1、TM通过XA接口与各个RM之间进行数据交互,从第1阶段开始,业务所涉及的数据就被锁定,并且锁定跨越整个提交流程。在高并发和涉及业务模块较多的情况下对数据库的性能影响较大;
2、微服务架构大多是使用HTTP协议进行组件之间的通信的,HTTP对于XA协议这种语义较为复杂的协议比较难以实现,因此,上述方法在微服务开发领域基本不适用。
因此,需要设计一种适用于微服务架构HTTP交互模式的高性能的保证数据一致性的方法。
发明内容
本发明解决的技术问题在于提出一种微服务架构HTTP交互模式下保证数据一致性的方法。
本发明解决上述技术问题的技术方案是:
所述的方法包括以下步骤:
步骤1:主业务服务调用所有从业务服务的预操作;
步骤2:在活动管理器中记录所有从业务服务;
步骤3:如果所有从业务服务预操作成功或者某个从业务服务预操作失败,那么执行步骤4,否则执行事务停止执行;
步骤4:如果所有从业务服务都预操作成功,则协作者调用所有从业务服务的确认操作,如果确认操作失败,那么回滚所有确认操作,并执行从服务业务的取消操作;
步骤5:如果有部分从业务服务预操作失败,那么调用所有从业务服务的取消操作,如果取消操作失败,那么在从业务服务本地提供自动化的机制来执行取消操作,直到取消成功为止;即从业务服务本地执行可自动重试的程序执行取消操作,比如定时任务等。
所述主业务服务指的是整个业务活动的发起方,包括支付场景下的支付***;
所述从业务服务指的是整个业务活动的操作方;从业务服务必须实现预操作、确认和取消三个接口,供主业务服务调用。
所述活动管理器管理控制整个业务活动,包括记录维护全局事务的事务状态和每个从业务服务的子事务状态,并在业务活动提交时确认所有的确认操作,在业务活动取消时调用所有取消操作。
所述预操作是尝试执行业务,具体包括完成所有业务检查以及预留必须业务资源;
确认是确认执行业务,是真正执行业务操作的地方,确认阶段不做任何业务检查,只使用预操作阶段预留的业务资源;
取消是取消执行业务,具体是指释放预操作阶段预留的业务资源。
本发明的方法能产生如下的有益效果:
1、本发明的方法不需要长时间锁定数据库,甚至都不需要数据库服务随时在线,因此具有性能上的优势。
2、本发明的方法定义的接口语义与HTTP交互模式的操作语义较为接近,因此,比较适于在微服务领域使用。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图;
图2为本发明的其中一种实现方式的序列图。
具体实施方式
见图1所示,本发明的基本步骤如下:
步骤1:主业务服务调用所有从业务服务的预操作;
步骤2:在活动管理器中记录所有从业务服务;
步骤3:如果所有从业务服务预操作成功或者某个从业务服务预操作失败,那么执行步骤4,否则执行事务停止执行;
步骤4:如果所有从业务服务都预操作成功,则协作者调用所有从业务服务的确认操作,如果确认操作失败,那么回滚所有确认操作,并执行从服务业务的取消操作;
步骤5:如果有部分从业务服务预操作失败,那么调用所有从业务服务的取消操作,如果取消操作失败,那么在从业务服务本地提供自动化的机制来执行取消操作,直到取消成功为止;即从业务服务本地执行可自动重试的程序执行取消操作,比如定时任务等。
下面以HTTP的处理流程为例,讲述其中一种实现方式的处理过程。如图2所示,分别在从业务1和从业务2中实现了三种接口try、confirm、cancel分别表示预操作、确认和取消。具体处理流程如下:
1.主业务服务调用从业务服务的try操作,并获取confirm/cancel接口和超时时间。
2.如果从业务都try成功,主业务服务执行本地业务,并将获取的confirm/cancel接口发送给活动管理器,活动管理器会顺序调用从业务1和从业务2的confirm接口并记录请求状态,如果请求成功,则通知主业务服务提交本地事务。如果confirm部分失败,则活动管理器会顺序调用从业务1和从业务2的cancel接口来取消try的操作。
3.如果从业务部分或全部try失败,则主业务直接回滚并结束,而try成功的从业务服务则通过定时任务来处理处于try完成但超时的数据,将这些数据做回滚处理保证主业务服务和从业务服务的数据一致。
Claims (5)
1.一种微服务架构HTTP交互模式下保证数据一致性的方法,其特征在于,所述的方法包括以下步骤:
步骤1:主业务服务调用所有从业务服务的预操作;
步骤2:在活动管理器中记录所有从业务服务;
步骤3:如果所有从业务服务预操作成功或者某个从业务服务预操作失败,那么执行步骤4,否则执行事务停止执行;
步骤4:如果所有从业务服务都预操作成功,则协作者调用所有从业务服务的确认操作,如果确认操作失败,那么回滚所有确认操作,并执行从服务业务的取消操作;
步骤5:如果有部分从业务服务预操作失败,那么调用所有从业务服务的取消操作,如果取消操作失败,那么在从业务服务本地提供自动化的机制来执行取消操作,直到取消成功为止;即从业务服务本地执行可自动重试的程序执行取消操作。
2.根据权利要求1所述的方法,其特征在于,
所述主业务服务指的是整个业务活动的发起方,包括支付场景下的支付***;
所述从业务服务是整个业务活动的操作方;从业务服务必须实现预操作、确认和取消三个接口,供主业务服务调用。
3.根据权利要求1所述的方法,其特征在于,所述活动管理器管理控制整个业务活动,包括记录维护全局事务的事务状态和每个从业务服务的子事务状态,并在业务活动提交时确认所有的确认操作,在业务活动取消时调用所有取消操作。
4.根据权利要求2所述的方法,其特征在于,所述活动管理器管理控制整个业务活动,包括记录维护全局事务的事务状态和每个从业务服务的子事务状态,并在业务活动提交时确认所有的确认操作,在业务活动取消时调用所有取消操作。
5.根据权利要求1至4任一项所述的方法,其特征在于,
所述预操作是尝试执行业务,具体包括完成所有业务检查以及预留必须业务资源;
确认是确认执行业务,是真正执行业务操作的地方,确认阶段不做任何业务检查,只使用预操作阶段预留的业务资源;
取消是取消执行业务,具体是指释放预操作阶段预留的业务资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711201403.2A CN108038141A (zh) | 2017-11-27 | 2017-11-27 | 微服务架构http交互模式下保证数据一致性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711201403.2A CN108038141A (zh) | 2017-11-27 | 2017-11-27 | 微服务架构http交互模式下保证数据一致性的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108038141A true CN108038141A (zh) | 2018-05-15 |
Family
ID=62094053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711201403.2A Withdrawn CN108038141A (zh) | 2017-11-27 | 2017-11-27 | 微服务架构http交互模式下保证数据一致性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108038141A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495452A (zh) * | 2018-10-24 | 2019-03-19 | 苏宁易购集团股份有限公司 | 响应超时处理方法、服务器及客户端响应超时处理*** |
CN109978540A (zh) * | 2019-03-07 | 2019-07-05 | 银清科技(北京)有限公司 | 一种分布式记账方法、设备及*** |
WO2019232962A1 (zh) * | 2018-06-06 | 2019-12-12 | 平安科技(深圳)有限公司 | 数据处理方法、***、计算机设备和存储介质 |
CN112417042A (zh) * | 2020-11-19 | 2021-02-26 | 中国建设银行股份有限公司 | 一种处理业务请求的方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120011100A1 (en) * | 2010-07-06 | 2012-01-12 | Fujitsu Limited | Snapshot acquisition processing technique |
CN106168915A (zh) * | 2016-04-25 | 2016-11-30 | 云南电网有限责任公司昆明供电局 | 分布式***架构数据处理一致性保障方法 |
CN106503132A (zh) * | 2016-10-19 | 2017-03-15 | 广州快塑电子商务有限公司 | 一种分布式事务管理方法及*** |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及*** |
CN106649845A (zh) * | 2016-12-30 | 2017-05-10 | 上海富聪金融信息服务有限公司 | 一种交易信息服务平台及其信息处理方法 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及*** |
-
2017
- 2017-11-27 CN CN201711201403.2A patent/CN108038141A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120011100A1 (en) * | 2010-07-06 | 2012-01-12 | Fujitsu Limited | Snapshot acquisition processing technique |
CN106168915A (zh) * | 2016-04-25 | 2016-11-30 | 云南电网有限责任公司昆明供电局 | 分布式***架构数据处理一致性保障方法 |
CN106502769A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 分布式事务处理方法、装置及*** |
CN106503132A (zh) * | 2016-10-19 | 2017-03-15 | 广州快塑电子商务有限公司 | 一种分布式事务管理方法及*** |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
CN106777026A (zh) * | 2016-12-08 | 2017-05-31 | 用友网络科技股份有限公司 | 支持微服务架构事务最终一致性的方法、装置及*** |
CN106649845A (zh) * | 2016-12-30 | 2017-05-10 | 上海富聪金融信息服务有限公司 | 一种交易信息服务平台及其信息处理方法 |
Non-Patent Citations (2)
Title |
---|
GUY PARDON 等: "Atomic distributed transactions: a RESTful design", 《WWW'14 COMPANION: PROCEEDINGS OF THE 23RD INTERNATIONAL CONFERENCE ON WORLD WIDE WEB》 * |
中国支付清算协会: "《支付大讲堂—中国支付清算协会培训课程精选系列》", 31 December 2015, 中国金融出版社 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019232962A1 (zh) * | 2018-06-06 | 2019-12-12 | 平安科技(深圳)有限公司 | 数据处理方法、***、计算机设备和存储介质 |
CN109495452A (zh) * | 2018-10-24 | 2019-03-19 | 苏宁易购集团股份有限公司 | 响应超时处理方法、服务器及客户端响应超时处理*** |
CN109495452B (zh) * | 2018-10-24 | 2020-08-11 | 苏宁易购集团股份有限公司 | 响应超时处理方法、服务器及客户端响应超时处理*** |
CN109978540A (zh) * | 2019-03-07 | 2019-07-05 | 银清科技(北京)有限公司 | 一种分布式记账方法、设备及*** |
CN109978540B (zh) * | 2019-03-07 | 2021-02-23 | 银清科技有限公司 | 一种分布式记账方法、设备及*** |
CN112417042A (zh) * | 2020-11-19 | 2021-02-26 | 中国建设银行股份有限公司 | 一种处理业务请求的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108038141A (zh) | 微服务架构http交互模式下保证数据一致性的方法 | |
CN103647834B (zh) | 一种用于处理多阶段分布式任务调度的***及方法 | |
Butler et al. | A trace semantics for long-running transactions | |
DE69839145T2 (de) | Kompensierender Betriebsmittelverwalter | |
US6138143A (en) | Method and apparatus for asynchronous transaction processing | |
DE69719269T2 (de) | Absicherung der Unteilbarkeit für eine Ansammlung von transaktionellen Arbeitsschritten in einem Arbeitsflussverwaltungssystem | |
EP1693765B1 (en) | A data processing system and method | |
US7971183B2 (en) | Tool for converting legacy applications to web services | |
CN107861823A (zh) | 一种基于微服务架构的***保障数据最终一致性的方法 | |
CN103902560A (zh) | 一种分布式事务处理方法及*** | |
EP1962186A2 (en) | Composing integrated systems using GUI-based applications and web services | |
CN103425585B (zh) | 一种osgi集成测试方法 | |
US20040268187A1 (en) | Undo infrastructure | |
CN110502319B (zh) | 分布式事务的处理方法、装置、电子设备及存储介质 | |
CN104216912A (zh) | 一种无侵入式的业务表单工作流化的实现方法与装置 | |
Dalal et al. | Empirical study of root cause analysis of software failure | |
CN108197176A (zh) | 基于分布式集群架构的核心银行数据处理方法及其*** | |
US7970737B2 (en) | Recovery administration of global transaction participants | |
CN102317913B (zh) | 一种事务恢复方法和事务恢复装置 | |
US7971184B2 (en) | GUI-based application to web services conversion system | |
CN114925084B (zh) | 分布式事务处理方法、***、设备及可读存储介质 | |
CN106874130A (zh) | 一种微服务架构中分布式事务的处理方法 | |
CN101286212A (zh) | 业务流程执行方法、业务流程引擎及其部署方法 | |
CN104660435A (zh) | 面向智能管道的事务型网管引擎及其网管事务处理方法 | |
CN108292207A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180515 |