上一篇《分布式事务介绍(一)什么是分布式事务?》我们介绍了分布式事务是什么,都有哪些模型。同时我们也说了,目前比较常用的流行方案就是使用TCC,这一篇呢,我们介绍下TCC模型有哪些线程的框架,项目里面可以直接使用的。
一、Hmily框架
Hmily框架是一个高性能的异步处理分布式事务框架,处理效率非常高,属于金融级别的分布式框架,所以用的比较多。此框架有以下特点:
1、无缝集成Spring,Spring boot start。 2、无缝集成Dubbo,SpringCloud,Motan等rpc框架。 3、多种事务日志的存储方式(redis,mongdb,mysql等)。 4、多种不同日志序列化方式(Kryo,protostuff,hession)。 5、事务自动恢复。 6、支持内嵌事务的依赖传递。 7、代码零侵入,配置简单灵活。
git地址是:https://github.com/dromara/hmily
Hmily框架提供的事务模式有以下几种:
序号 | 事务模式 | 说明 |
1 | tcc | try-confirm-cancel |
2 | tac | 自动生成undo log |
3 | xa | 强一致性模型 |
Hmily在使用的时候非常方便,这里不需要单独搭建一套Hmily服务端,同时他的配置支持mysql、redis、zookeeper、mongodb,一般我们使用mysql即可。
二、Seata框架
seata分布式事务解决方案也是阿里巴巴开源的项目,以前的名称是:Fescar。这个框架主推的是AT的模式,也是基于二阶段提交的。Seata 致力于提供高性能和简单易用,用起来也非常的方便。Seata框架提供的事务模式有以下几种:
序号 | 事务模式 | 说明 |
1 | AT | 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。 二阶段:提交异步化,非常快速地完成。回滚通过一阶段的回滚日志进行反向补偿。 |
2 | TCC | try-confirm-cancel |
3 | SAGA | Saga模型是把一个分布式事务拆分为多个本地事务,每个本地事务都有相应的执行模块和补偿模块(对应TCC中的Confirm和Cancel),当Saga事务中任意一个本地事务出错时,可以通过调用相关的补偿方法恢复之前的事务,达到事务最终一致性。 |
4 | XA | 强一致性模型 |
Seata在部署使用的时候需要单独搭建一个Seata服务端,项目中的配置需要连接到这个seata提供的服务上。
三、tcc-transaction框架
这个框架也是用的比较多的,这个框架也覆盖了整个try-confirm-cancel的流程。tcc-transaction框架目前代码工程结构清晰,社区还算比较活跃,文档也比较完善。但是比较头疼的是注释比较少,上手的话需要多研究一下。tcc-transaction框架提供的事务模式有一下几种:
序号 | 事务模式 | 说明 |
1 | TCC | try-confirm-cancel |
git地址:https://github.com/changmingxie/tcc-transaction
四、ByteTCC框架(暂时没用过)
ByteTCC框架有以下特性:
1、支持Spring容器的声明式事务管理; 2、支持普通事务、TCC事务、业务补偿型事务等事务机制; 3、支持多数据源、跨应用、跨服务器等分布式事务场景; 4、支持长事务; 5、支持dubbo服务框架; 6、支持spring-cloud;
git地址:https://github.com/liuyangming/ByteTCC
五、EasyTransaction框架(暂时没用过)
EasyTransaction(后简称ET)的目标也是构建出一个全面分布式事务解决方案,到目前为止其包含TCC,自动补偿(Seata AT),手动补偿,可靠事务消息、Saga事务等等多种形态。
git地址:https://github.com/QNJR-GROUP/EasyTransaction
六、spring-cloud-rest-tcc框架(暂时没用过)
Spring-cloud-rest-tcc是基于Spring Cloud Netflix的TCC柔性事务和EDA事件驱动示例,结合Spring Cloud Sleuth进行会话追踪和Spring Boot Admin的健康监控,并辅以Hystrix Dashboard提供近实时的熔断监控。
git地址:https://github.com/prontera/spring-cloud-rest-tcc
总结:除了以上的tcc框架之外,还有很多其他的tcc框架。但目前使用最多的主要还是:Hmily,Seata,tcc-trasaction。
好了下一篇我们进入实战,敬请期待。
还没有评论,来说两句吧...