Cassandra1.2文档学习(6)—— 客户端数据请求
参考文档: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)—— 客户端数据请求的更多相关文章
- Cassandra1.2文档学习(15)—— 配置数据一致性
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...
- Cassandra1.2文档学习(1)——Cassandra基本说明
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...
- Cassandra1.2文档学习解读计划——为自己鼓劲
最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...
- Cassandra1.2文档学习(5)—— Snitch
参考资料:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...
- Cassandra1.2文档学习(9)—— 数据写入
数据参考:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/manage_dml ...
- Cassandra1.2文档学习(13)—— 数据读取
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- Cassandra1.2文档学习(11)—— 删除数据
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- Cassandra1.2文档学习(10)—— 插入和更新数据
参考数据:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...
- Cassandra1.2文档学习(3)——数据分配和复制
参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/a ...
随机推荐
- C#系列之String和StringBuilder
前言 首先和博园的各位打声招呼,小弟在博园呆了也有一年多了.平常一有时间就会过来看看文章,学习各位的经验,现在养成了一种一天不来博园,心里就不踏实的习惯,不知道在看我博文的大哥们有没有这个感觉. 读归 ...
- [Node.js] Creating Demo APIs with json-server
json-server makes it extremely easy to setup robust JSON apis to use for demos and proof of concepts ...
- Firefly distributed模块的原理与twisted中PB远程调用协议
这些天断断续续在看Firefly, 看了一下distributed模块的设计,其实就是使用的twisted.spread.pb觉得以后要是想用Firefly有必要了解一下twisted, 所以在网上查 ...
- [MethodImpl(MethodImplOptions.Synchronized)]
在NopCommerce项目的Nop.Core类库中有一个EngineContext类中有一个Initialize方法用到了[MethodImpl(MethodImplOptions.Synchron ...
- Helpers\Data
Helpers\Data Data helper contains a bunch of useful methods for looking at and altering your data. D ...
- c/c++编译原理
转载自:http://blog.csdn.net/chengocean/article/details/6250779C源程序-->预编译处理(.c)-->编译.优化程序(.s..asm) ...
- mysql的数据导入导出
1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...
- nginx查看日志
原文:nginx日志格式及自定义日志配置 nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 ...
- angualrjs学习总结二(作用域、控制器、过滤器)
一:Scope简介 Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带.Scope 是一个对象,有可用的方法和属性.Scope 可应用在视图和控制器上. ...
- 【转载】架构师需要了解的Paxos原理、历程及实战
原文链接,请参见:http://weibo.com/ttarticle/p/show?id=2309403952892003376258 数据库高可用性难题 数据库的数据一致和持续可用对电子商务和互联 ...