采用Best effort 1pc + 回滚补偿机制实现的一个distributed transaction (分布式事务框架).基于dubbo rpc服务上实现。
2016-02-26 09:08
1126 查看
该项目已经提交在github上了。github的项目地址: https://github.com/bingyufight/distributed-flexible-transaction
这是一个在dubbo rpc服务框架上实现的分布式事务补偿框架,该分布式事务框架没有采用传统的2pc(两阶段分布式事务提交的协议),
因为两阶段分布式事务提交协议有比较大的阻塞性能问题。所以distributed-flexible-transaction 分布式事务框架采用的 是Best effort 1PC(一阶段最大努力提交协议) + 分布式回滚补偿的方式来实现分布式事务,这样可以大大提高性能,同时能 保证不同分布式服务之间的数据一致性。应用场景如下: 比如现在有 分布式服务A,B,C,D,E,F。 A->B,B->C,C->D,D->E,E->F,在distributed-flexible-transaction分布式事务框架中一次分布式服务的调用链就是一个transaction,
每个单独的分布式服务是一个participant。一个transaction由多个participant组成。当D->E出现超时异常或是业务异常时, 分布式事务框架将会执行A->B,B->C,C->D 的各个participant(分布式服务调用)的回滚服务进行事务补偿。同时,在分布式事务的整个执行过程中,用WAL(Write ahead log)机制,将分 布式服务执行的commit和rollback之前保留重要执行信息。
这个分布式框架目前只是一个初级的版本,后续会继续迭代。框架中有很多地方需要改进和优化,如果有宝贵的改进和优化建议,我们一起讨论。
这是一个在dubbo rpc服务框架上实现的分布式事务补偿框架,该分布式事务框架没有采用传统的2pc(两阶段分布式事务提交的协议),
因为两阶段分布式事务提交协议有比较大的阻塞性能问题。所以distributed-flexible-transaction 分布式事务框架采用的 是Best effort 1PC(一阶段最大努力提交协议) + 分布式回滚补偿的方式来实现分布式事务,这样可以大大提高性能,同时能 保证不同分布式服务之间的数据一致性。应用场景如下: 比如现在有 分布式服务A,B,C,D,E,F。 A->B,B->C,C->D,D->E,E->F,在distributed-flexible-transaction分布式事务框架中一次分布式服务的调用链就是一个transaction,
每个单独的分布式服务是一个participant。一个transaction由多个participant组成。当D->E出现超时异常或是业务异常时, 分布式事务框架将会执行A->B,B->C,C->D 的各个participant(分布式服务调用)的回滚服务进行事务补偿。同时,在分布式事务的整个执行过程中,用WAL(Write ahead log)机制,将分 布式服务执行的commit和rollback之前保留重要执行信息。
这个分布式框架目前只是一个初级的版本,后续会继续迭代。框架中有很多地方需要改进和优化,如果有宝贵的改进和优化建议,我们一起讨论。
distributed-flexible-transaction分布式事务基本组成模块
distributed-transaction-api 分布式事务框架API层 distributed-transaction-agent 分布式事务框架代理探测层 distributed-transaction-common 分布式事务框架通用工具类层 distributed-transaction-core 分布式事务框架核心逻辑层 distributed-transaction-service 分布式事务框架事务管理服务层 distributed-transaction-test-dubboservice1 分布式事务框架测试dubbo服务1 distributed-transaction-test-dubboservice2 分布式事务框架测试dubbo服务2
相关文章推荐
- MySQL分布式事务语句操作
- 如何用消息系统避免分布式事务?
- JTA经典问答
- 如何用消息系统避免分布式事务?
- java基于atomikos做分布式事务(简单实例)
- php + mysql 分布式事务
- 分布式事务(多表多库)
- 分布式事务
- 分布式事务中的两阶段提交
- OLE DB provider "SQLNCLI11" for linked server "dbLink01" was unable to begin a distributed transac
- “分布式事务”的理解(适用于访问多个数据库之间)
- System.Runtime.InteropServices.COMException (0x8004E00F): COM+ 无法与 Microsoft 分布式事务协调程序交谈 (异常来自 HRESU
- 用消息系统实现分布式事务的简单设想
- [Oracle] 分布式事务和两阶段提交(2PC)
- mysql之分布式事务
- MySQL数据库分布式事务XA实现原理分析
- MySQL数据库分布式事务XA优缺点与改进方案
- OFBiz分布式事务
- Spring JTA 分布式事务
- 事务(Transaction) 之分布式事务TransactionScope,原子性