一致的读写操作是如何处理的
CAP定理:Consistency:所有节点在同一时间看到的是同样的数据;Availability:确保每个请求收到成功还是失败的回应;Parttition Tolerance:系统无视偶然的消息丢失持续运行;在分布式存储系统中,同时满足所有特性是不可能的,最多能达到3个中的两个,Cassandra允许用户来决定每个请求的CAP特性,在一致性、性能和错误容忍度之间做出选择;
一致性指一行数据的所有备份是否同步和最新。repair 操作可以确保数据的最终一致性。
两个一致性功能为:
- Tunable consistency(可协调一致性):通过提供可调节一致性,Cassandra扩展了eventual consistency的概念。针对任何读或写操作,客户端根据对反应时间和数据准确性的要求来决定数据的一致性程度,除此之外,Cassandra也提供了若干built-in repair mechanismsl以确保数据在各备份上保持一致。
- 写操作一致性:决定了在向客户端确认写操作成功之前,多少个节点必须被成功写入(commitlog and memtable );
- 读操作一致性程度决定了在将结果返回到客户端之前,多少个replicas必须返回结果;
- 假设:R=Nodes Read, W=Node Written, N=Replication Factor,Q=QUORUM=N/2+1。
ANY: 至少成功写入一个节点,即使是一个Hinted Handoff
ONE: 至少成功写入一个复制节点(replica node)
QUORUM: 至少成功写入Q个复制节点(Q=N/2+1)
LOCAL_QUORUM: 至少在coordinator node所在的当前DC成功写入Q个复制节点
EACH_QUORUM: 在每个DC成功写入Q个复制节点
ALL: 成功写入集群中的每个复制节点
- Linearizable consistency