微服务架构分布式事务解决方案设计思路-(概念篇)
2019独角兽企业重金招聘Python工程师标准>>>
学习以电商购物支付流程中支付系统的支付结果处理为例(学习龙果支付)
第一节:了解常用的分布式解决方案
一、分布式事务方案:最终一致性、事务补偿、TCC、两阶段提交、最大能力通知等。具体结合业务场景。很多大型企业自主研发了自己的分布式事务解决方案,如:支付宝 XTS,去哪儿 QMQ。
1.基于可靠消息的最终一致性解决方案(异步确保型)(适用场景比较广)
2.TCC事务补偿性方案(try-confirm-cancel)(也属于两阶段型的,但区别于2PC协议的两阶段提交)
3.最大努力通知型方案(一般跨平台通知比较常用)
第二节:解决方案效果展示(结合支付系统真实应用场景)
一.场景(如上图)
1、基于可靠消息最终一致性方案
场景:对应支付系统会计异步记账业务;银行通知结果信息存储与驱动订单处理。
2、TCC方案
场景:对应支付系统的订单账户操作:订单处理、资金账户处理、积分账户处理。
3、最大努力通知型方案
场景:对应支付系统的商户通知业务场景
二、用到的技术:
dubbo、spring、springMVC、mybatis、druid
jdk7(或jdk8)、mysql5.6、tomcat、兼容JMS标准的MQ(activeMQ)
第二节:常用分布式事务方案介绍
一、事务介绍
1.由一组操作构成的可靠、独立的工作单元。
2.ACID: atomicity(原子性) 、consistency(一致性)、isolation(隔离性)、durability(持久性)
3.难点:高度并发、资源分布、大时间跨度
二、本地事务
1.事务由资源管理器本地管理(如:spring 注解)
2.优点:支持严格的ACID属性、可靠、高效、状态可以只在资源管理器中维护、应用编程模型简单(在框架或平台的支持)
3.局限:不支持分布式事务处理能力、隔离的最小单位由资源管理器决定(如:数据库中的一条记录)
三、全局事务(DTP模型)--标准分布式事务
四、javaEE平台中的分布式事务实现
五、柔性事务
1.柔性事务中的服务模式:可查询模式、幂等操作、TCC操作、可补偿操作。
2.柔性事务解决方案:可靠消息最终一致
3.TCC
4.最大努力通知型
六、总结
常用的分布式事务解决方案:
*刚性事务:全局事务(标准的分布式事务)
*柔性事务:
可靠消息最终一致(异步确认型)
TCC(两阶段型、补偿型)
最大努力通知型(非可靠消息、定期校对)
转载于:https://my.oschina.net/sundasheng44/blog/833486
微服务架构分布式事务解决方案设计思路-(概念篇)相关推荐
- 微服务框架 SpringCloud微服务架构 分布式事务 38 动手实践 38.2 实现XA 模式
微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] 分布式事务 文章目录 微服务 ...
- 微服务架构下,解决数据库跨库查询的一些思路
开局先总结一下:现在很多厂都进行了微服务的开发模式,但是呢,业务的拆分的时候如果存在交叉是一件非常头大的事情,所以大家写微服务尽量不要交叉的写,比如新增用户如果已经存在在userservice里面了那 ...
- SpringCloudAlibaba 微服务整合分布式事务Seata
基于AT模式 创建undo_log(回滚日志表)表, 每个数据库需要创建 注意:UNDO_LOG Table:不同数据库在类型上会略有差别.详见官网 -- 注意此处0.7.0+ 增加字段 contex ...
- 阿里P9:做了6年架构设计,这次聊聊微服务与分布式事务细节
微服务因其高内聚.低耦合.高扩展.敏捷开发为很多企业所用,当然,没有任何一项技术是完美的.系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并操作多个数据库实现. 毫不夸张地说,分布式事务已 ...
- 微服务架构下,解决数据一致性问题的实践
Pic by Alibaba Tech on Facebook 随着业务的快速发展,应用单体架构暴露出代码可维护性差.容错率低.测试难度大和敏捷交付能力差等诸多问题,微服务应运而生.微服务的诞生一方面 ...
- 微服务架构下,解决数据一致性问题的实践 1
随着业务的快速发展,应用单体架构暴露出代码可维护性差.容错率低.测试难度大和敏捷交付能力差等诸多问题,微服务应运而生.微服务的诞生一方面解决了上述问题,但是另一方面却引入新的问题,其中主要问题之一就是 ...
- 微服务下分布式事务模式的详细对比
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 作为 Red H ...
- 微服务架构下,解决数据一致性问题的实践 2
随着业务的快速发展,应用单体架构暴露出代码可维护性差.容错率低.测试难度大和敏捷交付能力差等诸多问题,微服务应运而生.微服务的诞生一方面解决了上述问题,但是另一方面却引入新的问题,其中主要问题之一就是 ...
- SpringCloud微服务架构分布式组件如何共享session对象
参考文章: https://www.cnblogs.com/fengli9998/p/7881331.html https://blog.csdn.net/dsen726/article/detail ...
最新文章
- R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法
- opencv图片处理和摄像头边缘检测
- 从无到有算法养成篇-栈和队列·栈
- 牛客网 【每日一题】5月26日题目精讲 [JSOI2007]建筑抢修
- 小白兔生小白兔-菲波拉契数列问题
- HTML_CSS_JS_JSON
- 将流数据输出到Mysql中
- 前缀(波兰表达式) 中缀 后缀(逆波兰表达式)
- 在mysql中如何添加函数库_详细讲解如何为MySQL数据库添加新函数
- 设计模式---工厂方法模式(c++实现)
- 逆向工程核心原理笔记
- 遗传算法matlab工具箱及其应用
- Aria2+Rclone教程
- 观 小楼老师Axure /得
- 如何查找一篇论文的源代码
- 西安航空计算机录取分数线,2019西安航空学院录取分数线及历年专业分数线统计表【文科 理科】...
- 怎样压缩图片?有这3种图片压缩的方法就够了
- 软件测试周刊(第49期):什么是大众?大众就是那些一年读书不超过五本的人。
- 天线接收信号、处理系统
- 第五章 卡耐基驾驭竞争与合作 三 征服畏惧建立自信
热门文章
- 越心虚越藏着掖着,越藏越掖越脱节
- win2k cannot set the docm proportites
- C++作用域为类的常量
- 前端每日实战:164# 视频演示如何用原生 JS 创作一个数独训练小游戏(内含 4 个视频)...
- LCIS code force 10D
- 线性方程组与基尔霍夫定律
- pwnable input2 之 write up
- 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)...
- 【AIX 命令学习】创建逻辑卷!
- ubuntu-14.04 系统安装mysql-5.6.21