Cassandra中的数据一致性
除了tunable consistency,Cassandra也提供若干built-in repair mechanisms以确保数据在各replicas上保持一致。
• Consistency:所有节点在同一时间看到的是同样的数据
• Availability:确保每个请求收到成功还是失败的回应
• Partition Tolerance:系统无视偶然的消息丢失持续运行
在分布式存储系统中,同时满足所有的特性是不可能的,最多能达到3个中的两个。Cassandra允许用户来决定每个请求的CAP特性,在一致性、性能和错误容忍度之间做出选择。
写操作一致性决定了在向客户端确认写操作成功之前,多少个节点必须被成功写入(Commitlog and Memtable)。
ANY: 至少成功写入一个节点,即使是一个Hinted Handoff
ONE: 至少成功写入一个复制节点(replica node)
QUORUM: 至少成功写入Q个复制节点(Q=N/2+1)
LOCAL_QUORUM: 至少在coordinator node所在的当前DC成功写入Q个复制节点
EACH_QUORUM: 在每个DC成功写入Q个复制节点
ALL: 成功写入集群中的每个复制节点
ANY提供了绝对的write availability,但是是以牺牲一致性为代价(具有最差的一致性),因为不能保证被写入的数据什么时候才可读(取决于replicas当机了多长时间)。ANY只能用于写操作。写操作被发送到任何一个节点,随后通过hinted handoff机制被重送到目的节点。ANY适用于不想丢失写操作、不关心数据一致性和发送延迟的数据程序。
读操作一致性程度决定了在将结果返回到客户端之前,多少个replicas必须返回结果。
ONE: 从最近的复制节点返回结果(由snitch决定)。默认情况下Read Repair会在后台运行使其他节点保持一致。
QUORUM: 在Q((Q=N/2+1))个复制节点返回数据后,返回具有最新时间戳的记录给客户端
LOCAL_QUORUM: 在coordinator node所在的当前DC的Q个复制节点返回数据后,返回具有最新时间戳的记录给客户端
EACH_QUORUM: 在每个DC返回Q个复制节点的数据后,返回具有最新时间戳的记录给客户端
ALL: 在集群中的每个复制节点返回数据后,返回具有最新时间戳的记录给客户端。任何一个节点失败都会导致读操作失败
Cassandra中的数据一致性的更多相关文章
- cassandra中对节点失败与否的探测方法, the Phi accrual Failure Dector,附论文
(1)在分布式系统中,对于某个节点是否还“活着”的探测,通常是设定一个时间的阀值,然后根据接收到的“心跳”信息的间隔,来判定这个节点是否还活着,然后返回一个bool值: 但这种做法很容易造成误判:因为 ...
- cassandra中的ACID,与RDBMS中的事务有何不同?
Cassandra中的ACID标准 Apache Cassandra不遵循具有回滚或锁定机制的ACID(原子性,一致性,隔离性,持久性)事务,而是提供原子,隔离和持久的事务,并具有最终和可调的一致性, ...
- 技术基础 | 在Apache Cassandra中改变VNodes数量的影响
Apache Cassandra中num_tokens的默认值在4.0版本中将会有变化!这看起来好像只是在CHANGES.txt文件中做了个小小的改动,但实际上这个改动将会对集群的日常运维有着深远的影 ...
- Azure CosmosDB (2) CosmosDB中的数据一致性
<Windows Azure Platform 系列文章目录> 为了保证分布式数据库的高可用性和低延迟性,我们需要在可用性.延迟和吞吐量之间进行权衡. 绝大部分的商业分布式数据库,要求开发 ...
- 如何在spark中读写cassandra数据 ---- 分布式计算框架spark学习之六
由于预处理的数据都存储在cassandra里面,所以想要用spark进行数据分析的话,需要读取cassandra数据,并把分析结果也一并存回到cassandra:因此需要研究一下spark如何读写ca ...
- Cassandra1.2文档学习(15)—— 配置数据一致性
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...
- [转载] HBase vs Cassandra:我们迁移系统的原因
转载自http://www.csdn.net/article/2010-11-29/282698 我的团队近来正在忙于一个全新的产品——即将发布的网络游戏www.FightMyMonster.com. ...
- Cassandra内部架构
Cassandra是一个开源的.分布式.无中心节点.弹性可扩展.高可用.容错.一致性协调.面向列的NoSQL数据库 Cassandra集群(Cluster) Cluster Data center(s ...
- Cassandra如何保证数据最终一致性
Cassandra如何保证数据最终一致性:1.逆熵机制(Anti-Entropy)使用默克尔树(Merkle Tree)来确认多个副本数据一致,对于不一致数据,根据时间戳来获取最新数据. 2.读修复机 ...
随机推荐
- PoEdu - C++阶段班【Po学校】- 第3天
引用 C中指针的功能强大,使用起来繁杂,因为指针要控制的东西太多:有指针的类型,指针的解引用,指针空间内的值,它本身是有空间的,有自己的地址等.指针也是强大的,比如:我们要在函数之内,修改方法之外的值 ...
- runtime 运行机制
// // HKPerson.h // runtimeDemo1 // // Created by 123 on 16/5/23. // Copyright © 2016年 123. All ...
- linux下的触控板手势xSwipe and tag
这个最初是采用的touchegg.开始没有效果,后来网上发现是因为需要禁用系统的2指3指操作参考 http://askubuntu.com/questions/266057/cant-get-touc ...
- Maven入门示例(3):自动部署至外部Tomcat
Maven入门示例(3):自动部署至外部Tomcat 博客分类: maven 2012原创 Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...
- 类Collections的静态方法
类Collections的静态方法 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成. 排序 static <T extends Comparable& ...
- 51nod 1138 连续整数的和(数学公式)
1138 连续整数的和 #include <iostream> #include <cmath> #include <cstdio> using namespace ...
- Height Half Values
public class HeightDemo { /** * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半: * 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? * ...
- PHPstudy 无法启动Apache
今天打安装完phpstudy的时候,启动Apache发现端口被占用,这个端口也就是system端口.如果想要启动服务器必须关掉这个,但是会导致系统无法正常显示. 后来我就在网上搜各种办法,依然没成功. ...
- [Linux] xargs
xargs 命令可以将一个命令的输出,作为另一个命令的输入! 这里听来好像是管道的功能,之所以有xargs是因为有的命令不知吃管道,这时xargs就派上用场了! 具体的方法是:前一个命令的输出会使用空 ...
- angular.element的常用方法
addClass()-为每个匹配的元素添加指定的样式类名after()-在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点append()-在每个匹配元素里面的末尾处插入参数内容att ...