参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/architectureClientRequestsAbout_c.html#concept_ds_xf3_5nl_fk

  可以在集群的任意节点上进行读写请求因为在Cassandra中所有的节点都是同等的。

  当一个客户端连接到一个节点并发出一个读或写的请求,在那次特定的客户端操作中那个节点作为协调者。协调者的工作就是在客户端和数据实际存储的节点之间充当代理。协调者根据集群的设置(分区器和复制策略)决定在环上的那个节点应当获得请求。

一、写请求

  协调者发送一个写请求给所有的副本包含要写的行。只要副本所在的节点是可用的,不管客户端指定的一致性是多少他们就会写入数据。

  例如,在一个单数据中心包含十个节点复制因子为3的集群中,一个写入的数据应该存储在3个节点上。如果客户端设置的一致性级别为ONE,第一个节点完成写入后机会返回一个成功的信息,协调者得到这个信息后返回给客户端。一致性级别为ONE意味着,可能3个副本中的其他两个并没有写入数据如果他们在请求发生之后宕机了。如果一个副本丢了,Cassandra会通过hint机制进行修复。

二、多数据中心的写请求

  在多数据中心的部署中,Cassandra通过在每一个远程数据中心选择一个协调者节点来处理那个数据中心的数据来优化写入的性能。这样,客户端连接的那个协调者只需要转发请求给每个远程数据中心的一个节点就可以了。

  如果使用的一致性级别为ONE 或着 LOCAL_QUORUM,只需要远数据中心中的那个协调者节点返回成功的返回信息。这样,地理的延迟不会影响客户端请求的响应时间。

三、读请求

协调者发送给给副本的读请求包括两种:

1、一个直接的读请求

2、一个后台的读修复请求

  一次直接的读取请求所关联的副本数目与客户端指定的一致性级别有关。后台的读修复请求会被发送到其他没有受到直接请求的节点。读修复请求保证了数据在各个备份的一致性。因此,协调者首先接触的部分取决于一致性的级别。协调者发送请求给响应最快的副本。如果多个节点返回数据,会在内存中比较数据是否是一致的,如果不是的话,协调者会把最新的数据(根据时间戳)返回给客户端。为了保证每个副本的数据都是最新版本的,协调者会在后台比较所有的数据备份。如果副本是不一致的,协调者会将非最新版本的副本更新到最新的值,这个过程被称为读修复。读修复可以在每一个表中配置并且默认是启用的。

  例如,如果一个集群的复制因子是3,读一致性级别是QUORUM。执行一个读取请求,2个副本会被连接。假设这两个返回的数据版本不一致,版本最新的数据会被返回。在后台,第三个副本会和之前两个节点比较一致性。如果必须的话,最新的副本会覆盖旧的数据。

Cassandra1.2文档学习(6)—— 客户端数据请求的更多相关文章

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

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

  2. Cassandra1.2文档学习(1)——Cassandra基本说明

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

  3. Cassandra1.2文档学习解读计划——为自己鼓劲

    最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...

  4. Cassandra1.2文档学习(5)—— Snitch

    参考资料:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...

  5. Cassandra1.2文档学习(9)—— 数据写入

    数据参考:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/manage_dml ...

  6. Cassandra1.2文档学习(13)—— 数据读取

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

  7. Cassandra1.2文档学习(11)—— 删除数据

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

  8. Cassandra1.2文档学习(10)—— 插入和更新数据

    参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...

  9. Cassandra1.2文档学习(3)——数据分配和复制

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

随机推荐

  1. MySQL HA

    读写分离 在应用端处理 Spring AbstractRoutingDataSource 淘宝MyFox MySQL Replication Connection 在数据库端处理 MySQL Prox ...

  2. 文件I/O(不带缓冲)之creat函数

    本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 也可调用creat函数创建一个新文件. #in ...

  3. Making the impossible: 3 nodes intercontinental replication--转载

    原文:http://www.percona.com/blog/2012/01/11/making-the-impossible-3-nodes-intercontinental-replication ...

  4. iOS语言国际化

    参考网站:http://blog.sina.com.cn/s/blog_7b9d64af0101jncz.html   语言国际化:根据系统不同的语言自动切换 Xcode6.2   一.在不同语言下工 ...

  5. GCC生成的汇编代码

    假设我们写了一个C代码文件 code.c包含下面代码: int accum = 0; int sum(int x, int y){ int t = x + y; accum += t; return ...

  6. mysql的数据导入导出

    1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...

  7. Unix网络编程(1)——socket一窥

    套接口地址结构 IPv4的套接口地址结构为: struct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; struct in_addr ...

  8. mapping 详解1(mapping type)

    映射(mapping) 映射是定义一个文档以及其所包含的字段如何被存储和索引的方法. 例如,用映射来定义以下内容: 哪些 string 类型的 field 应当被当成当成 full-text 字段 哪 ...

  9. Verilog-FPGA硬件电路设计之一——if语句优先级(always块中的阻塞赋值生成的组合逻辑电路是按照顺利执行的)

    出处:http://bbs.ednchina.com/BLOG_ARTICLE_3013262.HTM 综合软件:Quartus II 一.有优先级的if语句 if..else if.. else i ...

  10. 原生JQ实现图片滑动轮播

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...