CAP理论:Consistency,Availability,Partition tolerance

对于一个分布式数据系统,CAP三要素不可兼得,至多实现其二。要么AP,要么CP,不存在CAP。分布式系统往往要求必须满足P。

传统关系数据库选择CA,NoSQL更关注AP。

CAP Reloaded:

关系数据库ACID原则:Atomicity,Consistency,Isolation,Durability;更强调数据一致性

NoSQL系统BASE原则:Basically Available,Soft state,Eventual consistency;更强调数据可用性

幂等性(Idempotent):

一致性模型分类:

副本更新策略:

延时和一致性做权衡

策略1-同时更新:

A 同一时刻的两个写请求,无法保证各副本操作顺序一致

B 通过某种一致性协议确定执行顺序

策略2-主从更新:

一个主副本(master replica),多个从副本(slave replica)。写主副本,主副本转发写给从副本,主副本决定写顺序。

A 同步方式:主副本等待所有从副本写完,视作操作完成。请求延时大

B 异步方式:主副本通知从副本写之前视作完成。应对主副本未通知前崩溃的情形:指定存储记录此次写操作(比如log文件)

1.读请求都转发给主副本:代价是高延时。eg:Chubby

2.所有副本可读:代价是弱一致。eg:PNUTS,Zookeeper

C 同异步混合:主副本同步写部分从副本,视作完成,异步写其他从副本

1.读的数据必须来自同步写的节点:强一致,高延迟

2.同1相反

策略3-任意节点更新:

A 同步通知:强一致,高延时

B 异步通知:弱一致,低延时

一致性协议:

两阶段提交(two-phrase commit,2PC)协议:

解决分布式事务问题:实现ACID中原子性(Atomicity)。eg:Raft一致性协议用其保证信息更新原子性。

存在3个阻塞态:协调者的WAIT态,参与者的INIT态、READY态

解决阻塞问题:

1 超时判断:协调者WAIT态若超时发Global-abort,参与者INIT态超时发Vote-abort

2 参与者互询:参与者READY态超时不能abort事务,因为不确定协调者下发表决信息,所以需要互询。

参与者P问参与者Q:

if Q=COMMIT then P:=COMMIT

if Q=ABORT then P:=ABORT

if Q=INIT then P:=ABORT

if Q=READY then P问其他参与者;最坏情形是其他参与者也都出于READY态,即长时阻塞(还好较少发生)

解决长时阻塞:协调者和参与者将自身状态写入本地log,崩溃重启根据log恢复。

向量时钟(vector clock)协议:

将时间戳和事件绑定进而判定事件因果依赖关系。

规则:

判断因果关系:

例子:

Dynamo使用向量时钟管理数据版本。

如有数据一致性冲突经向量时钟无法判定,则交给客户端(应用端)判定。

RWN协议:

R或W越大延迟越高。

可根据实际情况配置R和W的数值。

必须结合向量时钟配合达到强一致性。

Paxos协议:

1. 副本状态机模型(replicated state machines)

典型实现:Log副本方式

一致性协议作用是保证各个Log副本数据的一致性:一致性模块(consensus module)

2. Paxos基本概念

3. Paxos协议机制

学习者获取倡议:

Raft协议:

目标:可理解性,实现实际系统的确定性

基本概念

1. 领导者选举

2. Log复制

(注:项目即item)

3. 安全性

  Zookeeper Raft Chubby PNUTS Dynamo Cassandra Riak
介绍     Google Yahoo Amazon,NoSQL NoSQL 模仿Dynamo
操作 idempotent idempotent          
副本更新 master-slave read   master-slave async: read master master-slave async: read all master-slave sync+async master-slave sync+async master-slave sync+async
          exception: random exception: random exception: random
一致性协议         vector clock+RWN    

转载于:https://www.cnblogs.com/yaoyaohust/p/10678432.html

