参考文档: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. OpenCV快速遍历矩阵元素方法

    OpenCV中Mat矩阵data数据的存储方式和二维数组不一致,二维数组按照行优先的顺序依次存储,而Mat中还有一个标示行步进的变量Step.使用Mat.ptr<DataTyte>(row ...

  2. Android Intent入门

    http://www.cnblogs.com/leipei2352/archive/2011/08/09/2132096.html http://blog.csdn.net/xiazdong/arti ...

  3. [React Fundamentals] Introduction to Properties

    This lesson will teach you the basics of setting properties in your React components. class App exte ...

  4. iOS开发——开发技巧&Git常用命令

    Git常用命令 初始化git init        加—bare实现远程仓库 配置git config user.name iCocos 配置全局git config —global user.na ...

  5. android学习日记05--Activity间的跳转Intent实现

    Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...

  6. 爱维帮---LVS

    http://www.aiweibang.com/yuedu/125232503.html

  7. page cache和buffer cache 图解

    http://www.cnblogs.com/yrpen/p/3777963.html http://www.cnblogs.com/hustcat/archive/2011/10/27/222699 ...

  8. Ⅱ.spring的点点滴滴--对象

    承接上文 对象的各种实例化 .net篇(环境为vs2012+Spring.Core.dll) 修改原来的PersonDao对象为 public class PersonDao : IPersonDao ...

  9. How the Kernel Manages Your Memory

    http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/ After examining the virtual ...

  10. Android 自学之进度条ProgressBar

    进度条(ProgressBar)也是UI界面中的一种非常使用的组件,通常用于向用户显示某个耗时完成的百分比.因此进度条可以动态的显示进度,因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应, ...