shardingSphere 之分布式事务


强一致性事务XA

2PC

3PC

缺点:协调者或参与者 故障以后,会出现数据不一致的问题、3PC虽然比2PC有所改善,但并没有从根本上解决问题

市面上有关于2PC模型的实现,没有3PC模型的实现

基于2PC的模型:TCC、Seata

sharding-shere 通过SPI实现的XA事务的组件:

  • bitronix
  • narayana
  • atomickos

柔性事务BASE -> Seata(AT模型)


其他事务

通过SPI自己实现

TCC

XA 和 TCC 的去别:XA 是基于资源的,代码不用改;TCC是基于应用的,比较复杂

TCC:try() ==> 预留资源

  • ByteTCC
  • TinyTCC
  • transactionTCC

Saga

应用场景:长事务(整个事务运行时间比较长)

实现方式:MQ,ZK

拆分成,多个子事务

事件编排
命令协调

Seata

AT模式

工作流程

使用示例

Seata

  • XA Atomikos

  • TCC 业务实现TCC过程,由TM去调度 => 本地状态表

  • Saga 正向和反向, 编排+命令 => MQ/ZK

  • AT 本地事务表

  • MQ

JTA(Java Transaction API)

轻量级事务:XA

重量级事务:容器事务Weblogic JBoss

数据编排治理

配置中心:如果修改了配置,不需要重启应用

注册中心:运行时让DB动态上下线(熔断)

元数据中心:

数据库结构

zk做配置中心和注册中心

元数据中心

工程结构