基础内容
定义:确保系统中的数据在任何时候都是一致的
关键概念
- 强一致性(Strong Consistency):所有节点在同一时间看到的数据是相同的
- 实现方式
- 同步更新:每次写操作都会同步更新所有副本,确保所有节点数据一致
- 读操作的一致性:无论在哪个节点进行读操作,都能立即获得最新的数据
- 严格的顺序:读写操作严格按照顺序执行,确保数据的一致性
- 实现技术
- 分布式数据库:通过分布式事务和同步复制实现强一致性。工具:Google Spanner, CockroachDB
- 共识算法:使用共识算法确保所有节点达成一致。算法:Paxos, Raft
- 实现方式
- 最终一致性(Eventual Consistency):在没有新的更新的情况下,所有节点最终会达到一致的状态
- 实现方式
- 异步更新:写操作异步传播到其他节点,各节点的数据可能在短时间内不一致
- 容忍短暂不一致:系统允许在短时间内存在数据不一致,但最终会达到一致状态
- 高可用性:相比强一致性,最终一致性系统具有更高的可用性和性能
- 实现技术
- 异步复制:数据更新异步复制到其他节点。工具:Amazon DynamoDB, Cassandra
- 矛盾解决机制:使用冲突检测和解决机制来处理数据不一致。算法:Vector Clocks, Conflict-Free Replicated Data Types (CRDTs)
- 实现方式
- CAP定理(CAP Theorem):一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者不可兼得
- 定义
- 一致性(Consistency):所有节点在同一时间看到的数据是相同的
- 可用性(Availability):每个请求都能收到非错误响应,但不保证返回最新的数据
- 分区容错性(Partition Tolerance):系统在网络分区发生时仍能继续运行
- CAP三选二:在分布式系统中,只能同时满足一致性、可用性和分区容错性中的两项,不能同时满足三者
- CA(一致性+可用性)
- 放弃分区容错性,适用于单机系统或对网络分区容忍度低的场景
- 比如:传统关系型数据库(单机部署)
- CP(一致性+分区容错性)
- 放弃可用性,确保数据一致性和分区容错性,适用于数据一致性要求高的场景
- 工具:HBase, MongoDB(在强一致性配置下)
- AP(可用性+分区容错性)
- 放弃一致性,确保系统高可用性和分区容错性,适用于高可用性要求高的场景
- 工具:Cassandra, DynamoDB
- CA(一致性+可用性)
- 定义
保证一致性常用技术方案
- 分布式事务:确保跨多个节点的数据一致性
- 二阶段提交(2PC)
- 三阶段提交(3PC)
- 数据复制:通过复制确保数据一致性
- 主从复制
- 多主复制
- 一致性哈希(Consistent Hashing):一种分布式哈希技术,减少数据迁移