CAP 是分布式系统中的概念。
CAP理论的核心概念
一致性(Consistency)
- 所有节点在同一时间的数据完全一致,即每次读取都能获取最新写入的数据。例如,银行转账必须保证双方账户余额的同步更新,否则会导致数据错误。
可用性(Availability)
- 每个请求都能在合理时间内得到响应(不保证数据最新)。例如,电商网站在高并发场景下需保证用户可正常下单,即使返回的数据可能非最新。
分区容错性(Partition Tolerance)
- 系统在网络分区(如节点间通信中断)时仍能继续运行。由于分布式系统中网络故障不可避免,P是必须满足的特性。
CAP的权衡与实践
- CP系统(一致性+分区容错性):牺牲可用性。例如金融系统(如HBase)在网络分区时会拒绝请求以确保数据一致性。
- AP系统(可用性+分区容错性):牺牲一致性。如社交平台(如Cassandra)允许短暂数据不一致,优先保证服务可用。
- CA系统(一致性+可用性):理论上难以实现,因分布式系统无法避免网络分区。
CAP理论的争议与补充
- 实际场景的灵活性:CAP并非绝对二元选择,可通过最终一致性(如Redis、MongoDB)或超时机制平衡三者。
- 与ACID的区别:CAP的“C”强调多节点数据同步,而事务ACID的“C”关注事务前后的状态合法性。
典型应用案例 - Nacos:临时实例用AP模型(Distro协议),持久化实例用CP模型(SOFAJRaft协议)。
- NoSQL数据库:Cassandra(AP)、MongoDB(CP倾向)。
总结:CAP理论是分布式系统设计的基石,但需结合业务需求灵活权衡。例如,金融领域倾向CP,互联网高并发场景倾向AP。