微服务之CAP定理

### 介绍
分布式系统中有三个方面需要权衡:
- 一致性(consistency)
- 可用性(availability)
- 分区容忍性(partition tolerence)

一致性是指当访问多个节点时返回相同的值。可用性是指每个请求都应该得到响应。分区容忍性指某些节点失效后,集群依然能够提供服务。

但是CAP定理并不是以上三个条件,而是告诉我们实际情况中最多满足三个条件中的两个。那么,为什么只能满足其中两个呢?

为什么?

当分布式系统数据没有副本时,三者都是可以满足的。但是当出现副本时,当机器宕机,其中一台便得不到响应,此时可用性必然满足不了,也种情形也就是CP系统。

假如机器没有宕机,而是数据与副本之间的网络断开了,此时数据与副本之间的信息便无法同步,从而两台机器得到的响应结果必然不同,此时就违背了一致性,我们也就得到了AP系统。

那是否存在CA系统呢?如果分布式系统不打算满足某节点失效后集群依然可用,那这个系统就没有任何意义了,所以我们一般情况只在CP与AP系统之间选择。

到底是选择CP还是AP呢?

我们知道,CP对一致性的要求很高,而AP相对较弱。在《微服务设计》中提到:

对于库存系统,如果一个记录过时了5分钟,这可接受吗?如果答案是肯定的,那么解决方案可以是一个AP系统。但对于银行客户的余额来说呢?能使用过时的数据吗?如果不了解操作的上下文,我们无法知道正确的做法是什么。

所以,使用AP或CP系统完全取决于具体的应用场景,当对一致性的要求不高时,我们可以使用AP系统。当要求强一致性时,我们可以选择CP系统。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值