分布式系统CAP和Base

一、分布式系统

1.1 简介

    由多台计算机和通讯的软件组件经过计算机网络链接(本地网络或广域网)组成。分布式系统是创建在网络之上的软件系统。正是由于软件的特性,因此分布式系统具备高度的内聚性和透明性。所以,网络和分布式系统之间的区别更多的在于高层软件(特别是操做系统),而不是硬件。分布式系统能够应用在在不一样的平台上如:Pc、工做站、局域网和广域网上等。服务器

1.2 分布式系统和集群

    分布式:每一个服务节点上面部署不一样的服务模块(工程),他们之间经过Rpc/Rmi之间通讯和调用,对外提供服务和组内协做。网络

    集群:不一样的多台服务器上面部署相同的服务模块,经过分布式调度软件进行统一的调度,对外提供服务和访问。架构

二、CAP和Base

2.1 CAP理论

    CAP指的是:一致性(C)Consistency、可用性(A)Avaliability、分区容错性(P)Partition tolerance。这是分布式系统中著名的CAP定理。这三个特性在任何分布式系统中不能同时知足,最多同时知足两个。分布式

2.1.1 一致性

   即更新操做成功并返回客户端完成后,全部节点在同一时间的数据彻底一致。网站

2.1.2 可用性

    可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每个操做请求老是可以在有限的时间内返回结果。这里的重点是"有限时间内"和"返回结果"。搜索引擎

    "有限时间内"是指,对于用户的一个操做请求,系统必须可以在指定的时间内返回对应的处理结果,若是超过了这个时间范围,那么系统就被认为是不可用的。另外,"有限的时间内"是指系统设计之初就设计好的运行指标,一般不一样系统之间有很大的不一样,不管如何,对于用户请求,系统必须存在一个合理的响应时间,不然用户便会对系统感到失望。spa

    "返回结果"是可用性的另外一个很是重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果一般可以明确地反映出队请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。操作系统

2.1.3 分区容错性

    分区容错性约束了一个分布式系统具备以下特性:分布式系统在遇到任何网络分区故障的时候,仍然须要可以保证对外提供知足一致性和可用性的服务,除非是整个网络环境都发生了故障。计算机网络

    网络分区是指在分布式系统中,不一样的节点分布在不一样的子网络(机房或异地网络) 中,因为一些特殊的缘由致使这些子网络出现网络不连通的情况,但各个子网络的内部网络是正常的,从而致使整个系统的网络环境被切分红了若干个孤立的区域。 须要注意的是,组成一个分布式系统的每一个节点的加入与退出均可以看做是一个特殊的网络分区。架构设计

2.1.4 取舍

    既然一个分布式系统没法同时知足一致性、可用性、分区容错性三个特色,因此咱们就须要抛弃同样:

用一张表格说明一下:

选    择 说    明
CA

若是但愿可以避免系统出现分区容错性问题,一种较为简单的作法是将全部的数据(或者仅仅是哪些与事

务相关的数据)都放在一个分布式节点上。这样作虽然没法100%保证系统不会出错,但至少不会碰到由

于网络分区带来的负面影响。但同时须要注意的是,放弃P的同时也就意味着放弃了系统的可扩展性

AP

这里所说的放弃一致性,实际上指的是放弃数据的强一致性,而保留数据的最终一致性。这样的系统没法

保证数据保持实时的一致性,可是可以承诺的是,数据最终会达到一个一致的状态。

CP

一旦系统遇到网络分区或其余故障或为了保证一致性时,放弃可用性,那么受到影响的服务须要等待必定

的时间,所以在等待期间系统没法对外提供正常的服务,即不可用

    须要明确的一点是,对于一个分布式系统而言,分区容错性是一个最基本的要求。由于既然是一个分布式系统,那么分布式系统中的组件必然须要被部署到不一样的节点,不然也就无所谓分布式系统了,所以必然出现子网络。而对于分布式系统而言,网络问题又是一个一定会出现的异常状况,所以分区容错性也就成为了一个分布式系统必然须要面对和解决的问题。所以系统架构师每每须要把精力花在如何根据业务特色在C(一致性)和A(可用性)之间寻求平衡。

 

2.1.5 示例:

2.1.5.1 CA

      假设DB的更新操做是同时写北京和广州的DB都成功才返回成功
      在没有出现网络故障的时候,知足CA原则,C 即个人任何一个写入,更新操做成功并返回客户端完成后,分布式的全部节点在同一时间的数据彻底一致, A 即个人读写操做都可以成功,可是当出现网络故障时,我不能同时保证CA,即P条件没法知足


 2.1.5.2 AP 

      假设DB的更新操做是只写本地机房成功就返回,经过binlog/oplog回放方式同步至侧边机房
      这种操做保证了在出现网络故障时,双边机房都是能够提供服务的,且读写操做都能成功,意味着他知足了AP ,可是它不知足C,由于更新操做返回成功后,双边机房的DB看到的数据会存在短暂不一致,且在网络故障时,不一致的时间差会很大(仅能保证最终一致性)

2.1.5.3 CP
      假设DB的更新操做是同时写北京和广州的DB都成功才返回成功且网络故障时提供降级服务
      降级服务,如中止写入,只提供读取功能,这样能保证数据是一致的,且网络故障时能提供服务,知足CP原则,可是他没法知足可用性原则

2.2 BASE理论

    BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即便没法作到强一致性,但每一个应用均可以根据自身业务特色,采用适当的方式来使系统达到最终一致性。

2.2.1 基本可用

    基本可用是指分布式系统在出现不可预知故障的时候,容许损失部分可用性----注意,这毫不等价于系统不可用。好比:

(1)响应时间上的损失。正常状况下,一个在线搜索引擎须要在0.5秒以内返回给用户相应的查询结果,但因为出现故障,查询结果的响应时间增长了1~2秒。

(2)系统功能上的损失:正常状况下,在一个电子商务网站上进行购物的时候,消费者几乎可以顺利完成每一笔订单,可是在一些节日大促购物高峰的时候,因为消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面,以下:

 

2.2.2 软状态

    软状态指容许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的总体可用性,即容许系统在不一样节点的数据副本之间进行数据同步的过程存在延时。

2.2.3 最终一致性

    最终一致性强调的是全部的数据副本,在通过一段时间的同步以后,最终都可以达到一个一致的状态。所以,最终一致性的本质是须要系统保证最终数据可以达到一致,而不须要实时保证系统数据的强一致性。

2.2.3 总结

    总的来讲,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,它彻底不一样于ACID的强一致性模型,而是经过牺牲强一致性来得到可用性,并容许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不一样业务单元和组件对数据一致性的要求是不一样的,所以在具体的分布式系统架构设计过程当中,ACID特性和BASE理论每每又会结合在一块儿。

相关文章
相关标签/搜索