当前课程知识点:大数据系统基础 > 6. NoSQL > 授课视频 > 数据副本及一致性
数据副本是大数据系统
普遍采用的提高系统读性能
并保证系统可靠性的重要手段
现在我们学习Cassandra
数据副本及其一致性
当数据被重复存储在
两个以上节点时
我们称数据是副本存储的
全副本
是指数据对象存储在所有节点上
全冗余数据库
就是在每一个节点上
都存储一个完整的数据库
当然一般情况下
我们并不把所有的数据
都存储在所有的节点上
我们把数据重复存储的次数
称为副本因子
在Cassandra中
实现了不同的副本策略
包括简单策略
也就是复制数据副本
到协调者节点的
N-1个后继节点上
第二种是 机架感知策略
也就是在不同机架中
选择存放副本的机器
还有数据中心感知策略
它类似于机架感知策略
只是在数据中心的层面上
作出不同副本的存储的选择
副本可以带来很多的好处
包括可用性 并行化
和减少数据的传输
在这里就不详细展开论述了
但是副本也带来了一些负担
比如增加了更新的成本
数据r的所有副本
都需要被更新
第二增加了并发控制的复杂度
并发更新不同的副本
一定会产生不一致的数据
这样 我们就需要特殊的
并发控制策略
那么这些副本是如何
存放在不同的节点上
上一节我们讲过
Cassandra通过一致性哈希
将数据集分段到不同节点上
现在我们要考虑
数据副本的情况
假如副本因子等于3
这时在数据象的Key1
就会保存在节点
A F和B三个节点上
不是一般性
Cassandra的副本策略
可以归纳为
在副本因子为N的情况下
在数据象顺时针方向的N个节点
保存着该数据项的副本
同样前面讲过
一致性哈希带来的好处
考虑到副本的存在
我们需要同时考虑
更新副本本身及其副本节点
以及当节点加入和退出时
这些副本在不同节点上的
重新的迁移
当节点离开时
节点存储的数据将不可用
它将被复制到其他的节点上
当一个新节点加入时
其他节点将不再对一些数据负责
因为当用户请求时
对应的数据和请求
不会被哈希到原有的节点上
这里我们先看一个示例
当节点X加入系统时
它被哈希到节点A和B之间
这时节点H和A和B
将它的一部分数据
传递到新节点X
同时节点B C D会删除数据段
下面再考虑当节点F
加入到系统中来
数据集的变化情况
我们看原来有五个节点
分别管理1-5个数据段
当F节点加入后
整个数据环被切分成六段
那么这六段数据
在这六个节点当中的重新分布
如图所示
下面考虑节点迁出的情况
节点B由于系统崩溃等原因
脱离了集群
这时节点C D E就会负责新的
哈希区间
同时集群内部的区间
会被重新整合
比如区间A B和区间B C
现在合并成了区间A C
同样我们用另一种方式
来考察节点E迁出的情况
原来ABCD六个节点
负担了六个数据段
当E离开后
数据段5和6合并成5 6段
那么这五段数据
会在剩下的五个节点中重新分配
如图所示
一个数据项在多个节点存储
带来了显而易见的好处
但是也带来了这些副本之间
存在不一致的问题
数据副本一致性
必须回答的问题是
用户必须写多少个副本
才能保证数据是足够的
第二它也必须回答
一个客户端要读多少个副本
才能保证读到的数据是最新的
法团协议是分布式系统中
常用的控制副本一致的协议
在法团协议当中
有三个关键的参数
即N是对数据
或者是对数据段
读写的副本的数据
NR是读操作当中
需要读取的节点的个数
NW是写操作中
需要阻塞等待的节点个数
下面看一个具有12个数据副本的
法团协议的示例
在这里我们看到
某一个数据项会本存放到
ABCD一直到L 12个数据节点上
我们读取的数据节点数NR等于3
那么我们要求的写的节点数NW
就至少等于10
这样才能保证读
对过程会至少读到一个新的
写的节点
另外如果我们读的节点数为7
那么我们写的节点数
就不能小于6
当然最极端的我们可以要求
写全部
这样我们只要读一个节点
就可以了
在Cassandra当中
提供了管理副本一致性的方法
管理副本一致性
就要在副本数 写成功数
和读成功数
这三个数字之间进行权衡
但是要满足读副本数+写副本数
要大于N这样的一个条件
Cassandra中提供的标准化的
副本一致性级别
包括读级别和写级别两大类
对于读的一致性级别
包括ONE QUORUM和ALL
他们对应的语意如PPT所示
对于写一致性级别
增加了ZERO级
它表示写操作将立即返回
但是并不保证这次写一定成功
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7