[发明专利]一种基于微服务架构的系统保障数据最终一致性的方法在审
| 申请号: | 201711184771.0 | 申请日: | 2017-11-23 |
| 公开(公告)号: | CN107861823A | 公开(公告)日: | 2018-03-30 |
| 发明(设计)人: | 莫展鹏;季统凯 | 申请(专利权)人: | 国云科技股份有限公司 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F17/30 |
| 代理公司: | 北京科亿知识产权代理事务所(普通合伙)11350 | 代理人: | 汤东凤 |
| 地址: | 523808 广东省东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 微服 架构 系统 保障 数据 最终 一致性 方法 | ||
技术领域
本发明涉及微服务开发技术领域,特别是指一种基于微服务架构的系统保证数据最终一致性的方法。
背景技术
随着微服务架构的推广,越来越多的企业采用微服务架构来构建自己的业务平台。微服务架构为业务开发带来了诸多好处的同时,例如单一职责、独立开发部署、功能复用和系统容错等等;也带来一些问题,例如开发门槛较高,运维更复杂,模块之间的依赖关系更复杂;从而导致数据一致性难以保证。目前微服务架构下一般采用二阶段提交协议的方式来保证数据的强一致性,二阶段提交协议是一个分布式事务模型,此模型主要使用二阶段提交来保证分布式事务的完整性。在这个模型里面,有三个角色:
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、二阶段是反可伸缩模式的,业务规模越大,涉及模块越多,局限性越大,系统可伸缩性越差;
3、在技术比较杂的分布式应用中,存储组件有很多不支持XA协议。
因此,需要设计一种适用于微服务架构的高性能的灵活的通用的保证数据一致性的方法。
发明内容
本发明解决的技术问题在于提出一种基于微服务架构的系统保证数据最终一致性的方法;实现高性能、灵活和通用性。
本发明解决上述技术问题的技术方案是:
所述的方法包括以下步骤:
步骤1:上游应用发送待确认消息到可靠消息系统,如果可靠消息系统收到消息,执行步骤2,否则执行步骤6;
步骤2:可靠消息系统保存待确认消息并返回,如果上游应用收到确认消息,执行步骤3,否则,执行步骤6;
步骤3:上游应用执行本地业务,如果执行成功,则继续执行步骤4,否则,进行本地事务回滚,执行步骤6;
步骤4:上游应用通知可靠消息系统确认业务已执行并发送消息,如果可靠消息系统收到消息,执行步骤5,否则可靠消息系统向上游应用查询确认消息的状态,如果确认已完成,执行步骤5,否则执行步骤6;
步骤5:可靠消息系统修改消息状态为发送状态并将消息投递到消息组件,如果消息组件收到消息,执行步骤7,否则,可靠消息系统向上游应用查询确认消息的状态,如果确认已完成,执行步骤7,否则执行步骤6;
步骤6:上游应用停止执行,不再发送到下游执行;
步骤7:下游应用监听消息组件并获取消息,如果下游应用能收到消息,那么执行步骤8,否则请求可靠消息服务请求消息组件进行消息重发;
步骤8:下游应用根据消息体信息处理本地业务,如果本地业务执行失败,执行事务回滚,否则执行步骤9;
步骤9:下游应用向消息组件自动发送确认消息被消费,如果消息组件能收到消息,那么执行步骤11,否则,执行步骤10;
步骤10:下游应用停止执行;
步骤11:下游应用通知可靠消息服务消息被成功消费,可靠消息服务将该消息状态更改为已完成。
所述向上游应用查询确认消息的状态包含以下具体步骤:
步骤1:可靠消息系统查询超时的待确认状态的消息;
步骤2:向上游应用查询业务执行的情况;
步骤3:业务未执行,则删除该消息,保证业务和可靠消息服务的一致性;业务已执行,则修改消息状态为已发送,并发送消息到消息组件。
所述进行消息重发包含以下步骤:
步骤1:可靠消息系统定时查询状态为已发送并超时的消息;
步骤2:可靠消息系统将消息重新投递到消息组件中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国云科技股份有限公司,未经国云科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711184771.0/2.html,转载请声明来源钻瓜专利网。





