原创

CAP理论的P理解

温馨提示:
本文最后更新于 2021年08月05日,已超过 371 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
CAP
比如说注册中心:
eureka是 AP , A是高可用,就是说它挂了,注册中心还保留它,有缓存,服务请求过来还能响应。
zk 是 CP,C 是数据一致性,挂了就马上剔除。(挂了就是挂了,我会立即告诉你服务不可用)




关于P的理解
P:分区容错性,即系统在遇到任何网络分区故障时,仍然需要能够保证对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。


一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。

比如说,你IDC数据中心只有一个分区的时候,所有的服务都可以来这里拿数据,出现了多个分区后,提高分区容忍性的做法就是把这份数据复制到不同的分区。
复制的过程中可能会带来可用性问题,因为不同的节点上数据可能是不一致的(有可能写到一半就挂了,也没有回复),要保证一致性,每次写的时候可以等写完了再更新为成功,但是这等待又会带来可用性问题。(因为会阻塞,其他业务只能等

这个过程有点类似MySQL的binlog同步,主从同步的时候,可以选择不同的写方案,有立马返回、也有写完一个就返回;当出现读写不一致的时候,也会有不同的解决方案,但是没有完美的方案。


咋一看,可能 P 和 A 有一定类似,但是 可用性 A 是指服务是否能响应请求、能否在一定时间内,指的是服务而 分区容错性P 关注的是网络异常后的数据处理,是否一致。

现在的主流都是 AP 或者 CP ,就是在 P 的基础上保证 A 或者 C 其中一个,在实践上,无法同时做到 CAP 三者。

正文到此结束
关注公众号 【HelloCoder】
免费领取Java学习资料
让技术,化繁为简
本文目录