CAP 理论

用户头像
王麒宇
关注
发布于: 2020 年 07 月 15 日
  1. 概念

CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中:

  • 一致性Consistency):数据在多个副本之间是否能够保持一致的特性。(当一个系统在一致状态下更新后,应保持系统中所有数据仍处于一致的状态)

  • 可用性Availability):系统提供的服务必须一直处于可用状态,对每一个操作的请求必须在有限时间内返回结果。

  • 分区容错性Tolerance of network Partition):指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。



  1. 分布式系统中的应用

在分布式系统中这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架构设计时,必须做出取舍。例如我们熟悉的zookeeper就是CP,Eureka就是AP,当然还有很多其他的分布式应用,一般来说P是愤怒时系统的基本要求,大多数应用是在C,A之间取舍。传统的关系型数据库基本都是CA,数据强一致性。那么AP的时候是不是就完全放弃C,其实也不然,大多数会退而求其次使用最终一致性来保证数据的安全,这部分其实就是BASE理论涉及的内容

  1. 取舍

CA: 优先保证一致性和可用性,放弃分区容错。 这也意味着放弃系统的扩展性,系统不再是分布式的,有违设计的初衷。

CP: 优先保证一致性和分区容错性,放弃可用性。在数据一致性要求比较高的场合(譬如:zookeeper,Hbase) 是比较常见的做法,一旦发生网络故障或者消息丢失,就会牺牲用户体验,等恢复之后用户才逐渐能访问。

AP: 优先保证可用性和分区容错性,放弃一致性。NoSQL中的Cassandra 就是这种架构。跟CP一样,放弃一致性不是说一致性就不保证了,而是逐渐的变得一致。



用户头像

王麒宇

关注

还未添加个人签名 2018.03.27 加入

还未添加个人简介

评论

发布
暂无评论
CAP理论