CAP 和存储技术的选择
CAP 的概念
指的是在一个共享数据的分布式系统中,下面三者最多只能同时保持两者。
- 一致性(Consistency):读操作得到最近一次写入的数据。
- 可用性(Availability):请求在限定时间内从非失败的节点得到非失败的响应。
- 分区容忍性(Partition Tolerance):系统允许节点间网络消息的丢失和延迟。
进一步说明
- 一致性,体现了存储系统对于统一数据提供的读写操作是线性的。
- 可用性,体现了存储系统持续提供服务的能力。
- 分区容忍性,体现了系统是否能够接纳基于数据的网络分区。
个人理解:在有多台存储设备同时工作时,保持一致性就牺牲了可用性,反之亦然。
CAP 的取舍
在讨论 CAP 的时候,其实 P 是没法被拿走的(拿走了就不是分布式系统了)。所以这个难题就变成了 C 和 A 的二选一了。但并不是说系统只能二选一拥有一个特性,在系统运行正常的时候,网络分区没有出现,那么技术上我们是可以同时保证一致性和可用性的。
在网页资源部署的时候,首先要保证的是可用性,其次才是一致性。而像机票购买这种系统,优先保证的就是一致性了。
CA 系统(去掉 P)
CAP 要求的是节点间的数据交换和数据共享。去掉了 P 其实就没有了数据共享的功能。这些系统有:
- 单节点系统。
- 多节点、没有数据共享和交换的数据系统。
NoSQL 三角形

- NoSQL 三角形其实还是 CAP 三角形
- NoSQL 是非关系数据库,相对的是传统的关系数据库。它被设计出来的目的,是作为关系数据库的补充。
- NoSQL 损失了强结构定义和关系查询等能力,但是它往往可以具备比关系数据库高得多的性能和横向扩展性等优势。
网友评论