微服务之CAP定理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/enoch612/article/details/82079180

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

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

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

为什么?

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

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

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

到底是选择CP还是AP呢?

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

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

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

猜你喜欢

转载自blog.csdn.net/enoch612/article/details/82079180
今日推荐