在分布式数据库中CAP原理CAP+BASE

CAP principle CAP+BASE in distributed database

Posted by Jin on October 4, 2017

传统的ACID

  • A(Atomicity)原子性
  • C(Consistency)一致性
  • I(Isolation)独立性
  • D(Durability)持久性

CAP

  • C(Consistency)强一致性
  • A(Availability)可用性
  • P(Partition tolerance)分区容错性

CAP的3进2

  • CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点
  • C:强一致性 A:高可用性 P:分布式容忍性
    CA 传统Oracle数据库
    AP 大多数网站架构的选择
    CP Redis、Mongodb
    注意:分布式架构的时候必须做出取舍,一致性和可用性之间取一个平衡。多余大多数web应用,其实并不需要强一致性。因此牺牲C换取P,这是目前分布式数据库产品的方向。

CAP理论核心

CAP理论的核心是:一个分布式系统不可能同时很好地满足一致性,可用性和分区容错性这三个要求,最多只能同时较好地满足两个。因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:

  • CA 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP 满足可用性,分区容忍性的系统,通常可能对一致性的要求低一些。

BASE

BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE其实是下面三个术语的缩写:

  • 基本可用(Basically Available)
  • 软状态(Soft state)
  • 最终一致(Eventually consistent)

它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里BASE就是解决这个问题的办法。

分布式、集群简介

分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上如:PC、工作站、局域网和广域网上等。
简单来讲:

  1. 分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内写作。
  2. 集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。