CAP原则

  CAP原则指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个属性最多只能同时实现两点,不可能三者兼顾。

 

一.CAP的解释

  C:  一致性,所有的数据备份在同一时刻具有同样的值;

  A:可用性,保证无论请求成功或失败,系统都会给出响应;

  P:分区容错性,指的是系统任意信息的丢失都不会影响系统的继续运行,或任意节点的丢失,都不影响其他节点的继续运行。

 

二.CAP的应用

  CAP只能三选二,任意两个的组合在计算机领域都有很大的应用。

1)CP

  CP原则,满足一致性和分区容错性。比如zookeeper就是典型的使用CP原则的分布式服务。Zookeeper不接收服务挂掉,为什么呢?我们都知道,zookeeper中每当master节点挂掉的时候,系统会进行选举,重新选择其它节点作为master。那么问题来了,重新选举需要花费时间,要知道,每次选举大概需要花30-120秒,而且选举期间,整个集群都是不可用的,于是造成了选举期间服务注册瘫痪的情况。

  Redis等分布式数据库满足CP原则。

 

2)AP

  AP原则,满足可用性可分区容错性。比如Eureke使用的就是AP原则。Eureka保证每个服务节点的独立性,保证某个服务节点的连接失败或者某个接点挂掉其他节点不受影响。但是Eureka的缺陷就是无法保证数据的一致性,也就是说,某个节点获取的注册服务列表,可能不是最新的数据。

  淘宝网、12306这些有使用这个,开学买火车票的时候,刚看还有一张票,点进去就没了,这就是不满足数据一致性的例子,还有CouchDB系统等。

 

3)CA

  CA原则,满足一致性和可用性,放弃分区容错性,也就意味着系统不再是分布式系统了。满足CA的比如MySql数据库,SQL Server等。

 

三.结语

  对于正在深入学习Eureka的我来说只需要了解到这一步即可,有需要再好好研究下。可是,通过CAP原则可以 延伸出很多当下热门的技术,比如分布式、Redis、Zookeeper、NoSQL等,都是职业发展需要深入学习和研究的,加油吧!

 

posted on 2021-03-05 17:08  拾万个为什么  阅读(1552)  评论(0编辑  收藏  举报