13 CAP理论和base理论

CAP理论解释
C: consistency(一致性)。指数据在多个副本之间能够保持一致的特性(强一致性)
A: availability(可用性)。一个系统提供的服务必须一直处于可用的状态,每次请求都能够获取到非错误的响应(不保证获取的数据为最新的数据)
P: partition tolerance(分区容错性)。分布式系统在遇到部分网络分区故障的时候,仍能对外提供满足一致性和可用性的服务(整个网络瘫痪除外)。

我们用到的springcloud主要满足A和P法则,dubbo和zookeeper主要满足C和P法则。

CAP理论提到:当发生网络分区之后,那么强一致性和可用性只能选择一种对外提供服务。有了网络分区的分区容错性之后§的前提条件下,我们选择强一致性或可用性对外提供服务,如果一致性和可用性都要满足的情况下,就只能返回错误的提示信息给到用户。
分布式系统还有其他的一些特性需要我们在系统设计的时候需要考虑,不单纯的是CAP的满足。

CAP的简单证明

我们假设一个分布式系统中有A和B两个节点,分别对应着AA和BB数据库。
满足一致性的要求:AA数据库的数据和BB数据库的数据保持一致。
可用性的要求:用户不管访问到A节点的服务还是B节点的服务都可用获取到正确的结果
分区容错性的要求:无论在A和B宕机获取是A和B网络通信中断的情况下,都不影响系统的运行。

我们试想一下:假如A和B节点的网络通信中断了,在满足分区容错性的前提下,如果要保持AA和BB库的数据一致,那么就需要等待A和B节点的通信恢复,如果满足可用性,那么在A和B通信不可用的情况下,就会返回不一致的数据。可见我们的一致性和可用性是不能同时满足的。CAP只能满足其中两个

base理论

base理论是basically available(基本可用)、soft state(软状态)、eventually consistent(最终一致性)三个短语的缩写。base理论是基于大规模互联网分布式实践的结果,降低了我们对系统的要求。是由ebay架构师dan pritchett提出。

base理论的核心思想:即使我们的系统无法做到强一致性,但每个应用根据具体的业务达到最终一致性的。可用牺牲系统的一致性来满足系统的高可用特性。系统中部分数据不可用或者不一致时候,也需要保持系统的大体可用。

base理论对于数据库相关的论述提到对业务数据进行拆分,让不同的数据分在不同的机器上,提升系统的性能。目前主要是按照垂直拆分数据和数据分片到不同的数据库实例中。
由于数据拆分后涉及到分布式事务的问题,base理论阐述怎么用最终一致性来满足高性能的分布式事务问题。

基本可用性:基本可用指在一个分布式系统中如果出现不可预知的问题时,允许损失部分可用性,但是系统整体是可用的。
例如:响应时间的损失,可能增加查询的响应时间。或者是系统中部分功能(不是特别重要的功能不可用),或者部分用户的不可用(例如秒杀系统中,为了保证秒杀系统的整体可用会有部分用户被引导到一个降级的页面)

软状态:我们的数据在不同的数据存储中,会有延迟同步的情况,我们允许数据在不同存储副本中有延迟的可能

最终一致性:我们在不同的数据副本中在经过一段时间后达到最终一致的状态,不需要达到实时的一致性要求

你可能感兴趣的:(系统架构)