分布式算法学习---CAP理论

CAP理论也叫做CAP不可能三角,就是三种特性不可能同时满足。
在这里插入图片描述
CAP分别指的是:
C:一致性。就是当有客户端修改了数据以后,要同步到集群所有的机器,才会返回成功,这时,无论客户端往哪台机器去读取数据都是最新的数据。如果发生了网络问题,无法响应到最新写入的数据,就会一直返回给客户端错误信息。比如名字路由系统(基于RAFT的强一致性算法),当发生了分区故障,无法响应最新的数据,由于要维持一致性,当客户端来查询信息的时候就会一直返回出错信息。业务系统无法拿到路由信息,导致业务系统故障,瘫痪。
A:可用性。当客户端修改了数据,只要在一台机器修改成功了,就立即返回了,不保证其他机器上的数据都是最新的。当集群间的机器发生网络问题的时候,客户端去读取数据就会发生读取到的数据不是最新的。强调的是服务是可用的,但不保证数据是最新的。比如1,2,3个节点,当向1写入了数据,但2,3节点由于分区故障等原因没有同步到最新的数据,那么当有一个客户端在2节点读取的时候,节点2收到了请求就返回数据。
P:分区容错性。当出现任意数量的消息丢失或者高延迟的时候,系统仍然可以继续工作。不管系统内部发生任何的数据同步问题,我都会一直运行,强调的是系统对于分区故障的容错能力。分布式系统由于工作节点很多,节点直接的分区故障是必然存在的,所以分区容错性是必须保障的。
《Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services》赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)证明了CAP不可能三角。
应用
由于P是一定要保障的,那么只剩下了选择A和C了。
CP:保障数据一定是最新的,那么当客户端读取数据的时候就可能应为分区故障或者高延迟的问题导致客户端读取信息一直都是错误信息
AP:数据不一定是最新的。当发生分区故障或者高延迟的时候,每个节点返回相对比较新的数据。
在不存在网络分区的情况下,也是分布式系统正常工作的时候,也是可以选择AC。不是无论什么情况下都必须在C和A选择一个。
小结
AC:分布式系统不存在。单机版的MYSQL,当MYSQL需要集群部署的时候,也必须要保障P。
CP:数据一定要是最新的数据,发生分区故障或者高延迟的时候,影响用户体验。比如基于RAFT算法的强一致性算法, Etcd,Consul 和 Hbase。
AP: 任何时候都会返回数据,但不保证一定是最新的。比如Cassandra 和 DynamoDB。

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页