设计原则
解决方案
分布式系统一致性
ACID
含义
- Atomicity: 原子性
- Consistency:一致性
- Isolation:隔离性
- Durability:持久性
实现场景 :数据库
CAP
含义
- Consistency:一致性
- Availability:可用性, 完全的可用性指的是在任何故障模型下,服务都会在有限的时间处理响应
- Partition tolerance:分区容错性,可靠性
BASE
含义: 基本可用和最终一致,放弃强一致性
- BA:Basically Available,基本可用
- S:Soft State,软状态,状态可以有一段时间不同步
- E:Eventually Consistent,最终一致,最终数据是一致的就可以了,而不是时时保持强一致
实现方法
- Write-Ahead Log:简单
- 事务消息队列
- 发送 Prepared 消息
- update DB
- 根据 update DB 结果成功或失败,Confirm 或者取消 Prepared 消息
- 定期任务:把处于初始状态的msg 与生产者确认,最终一致;补偿模式
DTS :distribute transaction
应用程序、事务管理器、资源管理器、通信资源管理器四部分。
事务处理器是统管全局的管理者,资源处理器和通信资源处理器是事务的参与者。
- 两段提交
- 三端提交
- Tcc: Try、Confirm、Cancel
关于补偿模式
通信模式 | 方法 |
---|---|
同步 | C 调用S查询服务,确认最终状态| |
异步 | 未知状态,等待S 放确认最终回调结果 |
消息队列 | 定期校对模式, broker 消息与生产者确认机制 |
Paxos / Raft
缓存一致性
- 读的顺序要先缓存,后数据库,
- 写的顺序要先数据库,后缓存