1、分布式事务方案:最终一致性、事务补偿、TCC、两阶段提交、最大能力通知等。具体结合业务场景。不少大型企业自主研发了本身的分布式事务解决方案,如:支付宝 XTS,去哪儿 QMQ。java
1.基于可靠消息的最终一致性解决方案(异步确保型)(适用场景比较广)mysql
2.TCC事务补偿性方案(try-confirm-cancel)(也属于两阶段型的,但区别于2PC协议的两阶段提交)面试
3.最大努力通知型方案(通常跨平台通知比较经常使用)spring
###第二节:解决方案效果展现(结合支付系统真实应用场景)sql
一、基于可靠消息最终一致性方案数据库
场景:对应支付系统会计异步记帐业务;银行通知结果信息存储与驱动订单处理。编程
二、TCC方案tomcat
场景:对应支付系统的订单帐户操做:订单处理、资金帐户处理、积分帐户处理。性能优化
三、最大努力通知型方案mybatis
场景:对应支付系统的商户通知业务场景
###2、用到的技术:
dubbo、spring、springMVC、mybatis、druid
jdk7(或jdk8)、mysql5.六、tomcat、兼容JMS标准的MQ(activeMQ)
第三节:经常使用分布式事务方案介绍
###1、事务介绍
1.由一组操做构成的可靠、独立的工做单元。
2.ACID: atomicity(原子性) 、consistency(一致性)、isolation(隔离性)、durability(持久性)
3.难点:高度并发、资源分布、大时间跨度
1.事务由资源管理器本地管理(如:spring 注解)
2.优势:支持严格的ACID属性、可靠、高效、状态能够只在资源管理器中维护、应用编程模型简单(在框架或平台的支持)
3.局限:不支持分布式事务处理能力、隔离的最小单位由资源管理器决定(如:数据库中的一条记录)
1.柔性事务中的服务模式:可查询模式、幂等操做、TCC操做、可补偿操做。
2.柔性事务解决方案:可靠消息最终一致
在此我向你们推荐一个架构学习交流圈。交流学习企鹅群号:948368769(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多 3.TCC
4.最大努力通知型
经常使用的分布式事务解决方案:
*刚性事务:全局事务(标准的分布式事务)
*柔性事务:
可靠消息最终一致(异步确认型)
TCC(两阶段型、补偿型)
最大努力通知型(非可靠消息、按期校对)