分布式架构中的”一致性“
一致性
什么是 CAP
- Consistent
- 一致性
- 同样的数据在分布式系统中所有地方都是被复制成相同的。
- 一致性
- Available
- 可用性
- 所有在分布式系统活跃的节点都能处理操作且响应查询。
- 可用性
- Partition Tolerant
- 分区容错性
- 在两个复制系统之间,如果发生了计划之外的网络连接问题,有一套容错性设计来保证。
- 分区容错性
CAP 是分布式系统中进行平衡的理论。一般情况下,CAP 理论任务你不能同时拥有上述三种,只能同时选择两种。
数据一致性
复制
是导致出现数据一致性问题的唯一原因
强一致性(线性一致性)和弱一致性
- 强一致性
- 系统中的某个数据被成功更新后,后续任何对于该数据的读操作都将得到更新后的值。简而言之就是,在任意时刻,所有节点的数据是一样的。
- 写时复制,复制是同步的。主库需要等待从库的确认,确认从库已经收到写入操作。
- 缺点是,保证了强一致性,必然会损耗可用性。
- 系统中的某个数据被成功更新后,后续任何对于该数据的读操作都将得到更新后的值。简而言之就是,在任意时刻,所有节点的数据是一样的。
- 弱一致性
- 复制是异步的。不需要等待从库响应。
半同步概念
使一个从库保证和主库是强一致性,其他从库保持弱一致性。如果强一致性从库出现问题,则使另一个从库和主库保持强一致性。这样可以确保永远有两个节点拥有完整数据。
最终一致性
是弱一致性的特殊形式,存储系统在保证没有新的更新的条件下,最终所有的访问都是最后最新更新的值。不保证在任意时刻任意节点上的同一份数据是相同的,但随意时间的推移,不同节点上的同一份数据总是在向趋同的方向变化。
读写一致性
事务一致性(ACID)
- Atomic
- 原子性
- 一个事务的所有操作步骤应被看成一个动作,所有步骤要么全部完成,要么全部失败。
- 原子性
- Consistent
- 一致性
- 数据库的约束、级联和触发机制都必须满足事务一致性。不能发生表与表之间存在外键约束,但有的数据却违背了这种约束性。
- 一致性
- Isolated
- 隔离性
- 主要用于实现并发控制,隔离能够保证并发执行的数据顺序执行,事务之间不相互影响。
- 隔离性
- Durable
- 持久性
- 一个事务一旦提交,他就应该被持久保存,不会因为和其他操作冲突而取消这个事务。
- 持久性
分布式一致性算法(Raft)
从 Candidate 选举 Leader
选举任期 Term
如果 Leader 节点故障,重新选举。
Leader 心跳消息 ——> Follower 处理/存储心跳日志 ——> 应答 Leader
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小下同学!
评论