NoSql(四) 在分布式数据库中CAP原理 CAP + BASE

1: 传统的ACID是什么? 

    A (Atomictiy[,ætə'mɪsɪti]) 原子性

    C (Consistency[kən'sɪstənsi])一致性

    I  (Isolation) 独立性

    D (Durability) 持久性

2:  CAP

    C: Consistency 强一致性  例如:数据稍微不对一点, 例如点赞数10万和10万1千的区别

    A: Availabity 可用性  例如:网站不能挂

    P: Partition tolerance 分区容错性  例如: 机房的数据要相同

3: CAP的三进二

    一个分布式系统不可能同事很好的满足 一致性, 可用性和分区容错性三个需求, 最多只能同时较好的满足两个.

   CA - 单点集群, 满足一致性, 可用性系统, 通常扩展性不是很强大

  CP - 满足一致性, 分区容错性 系统, 通常性能不好

  AP - 满足可用, 分区容错性的系统, 通常对一致性的要求略低


分区容错性(P: Partition tolerance)是我们必须实现的!!

AP, 大多数网站架构的选择, 因为高可用非常重要!

CP,  Redis

一致性和高可用的抉择!

数据库事务一致性需求:    很多web实时系统并不要求严格的数据库事务, 对读一致性要求很低, 有些场合对写一致性很低,允许实现最终一致性.

    数据库的写实时性和读实时性需求:

            对于关系型数据库来首说, 插入一条数据库立刻查询,是肯定可以读出来这条数据的, 但是对于很多web应用来说,并不需要这么高的实时性, 例如对方发一条信息之后, 过几秒乃至十几秒后, 我的订阅者才看到这条动态是完全可以接受的


4 BASE

BASE 其实是下面三个术语的缩写,他是为了解决关系型数据库一致性的问题引起的可用性降低的解决方案

     基本可用 Basically Available 

     软状态 soft state

     最终一致 Eventually consistent

    它的思想是让系统放松对某一时刻数据一致性的需求来换取系统整体伸缩性和性能上的改, 为什么这么说呢, 原有就在于:

大型系统往往由于地域分布和极高性能的要求, 不可能采用分布式事务来完成这些指标, 要想获得这些指标, 我们必须采用另一种方式来完成, 这里BASE就是解决这个问题的方法


5 分布式 + 集群简介

简单来说: 分布式, 不同的服务器部署不同的服务模块, 他们之间通过rpc通信调用

               集群, 不同服务器部署相同服务模块