CAP 定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于分布式计算系统来说,不可能同时满足以下三点:
![9709135-33a7840c237e938d](https://i-blog.csdnimg.cn/blog_migrate/902b6d79e14d0208b7586481b45661d8.jpeg)
CAP 定理
- 一致性(Consistence) : 所有节点访问同一份最新的数据副本
- 可用性(Availability) : 每次请求都能获取到响应,但是不保证获取的数据为最新数据
- 分区容错性(Partition tolerance) : 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
CAP 仅适用于原子读写的 NOSQL 场景中,并不适合数据库系统。现在的分布式系统具有更多的特性,比如扩展性、可用性等等,在进行系统设计和开发时,就不应该仅仅局限在 CAP 问题上。
很多人理解这一定律时,常常简单的表述为:“一致性、可用性、分区容错性三者只能同时达到其中两个,不可能同时达到”。实际上,这是一个具有误导性质的说法,在 CAP 理论诞生12年之后,CAP 之父也在2012年重写了之前的论文。
当发生网络分区的时候,如果我们要继续服务,那么强一致性和可用性只能2选1,也就是说当网络分区之后,P是前提,决定了P之后才有C和A的选择。也就是说分区容错性(Partition tolerance)是我们必须要实现的。
如果想深入学习一下 CAP ,可以看看这篇文章: 《分布式系统之CAP理论》