cap定理
- c:数据一致性。所有的节点在同一时间读取到同样的数据。
- a:数据可用性。无论是成功还是失败,每个请求都会收到一个反馈。
- p:分区容忍性。系统中有部分的问题或者丢失部分消息,系统能够正常运行。
组合方式
- ca:放弃分区容忍性,传统单机数据库的选择
- ap:放弃数据一致性,很多nosql的选择。
- cp:放弃可用性。可用性比较低,网络问题会让整个系统不可用。
base模型
- Basically Available:基本可用,允许分区失败。
- Soft State:软状态,接受一段时间的状态不同步
- Eventually consistent:最终一致性,保证最终数据状态是一致的。
Quorum
- 用来权衡分布式系统中数据一致性和可用性
- N:数据复制节点数量
- R:成功读操作的最小节点数
- W:陈功写操作的最小节点数
- 如果W+R>N,那么是强一致性
- 如果w+R<=N,那么是能够最终一致性
Vector Clock
- 对每同一份数据的每一次修改都加上版本号
节点间信息交换方式
- 通过共享内存共用一份数据
- 通过消息投递来完成消息的投递
总结
- 尽量避免引入分布式事务.
- 应该追求最终一致性而不是强一致性
- 从实现上说,我们是通过补偿机制不断重试,让之前因为异常没有进行到底的操作继续进行,而不是回滚.
- 可以用基于Paxos算法的实现