基本概念

一致性: 在分布式系统中的所有数据备份,在同一时刻是否同样的值

QUORUM: 是一个可以计算的数字,对数据一致性起重要作用

Node: 主要用来存储数据

Data Center: 数据中心

机柜(机架): 机房中放服务器的架子,通常一个机架上会放置多台服务器

Cluster: 一个Cluster包括多个数据中心

CommitLog: 主要记录下客户端提交过来的数据以及操作。这个数据将被持久化到磁盘中以便数据没有被持久化到磁盘时可以用来恢复,当持久化完成后,CommitLog会被自动清除

Memtable: 数据在CommitLog中记录完成后会写入Memtable,用户写数据在内存中的表现形式

SSTable(sorted string table):: 数据持久化到磁盘,排好序存储的,Cassandra会把Memtable中的数据持久化到SSTable中,新的数据总是追加到文件末尾,一个列族一个SSTable文件

写操作一致性

一致性级别指定当多少个副本几点成功写入数据后,通知客户端执行成功。最终一致性

通常使用Cassandra,我们选择QUORUM级别,表示有半数副本收到请求的时候,返回客户端响应,这样保证插入的数据,可以肯定被查询到

读操作一致性级别

QUORUM级别

QUORUM级别确保写到指定QUORUM数量的节点,计算公式:

quorum = (sum_of_replication_factors / 2 ) + 1

假如现在有一个数据中心共3个副本节点,如果想确保读写一致性可以使用下面公式:

(nodes_written + node_read) > replication_factor

Cassandra 数据一致性的更多相关文章

  1. Cassandra中的数据一致性

       Cassandra中数据一致性指的是数据行在各个复制节点(replicas)上的更新和同步程度.通过提供tunable consistency,Cassandra扩展了eventual cons ...

  2. 分布式系统中一些主要的副本更新策略——Dynamo/Cassandra/Riak同时采取了主从式更新的同步+异步类型,以及任意节点更新的策略。

    分布式系统中一些主要的副本更新策略. 1.同时更新 类型A:没有任何协议,可能出现多个节点执行顺序交叉导致数据不一致情况. 类型B:通过一致性协议唯一确定不同更新操作的执行顺序,从而保证数据一致性 2 ...

  3. HBase Cassandra Riak HyperTable

    Cassandra                                                              HBase 一致性 Quorum NRW策略 通过Goss ...

  4. Cassandra 备份 - 1 - 节点镜像恢复

    之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...

  5. Cassandra1.2文档学习(15)—— 配置数据一致性

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...

  6. cassandra新增、更新、删除数据。

    package client; import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java ...

  7. [转载] HBase vs Cassandra:我们迁移系统的原因

    转载自http://www.csdn.net/article/2010-11-29/282698 我的团队近来正在忙于一个全新的产品——即将发布的网络游戏www.FightMyMonster.com. ...

  8. cassandra 并发技术介绍

    摘要 本文主要介绍cassandra线程技术,cassandra的实现是基于java的,所以线程技术使用的也是jdk包提供的线程类.cassandra是分布式数据库,整个并发架构是基于阶段事件驱动架构 ...

  9. Cassandra 原理介绍

    Cassandra最初源自Facebook,结合了Google BigTable面向列的特性和[Amazon Dynamo](http://en.wikipedia.org/wiki/Dynamo(s ...

随机推荐

  1. Ubuntu环境配置机器安装驱动

    ubuntu_environment_config.md thead > tr > th { text-align: left; border-bottom: 1px solid; } t ...

  2. ubuntu分区建议总结

    本文为转载别人的内容,结合了其他内容,进行分区的总结.其中主要是分区表格,对于ubuntu安装时,进行分区非常有用. 无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为 ...

  3. mnist数据集下载——mnist数据集提供百度网盘下载地址

    mnist数据集是由深度学习大神 LeCun等人制作完成的数据集,mnist数据集也常认为是深度学习的“ Hello World!”. 官网:http://yann.lecun.com/exdb/mn ...

  4. adobe Keychain mac

    Keychain password access This question has been Answered. janec2070563 May 8, 2018 11:07 AM I consta ...

  5. 听说这样可以加快oracle入表速度

    oracle 用occi编程的时候,批量提交使用绑定变量的方式,主要瓶颈再sql语句解析上,改成merge into后效率没有变化,但是使用绑定变量方法,能加快速度

  6. spring boot-15.缓存

    为了减轻数据库压力和提高访问速度,从spring3.1开始映入了基于注解的缓存机制. 1.Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, ...

  7. java实现整数计算器

    计算器代码 package stack; import java.util.ArrayList; import java.util.List; import java.util.Scanner; im ...

  8. The library 'libhostpolicy.dylib' required to execute the application was not found in

    .NET Core应用程序需要runtimeconfig.json文件.此JSON文件配置运行时的选项.没有runtimeconfig.json文件,这将失败. > dotnet Program ...

  9. js,el表达式,<c:if>

    <c:if>中只能有一个判断语句,但是可以在一个el表达式中写多个判断条件 例: <c:if test="${fn:length(item.work_detail.note ...

  10. js 计算倒计时

    第一个是我自己写的 // t等于时间戳差 function changeTime(t) { let timeStr = '' let tmp = t/(24* 3600 * 1000) if (tmp ...