Support XA transaction in proxy proposal
proxy目前已经通过JTA实现了透明的跨数据库连接的分布式事务,本提案希望实现通过XA语句控制的分布式事务
鉴于问题本身的复杂性,我们可以将其拆解成3个较小的问题予以解决
- 为XA事务中的每个子事务分配一个连接,并将XA语句转发到对应的数据库
- 当数据库崩溃时,调用者(业务方)来处理XA RECOVER
开启两个shardingsphere实例,分别监听3306和3307
- 会话A执行XA START xid1;会话B执行XA START xid2
- 会话A执行INSERT INTO `test` (`sn`) VALUES (1);会话B执行INSERT INTO `test` (`sn`) VALUES (2)
- 会话A执行XA END xid1;会话B执行XA END xid2
- 会话A执行XA COMMIT xid1;会话B执行XA COMMIT xid2
- 会话A执行XA START xid1;会话B执行XA START xid2
- 会话A执行INSERT INTO `test` (`sn`) VALUES (1);会话B执行INSERT INTO `test` (`sn`) VALUES (2)
- 会话A执行XA END xid1;会话B执行XA END xid2