前言
分布式事务划分为两个角度,1是存储层,也即数据库角度的分布式事务,多实现于分布式数据库事务 2是业务层,偏向于服务化系统以及业务系统的分布式事务。
存储层
spanner,XA(2pc),,3pc,percolator(2pc),calvin,apache omid
模型 | 数据模型 | 并发控制方案 | 隔离级别支持 | 限制 |
---|---|---|---|---|
XA | 不限 | 两阶段锁(悲观) | 所有隔离级别 | 加读锁导致性能下降 |
Percolator | Key-Value | 加锁(悲观) & MVCC | SI | |
Omid | Key-Value | 冲突检测(乐观) & MVCC | SI | |
Calvin | 不限 | 确定性数据库 | Serializable | 仅适用于One-Shot事务 |
业务层
解决思路有:XA(异构系统),TCC,Saga,基于本地消息的分布式事务,基于事务消息的分布式事务
具体的产品有:seata, hmily, byetcc, easytransaction,XA-JTA(atomikos,bitronix,narayana) ,JOTM, BTM, MSDTC
同构与异构系统
同构:MySQL Cluster NDB,VoltDB
异构:MySQL和MQ,MySQL和Redis