文档章节

4. 分布式数据库CAP原理:CAP+BASE

d
 double大宝
发布于 2017/02/20 23:42
字数 1333
阅读 71
收藏 1

1. 传统数据库的ACID

    A (Atomicity) 原子性

    C (Consistency) 一致性

    I (Isolation) 独立性

    D (Durability) 持久性

2. CAP

    C: Consistency(强一致性)

    A: Availability(可用性)

    P: Partition tolerance(分区容错性)

3.CAP的3进2

    CAP理论的核心是:一个分布式系统不可能同事很好的满足一致性,可用性和分区容错性这三个需求。

    CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。
    而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。

    所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。
 
    C:强一致性 A:高可用性 P:分布式容忍性
     CA 传统Oracle数据库
     AP 大多数网站架构的选择
     CP Redis、Mongodb


     注意:分布式架构的时候必须做出取舍。
    一致性和可用性之间取一个平衡。多余大多数web应用,其实并不需要强一致性。
    因此牺牲C换取P,这是目前分布式数据库产品的方向
=======================================================================================================================
    一致性与可用性的决择
    对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地
    数据库事务一致性需求 
  很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低, 有些场合对写一致性要求并不高。允许实现最终一致性。


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


对复杂的SQL查询,特别是多表关联查询的需求 
  任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

最多只能同时较好的满足两个

    因此,根据CAP原理将NoSQL数据库分成满足CA原理、满足CP原理和满足AP原理三大类:

    CA:单点集群,满足一致性、可用性的系统,通常在可扩展性上不太强大。

    CP:满足一致性、分区容错性的系统,通常性能不是很高。

    AP:满足可用性、分区容错性的系统,通常可能对一致性要求低一些。

    

    CAP理论就是说在分布式存储系统中,最多只能实现上面的亮点。

    而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要实现的。

    CA:传统的Oracle数据库

    AP:大多数网站架构的选择

    CP:Redis、Mongodb

4. BASE

BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。


BASE其实是下面三个术语的缩写:
    基本可用(Basically Available)
    软状态(Soft state)
    最终一致(Eventually consistent)


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

5.分布式+集群简介

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


简单来讲:
1分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。


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

© 著作权归作者所有

d
粉丝 2
博文 86
码字总数 43479
作品 0
贵港
私信 提问
NoSQL-Redis入门(一)

从这篇开始记录Redis相关知识: 1 NoSQL是什么? 1.1 NoSQL特性 1.1.1 易扩展 1.1.2 大数据量与高性能 1.2 RDBMS vs NoSQL 1.2.1RDBMS 1.2.1.1 高度组织化结构数据 1.2.1.2 结构化查询语言(...

markfork
2016/10/23
0
0
从RDBMS到NoSQL的架构演化

从RDBMS到NoSQL的架构演化 互联网时代背景下大机遇,为什么用nosql 1 单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静...

浮躁的码农
2017/11/06
65
0
redis笔记 (番外篇)——从RDBMS到NoSQL的架构演化及CAP原理

从RDBMS到NoSQL的架构演化 互联网时代背景下大机遇,为什么用nosql 1 单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。 在那个时候,更多的都是静...

HappyBKs
2017/10/28
219
0
MongoDB

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。 在现代的计算系统上每天网络上都会产生庞大的数据量。 这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。 1970年 E.F.Codd...

5431039
2016/04/17
0
0
2019年给自己定的几个任务和几个小目标

本帖写给自己,新的计划新的目标 1、熟读3本技术书籍和1本心灵鸡汤书籍。 2、深入理解JVM原理,多线程,并发。 3、深入学些NIO,Netty框架。 4、深入学习分布式基本原理(一致性,三高,CAP...

lemonLove
02/12
36
0

没有更多内容

加载失败,请刷新页面

加载更多

记一次项目启动报java.lang.StackOverflowError

项目是spring boot,之前没有问题,突然有一次debug方式启动的时候报这个错误。 因为其他同事没有问题,线上也没有问题,所以先排除了是代码问题。 开始以为电脑开的软件太多,然后给jvm的内存...

chro008
30分钟前
12
0
idea 2019.2免费激活码

亲测有效到2020.6 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb......

Iverson58
37分钟前
13
0
移动APP开发中的重要注意事项

您的移动app在变化吗?如果没有,请确保遵循这些提示进行移动app开发。大多数行业的IT领导者都优先考虑劳动力和消费者的移动性。实现成功的移动app开发具有挑战性,涉及在app功能开发的基础上...

a429011717
44分钟前
6
0
Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
今天
12
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部