CAP理论(三者无法同时满足)
-
C 一致性
分布式多个节点,任意节点读取的数据都是最新状态,返回的数据结果一致
-
A 可用性
任何事务操作,都可以响应结果并且不会响应超时或错误
-
P 分区容错性
分布式不同节点,不可避免出现网络问题,但不影响对外服务正常
-
常用组合 AP 满足可用性、分区容错性、 对一致性要求较低
base理论
基本可用、软状态、最终一致性的缩写,是对cap理论中一致性和可用性的权衡后的结果
-
BA 基本可用
满足可用性,但可能存在数据不一致
-
S 软状态
系统中可以一段时间内不同步,即系统中的状态不需要实时同步
-
E 最终一致性
所有的节点最终会达到一致的状态,某个时间可能会出现不一致情况
解决方案
2PC
2PC 两阶段提交协议
- 2是两个阶段,p是准备阶段,c是提交阶段
- 将整个事务流程分为两个阶段,准备阶段和提交阶段
JTA + 两阶段提交
- JTA 用户java,用户管理和控制分布式事务流程
springboot+JTA+atomikos多数据源分布式事务管理
-
XA是定义于数据库的分布式事务处理规范,XA事务支持不同数据库之间实现分布式事务。
-
JTA(Java Transaction API):是Java平台上一个标准API,用于管理和控制分布式事务的执行流程。它是数据库XA事务在Java的一个映射。
核心类: javax.transaction.UserTransaction:暴露给应用使用,用来启动、提交、回滚事务。 javax.transaction.TransactionManager:提供给事务管理器的接口,用于协调和控制分布式事务的执行过程。 javax.transaction.XAResource:表示一个资源管理器,用于管理和操作资源。 javax.transaction.Xid:用于唯一标识一个分布式事务。
-
Atomikos 是一个开源的事务管理器,用于管理和控制分布式事务的执行过程。Atomikos可以解决,在同一个应用下,连接多个数据库,实现分布式事务
存在问题
- 单点问题
- 资源锁问题
- 性能瓶颈
- 数据不一致问题
3PC
- 3PC 三阶段提交协议
- CanCommit、PreCommit、DoCommit
3PC问题
- 数据不一致问题
TCC
- TCC 是 Three-Phase Commit 的缩写,是一种分布式事务处理协议,它由三个阶段组成:Try、Confirm、Cancel。
TCC问题
- 拆分两个阶段
- 允许空回滚
- 防悬挂控制、幂等控制
Hmily框架
saga模式
- 一种纯业务补偿的模式,业务在调用的时候正常提交