《大数据日知录》读书笔记-ch2数据复制与一致性相关推荐

  1. 大数据日知录(一)数据分片与路由

    概念     目前主流的大数据存储与计算系统通常采用横向扩展(Scale Out)的方式支持系统可扩展性,即通过增加机器数目来获得水平扩展能力.对于待存储处理的海量数据,需要通过数据分片(Shard/ ...

  2. 《BIG DATA大数据日知录 架构和算法》读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> <BIG DATA大数据日知录 架构和算法>读书笔记 博客分类: 架构 分布式计算 1.数据分片和路由 Hash ...

  3. 《大数据日知录:架构与算法》前言

       <大数据日知录:架构与算法>前言 像移动互联网.O2O.可穿戴设备等概念一样,"大数据"从甫一提出到飓风般席卷并风靡全球,从最初的技术名词到形成渗透各行各业的社会 ...

  4. 大数据日知录:架构与算法

    大数据丛书 大数据日知录:架构与算法(大数据领域专家力作,专注大数据架构和算法,全面梳理大数据相关技术) 张俊林 著   ISBN 978-7-121-24153-6 2014年9月出版 定价:69. ...

  5. 大数据丛书 大数据日知录:架构与算法

    大数据丛书 大数据日知录:架构与算法(大数据领域专家力作,专注大数据架构和算法,全面梳理大数据相关技术) 张俊林 著   ISBN 978-7-121-24153-6 2014年9月出版 定价:69. ...

  6. 大数据日知录要点整理

    大数据日知录要点整理 第0 章 当谈论大数据时我们在谈什么 1  NOSQL选型:kv-cassandra.dynamo,列式存储-HBase,图存储-Neo4j 社交网络数据存储适合用图数据库,而实 ...

  7. 博主新书:《大数据日知录:架构与算法》目录

    <大数据日知录:架构与算法>目录 4目录编辑 第0 章 当谈论大数据时我们在谈什么................ 1 0.1 大数据是什么........................ ...

  8. 大数据日知录_腾讯T4专家精心整理:java+大数据+机器学习+数据挖掘+算法大集结...

    前言 本篇文章总共八大部分组成,包括数据挖掘:概念.模型.方法和算法:大数据日知录:架构与算法:大数据算法:数据结构与算法经典问题解析:算法基础:打开算法之门:机器学习算法大集结:Java数据结构和算 ...

  9. 好书推荐--大数据日知录(深入理解大数据的必备书籍)附电子版下载

    今天给大家推荐一本大数据领域中必读的一本书,名字叫<大数据日知录-架构与算法> 这本书正如它封面中介绍的一样,全面梳理大数据相关技术,从数据.算法.策略.应用和系统架构等多个维度进行剖析, ...

  10. 从《大数据日知录》的目录想到的学习路径

    第0 章 当谈论大数据时我们在谈什么................ 1 第1 章 数据分片与路由......................................9 第2 章 数据复制与一 ...

最新文章

  1. ADMT3.2域迁移之Server2003至Server2012系列(八)生成密钥文件及安装密码迁移工具...
  2. 查mac对应ip的不同系统命令
  3. 使用感知机训练加法模型
  4. 【白话机器学习】算法理论+实战之支持向量机(SVM)
  5. 阿里安全猎户座实验室(Alibaba Orion Security Lab)简介
  6. php 之 json格式
  7. avc水平什么意思_5个步骤切实有效地提高你的写作水平
  8. 洛谷P1134 阶乘问题[数论]
  9. 去除CAJviewer右上侧的广告栏位去除CAJviewer右上侧的广告栏位
  10. 【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)
  11. Dockerfile中ADD文件用法
  12. leetcode174.地下城游戏
  13. 如何快速撰写文章—伪原创
  14. 欺诈检测_签名欺诈检测-一种高级分析方法
  15. 解决笔记本光驱位硬盘休眠卡顿问题
  16. Android编译chromium
  17. 宁愿离职,也不要待在这样的公司、做这样的工作!
  18. type=submit表单提交理解
  19. mysql sql注入工具_SQL注入工具实践
  20. 转载:哈佛大学精神病测试题(笑话)

热门文章

  1. 联想等7家企业遭美“337调查”
  2. 为什么单点登录更有优势?与密码管理器相比
  3. 动态规划入门——记忆化搜索
  4. MySQL简单表的数据_MySQL(二)表的操作与简单数据操作
  5. echarts 世界地图标点_Echarts自定义实现标点地图
  6. 20100919_Dawning_JTable测试
  7. Problem B: 第K位数字
  8. java连接不上ftp_解决ftp无法连接登录linux的办法
  9. Redis-高并发缓存问题及解决方案
  10. Python 虚拟机安装步骤