通俗的解释分布式系统的CAP理论

CAP是一致性,可用性,分区容错性三个英文单词的首字母缩写。分布式系统中,CAP只能同时满足其中两个特性,然而分布式系统最大的目标就是实现高可用性,所以A是必须的,还能满足一个特性就只能从CP中选择一个了。分布式系统中,大部分情况下都会选择P(分区容错性),看业务决定有的时候也会选择C。

为什么只能满足其中两个特性呢?打个比方,如果分布式系统有一台主机出现故障(网络断线/程序崩溃/内存CPU紧张导致程序运行卡顿),这个时候系统如果要继续保持可用性(A),分区容错也要满足(P),那么在这种情况下,出故障的机器上面的数据无法获取,系统计算出来的结果不一定是准确的,也就失去了一致性,想都满足也满足不了。

如果要满足一致性(C),那么在机器出现故障的情况下,就一定要等待故障机器恢复了再对外提供服务,否则数据不一定是准确的,那么也就失去了分区容错性。

可用性是指实例挂掉一部分但是系统可用,分区容错是指不同服务之间网络出现问题,系统还是可用。

以实际的业务场景举例,一个社交分布式系统。有一个查询用户信息的接口,这个接口在用户服务里面,用户服务部署了多个节点,用户服务挂掉了一个节点,还有其它节点可用,也就满足了可用性(A)。

用户有积分。积分是另一个服务,查询用户信息的时候,用户服务要调用积分服务查询用户的积分,如果积分服务挂掉了,这个时候用户服务要继续对外提供服务,保持可用,那么一定要在用户服务里面存储用户积分。调用积分服务查询失败就直接用本地存储的积分信息。这就满足了分区容错,但是积分不一定准确,牺牲了一致性(C)。

如果要求积分一定是准确的,出现的现象则是用户服务对外提示积分服务不可用,请稍后再试。满足了可用性可一致性,但是牺牲了分区容错性(P)。

像积分还好,如果是金钱,一定是选择满足一致性,救过就是上面那种情况。

但是如果信息不是很敏感,就可以选择P,返回非即时的数据,比如新闻,博客。比如百度搜索到的结果,有的时候明明搜索出来了,但是点进去发现里面的数据和外面显示的不一样。这就是选择了AP。

如果大家觉得我解释还算通俗,希望大家能点个赞,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值