参考文档: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. ShowcaseView-master

      ShowcaseView.rar

  2. android的进度条使用

    android的进度条 1.实现的效果 2.布局代码 先写一个my_browser.xml文件 存放WebView <?xml version="1.0" encoding= ...

  3. Oracle取得中文拼音首字母函数

    CREATE ) ; V_RETURN ) ; FUNCTION F_NLSSORT (P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSS ...

  4. Redis主备复制

    Redis 支持 Master-Slave(主从)模式,Redis Server 可以设置为另一个 Redis Server 的主机(从机),从机定期从主机拿数据.特殊的,一个从机同样可以设置为一个 ...

  5. IP地址,子网掩码划分(转)

    IP地址划分教程 IP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.255.255.255 B类IP段 128.0.0.0 到 ...

  6. 怎样在CentOS 7.0上安装和配置VNC服务器

    VNC轻松连接远程Linux桌面 http://jingyan.baidu.com/article/6c67b1d6f1bac92786bb1e6d.html 这是一个关于怎样在你的 CentOS 7 ...

  7. Android 常见adb命令

    1.  查看所有已链接的设备 命令: adb devices   例: C:\Users\laiyu>adb devices List of devices attached 5d3b5aac  ...

  8. 理解JavaScript原型式继承

    0.基础 javascript没有类的概念, javascript不需要实例化某个具体类的实例.javascript对象本身可以用来创建对象, 而对象可以继承自其他对象, 这个概念称为原型式继承 每个 ...

  9. Smarty中一些标签的使用

    Smarty中的标签和php中的标签不一样 foreach标签{foreach   from=$goods(变量名) key='键,不带$' item='值,不带$'}中间的显示内容{/foreach ...

  10. 使用WCF和WEBService出现配置的问题

    错误代码:system.serviceModel/bindings/customBinding 处的绑定没有名称为"SMSServiceServiceSoapBinding"的已配 ...