强一致性事务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做配置中心和注册中心
元数据中心
工程结构