分布式理论

2020-08-09  本文已影响0人  晚歌歌

分布式系统的CAP定律

在分布式系统里面有一个CAP定律,这个定理的内容是指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(Availability):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容错性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
CAP定律是NoSQL数据库的基石,而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点,而NoSQL则选了可用性。
NoSQL数据库主要做的是简单的键值查询,因此NoSQL系统通常注重性能和扩展性,而非事务机制(事务就是强一致性的体现)

CAP为什么只能同时满足2个

分区容错性P其实就是每个服务都会部署多个节点,这样就可以保证此服务的一个节点挂了之后,此服务的其他节点依然可以响应,这就是分区容错性。 但是一个服务有多个节点之后,一个服务的多个节点之间的数据为了保持一致性就要进行数据复制,在此过程中就会出现数据一致性C(强一致性)的问题。 (数据一致性包含强一致性,弱一致性,最终一致性,这里指的是强一致性) 如果一定要保持一致性C,可以不做分区,即每个服务都是单节点,这样就不用考虑数据一致性问题了,但是每个服务只有一个节点,此节点挂了,此服务就能不可用了,分区就不能容错了,那就不是高可用分布式系统了,所以一般分布式系统都必须满足分区容错性P。 在满足了分区容错性P后,想要满足一致性C,一个服务的多个节点之间就必须进行数据复制达到数据一致之后再返回给调用者响应,然而在多个节点数据复制的过程中,可能节点之间会出现网络等问题使得数据复制阻塞或失败导致响应超时,服务调用失败,这就失去了系统的可用性A。 如果不强制满足强一致性,那在服务被调用的时候不用管数据复制的问题,直接返回响应,这就满足了可用性,但是由于此服务的多个节点数据可能没有完成复制,节点数据可能不一致,这就失去了系统的一致性。 结论:一个高可用的分布式系统分区容错性P是一定要满足的,在此基础上,只能满足可用性A或者一致性C。

一致性理论

通过上面介绍我们知道,对分布式系统来说,CAP 理论告诉我们。为了下一步讨论分布式事务特性,先简单介绍下数据一致性的基础理论。

分布式事务特性—最终一致性

在互联网大型分布式平台场景中,为了保障系统的可用性,他们一般会把强一致性的需求转换成最终一致性的需求。所以,对于大部分分布式事务场景,我们仅需要保证最终一致性即可。

BASE理论

eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。

BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。

上一篇 下一篇

猜你喜欢

热点阅读