`
hougbin
  • 浏览: 502459 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

CAP 和 BASE 2

阅读更多

CAP

CAP理论是由Brewer远在2000年的PODC会议上提出来的。CAP指的是:Consistency、Availability和Partition Tolerance,下面简述此三者:

1、Consistency(一致性):一致性是说数据的原子性,这种原子性在经典的数据库中是通过事务来保证的,当事务完成时,无论其是成功还是回滚,数据都会处于一致的状态。在分布式环境中,一致性是说多点的数据是否一致。

2、Availability(可用性):可用性是说服务能一直保证是可用的状态,当用户发出一个请求,服务能在有限时间内返回结果。而这种可用性是不关乎结果的正确与否,所以,如果服务一致返回错误的结果,其实也可以称为其是可用的。

3、Partition Tolerance(分区容忍性):Partition这个词不是常说的操作系统或数据库中的用语,而是指网络的分区。网络中的两个服务结点出现分区的原因很多,比如网络断了、对方结点因为程序bug或死机等原因不能访问。

对于CAP三者,Brewer给出的结论是三者在分布式环境中不能鼎力,一个分布式系统只能有限的实现两者要求,并且这个结论又被另一高人证明了一番。

一致性问题

一致性可分为强一致性和弱一致性,弱一致性又称为最终一致性。

在单机环境中,强一致性可以由数据库的事务保证。但在多机环境中,强一致性就很难做到。尽管可以使用2PC来实现分布式事务,但它的低性能(很多情况下满足不了可用性需求)使得不适合于互联网应用。这种强一致性效果的取得,其实是让提交处理过程同步化。

在多机环境中,通过使提交处理半同步半异步、或者全异步,取得最终一致性效果。例如数据库中的主从复制,在提交时就是主库同步从库异步,这对从库复制进度落后不多的场景很简单有效,但在从库落后主库很多时,如果应用还从从库读数据,就会读出脏数据,可以通过监控从库复制进度来选择读哪个从库以避免这个问题。在NOSQL模式下,以Dynamo为例,可以通过确定NRW的不同取值,可以做到同步、半同步半异步、或者全异步的效果。

最终一致性使得数据的提交效果具有延时性,而在一定的延时性范围内(比如1秒以内),应用的可用性就是OK的,比如提交后在客户端通过JS等停一段时间刷新页面就是要取得这种效果。

主从OR对等系统

像数据库这样的主从系统有着广泛的应用,它很适合于提交压力不会使得从库复制明显落后的场景。它的缺点是,当主从提交压力增大、或者存在耗时长的提交命令时,从库复制进度会明显落后于主库。在Cache+DB的应用场景下,Cache的填充时机和策略也会受到主从模式影响。如果在一个Session中提交DB后作废Cache,而由后续的(或并发的)另一个Session来再次设置Cache、并且数据是从从库获取,就很有可能缓存住脏数据,如果Cache时间很长,那问题可能就很严重了。可以变通的策略是,在一个Session中提交DB后不是作废Cache,而是更新Cache,并且数据是从主库获取或者直接从应用环境获取。主从的另一个问题是,它有提交单点,但是,如果主从能满足应用需要,在具有完备的主备切换的保证下,这个单点问题并不见得有多大。

因为Dynamo的时兴,对等系统成为另一种选择。对等系统解决了单点问题,有着高分区容忍性,但它的效果仍得商榷。NRW的不同取值会影响读写数据效果,多点提交带来的冲突解决也是个问题,尽管通常采用高版本替换低版本的粗暴策略。现在的NOSQL对等系统存储的是简单的kv,并且可以采用加机器来扩容,所以性能方面应该是可接受的(尽管常见的单机kv存储性能要比数据库高很多,但在对等系统中,因为其复杂性,换算下来单机的性能并不见得有多高)。

SQL和NOSQL各有其优缺点。如果存储一些实体数据并且查询提交只是根据唯一标识来,使用NOSQL也许就很合适。但像复杂的关系数据,使用SQL就更合适些。而就提交模式来说,如果并发提交的数据隔离性不好(比如需要同时对同一个数值做更新),那么对等系统的提交冲突就会增多,数据的正确性就会受到影响。

BASE

上面提到,在分布式环境中,CAP只能取两者。但是,因为网络分区的情况不可避免,并且它对可用性有着重要影响,所以互联网中的分布式系统多在一致性方面做些折中。虽然不能达到强一致性,但可以根据应用特点采用适用的手段来达到够用的一致性效果。比如,对于微博系统,当用户新增一条消息,能够达到用户能看到刚才发的消息、而他的follower们能在尽快时间看到他新发的消息的效果就可以了。而在实现时,就可以结合同步和异步多种策略、SQL+NOSQL多种存储方案来满足应用需要。

BASE(Basically Available、Soft state、Eventually consistent)是对CAP中的AP的延伸。

在单机环境中,ACID是数据的属性;而在分布式环境中,BASE就是数据的属性。ACID有“尖刻”之含义,所以单机环境的数据有着很高的要求。而因为分布式环境的网络分区性及复杂性,对数据也只能有“基本”的要求了。

从ACID到CAP和BASE,从单机到分布式,从SQL到NOSQL,互联网应用的大规模发展促使不断出现可替代旧方案的新技术。在技术选型方面,重要的是根据自己的应用特点选择自己能驾驭的技术。而现实的应用场景,也大多是多种技术方案的结合

分享到:
评论

相关推荐

    【总结】ACID、Data Replication、CAP与BASE

    标题中提到的“ACID”、“Data Replication”、“CAP”与“BASE”是数据库领域内的核心概念和理论。在详细解释这些知识点之前,我们先来梳理一下各自的基本含义。 ACID代表原子性(Atomicity)、一致性...

    CAP原理和BASE思想.docx

    CAP原理和BASE思想是分布式系统设计的重要理论基础,它们帮助开发者在一致性、可用性和分区容错性之间做出明智的决策。而NoSQL运动则提供了更多适应现代分布式环境的数据存储解决方案,这些解决方案通常基于BASE思想...

    分布式系统一致性(ACID、CAP、BASE、二段提交、三段提交、TCC、幂等性)原理详解1

    在本文中,我们将深入探讨几种重要的理论和实践方法,包括ACID特性、CAP定理、BASE原则,以及几种常见的分布式事务处理协议:二段提交、三段提交和TCC(Try-Confirm-Cancel)模式,同时也会提到幂等性这一关键概念。...

    CAP、BASE、ACID区分

    CAP、BASE、ACID区分 一、CAP CAP是分布式计算领域的公认定理。 1、一致性(Consistency) all nodes see the same data at the same time 在同一时间看见所有节点的数据是一致的 所有节点返回的数据都是一样的,...

    sunweiguo#swgBook-for-spring-cloud#Zookeeper笔记01-CAP和BASE理论1

    前言学习zookeeper才算是真正跨进分布式这个大门。比较经典的应用是可以作为dubbo推荐的注册中心。首先,我们必须要明确几个我们之前可能不会遇到的但是在分

    OceanBase企业级数据库介绍.pptx

    OceanBase 支持分布式事务,使用 Paxos + 2PC 协议来确保事务的一致性和可靠性。该协议可以确保在分布式系统中,事务的提交和回滚能够正确执行。 CAP 理论: OceanBase 遵循 CAP 理论,即一致性、可用性和分区容忍...

    CAP理论+BASE理论

    CAP理论:一个分布式系统不可能同时满足一致性(Consistence)、可用性(Availability)、分区容错性(Partition tolerance),最多只能同时满足两个(CA / CP / AP)。 一致性(Consistence):在某个写操作完成后...

    移动网络MAP、CAP协议介绍

    本PPT文档主要聚焦于MAP(Mobility Application Protocol)和CAP(CAMEL Application Part)协议,这两种协议在GSM和WCDMA网络中扮演着至关重要的角色。 首先,我们来看看GSM网络结构。GSM,全称Global System for ...

    OceanBase企业级分布式数据库介绍.pdf

    OceanBase支持分布式事务,使用Paxos + 2PC协议来保证事务的一致性和可靠性。 Paxos协议 Paxos协议是一种分布式一致性协议,用于解决分布式系统中的数据一致性问题。它可以确保分布式系统中的数据是一致的,避免...

    七号信令网基础(MAP、CAP、BSSAP、GPRS、CDMA)

    这一网络涉及到多种协议和技术,包括MAP(Mobile Application Part)、CAP(Call Agent Protocol)、BSSAP(Base Station System Application Part)以及GPRS(General Packet Radio Service)和CDMA(Code Division...

    Taobao oceanbase代码

     从Eric Brewer教授的CAP(一致性C: Consistency, 可用性A: Availability,分区容错性P: Tolerance of network Partition)理论角度分析,作为电子商务企业,淘宝和其他公司的业务对一致性和可用性的要求高于分区...

    CAP Twelve Years Later——How the 'Rules' Have Changed

    在IT行业中,CAP定理是分布式系统设计中的一个基础理论,...因此,理解CAP并不仅仅是为了遵循一个“2 of 3”的选择,而是为了更好地理解系统的需求和限制,以设计出能够适应各种网络条件和业务需求的高可用分布式系统。

    2013年中国数据库大会-11-NoSQL一致性实践:我对CAP的一点认识

    CAP定理的历史沿革从1997年Fox和Brewer提出BASE概念开始,1999年他们又提出了CAP原理,直到2000年在PODC会议上正式提出CAP定理。2002年,Seth Gilbert和Nancy Lynch正式证明了CAP定理的可行性。CAP定理的流行得益...

    OceanBase:云时代企业级分布式数据库的技术挑战.pdf

    传统的两阶段提交(2PC)协议在分布式环境中存在阻塞和单点故障的风险,因此,现代云时代的架构选择了Paxos协议和2PC的结合来实现更可靠的分布式事务。Paxos通过多数派共识机制保证高可用性,而CAP定理指出在分区...

    业务多活架构和分布式CAP实战.docx

    Oceanbase通过创新的数据复制和冲突解决机制,力求在保证强一致性的前提下,提供高可用的服务,从而在一定程度上实现了对CAP理论的优化。 总的来说,业务多活架构和分布式CAP理论实战涉及了系统设计中的核心问题,...

    分布式论文:CAP Twelve Years Later: How the ‘Rules’ Have Changed

    - **“2 out of 3”理解误区**:通常人们认为,在面对分区时,只能选择一致性和可用性中的两个。但实际上,这一理解过于简化。例如,在某些情况下,即使无法完全避免分区,也可以通过特定的设计策略来优化一致性或...

    Brewer’s CAP Theorem.pdf

    As a result new principles were developed, summed up under the BASE-paradigm (basically available, soft-state, eventual consistency). Brewer analyzed the consequences of this paradigm change and its ...

    CAP理论1

    CAP理论是分布式系统设计中的重要概念,由Eric Brewer教授提出,它揭示了在分布式环境中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)这三个基本需求之间的权衡关系。...

    CAP理论与分布式数据库[归纳].pdf

    分布式数据库的挑战来自于 CAP 理论的限制,但通过采用 BASE 模型和 NoSQL 数据库,可以实现高可用性和扩展性。VoltDB 和 MySQL Cluster 是分布式数据库的代表,NoSQL 数据库也提供了多种选择。

    PyPI 官网下载 | psu-base-0.12.0.tar.gz

    如果`psu-base`包含了与分布式系统相关的功能,那么理解分布式系统的设计原理和挑战,如CAP理论、分布式一致性等,将有助于更好地利用这个库。此外,查看库的官方文档、示例代码和社区讨论,可以帮助我们快速掌握其...

Global site tag (gtag.js) - Google Analytics