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 ...
随机推荐
- jquery美化滚动条插件jscrollpane应用(转)
原文地址:http://www.jqcool.net/jquery-jscrollpane.html jScrollPane是一个设计非常灵活的跨浏览器的jQuery ,它将浏览器的默认滚动条或是元素 ...
- iOS开发——高级技术&密码锁功能的实现
密码锁功能的实现 一个ios手势密码功能实现 ipad/iphone 都可以用 没有使用图片,里面可以通过view自己添加 keychain做的数据持久化,利用苹果官方KeychainItemWrap ...
- 优麒麟(UbuntuKylin)不是国产Linux操作系统
2014年5月10日,CCTV新闻频道"新闻直播间"栏目播报了"谁来替代Windows XP,工信部希望用户使用国产操作系统"报道.同一时候,央视也报道了眼下包 ...
- careercup-C和C++ 13.8
13.8 编写一个智能指针类.智能指针是一种数据类型,一般用模板实现,模拟指针行为的同时还提供自动垃圾回收机制.它会自动记录SmartPointer<T*>对象的引用计数,一旦T类型对象的 ...
- 学习笔记之Java程序设计实用教程
Java程序设计实用教程 by 朱战立 & 沈伟 学习笔记之JAVA多线程(http://www.cnblogs.com/pegasus923/p/3995855.html) 国庆休假前学习了 ...
- 转--23种设计模式的搞笑解释(后续放逐一C++解释版本)
创建型模式 1.FACTORY —追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德 ...
- java_Cookies_1_商品浏览历史记录servlet2
public class CookiesServlet2 extends HttpServlet { // 显示商品详细信息 public void doGet(HttpServletRequest ...
- next nextval
1 KMP算法中next与nextval值的计算 以上两张图代表了next值的求法,本人总结后做如下叙述: 根据公式可知: next[1]=0 next[2]=1 next[3]的求法根据公式可以直接 ...
- 多线程GCD
经常使用:规避很多线程相关的复杂的逻辑 为什么会gcd?因为pthread和nsthread要求开发人员对线程相关的知识了解深入; 手动启动线程:加锁/解锁;造成很多隐患 --> 苹果公司给出了 ...
- 使用SDWebImage 怎么获取指定请求对应的缓存图片呢?
SDWebImage会对我们加载的网络数据进行缓存,但有时候我们想要拿到缓存数据中的图片,可以通过下个方法实现: UIImage *thumbnailImage = [[SDImageCache sh ...