Cassandra的一致性级别

翻译Cassandra文档中的一段。

写一致性级别Write

ZERO
不保证一致。写操作在后台异步执行。除非CASSANDRA-685 修正,否则当太多写错作排队的时候,buffer会膨胀,后果很坏。
ANY
(需要0.6的Cassandra)保证至少写入到1个节点中,包括示意(hinted)的接收者。
ONE
保证写操作在回复客户端前至少已经进入1个节点的commit log和memory table。
QUORUM
保证写操作在回复客户端前至少被写入到 (<复制因数> / 2 + 1)个节点中。
ALL
保证写操作在回复客户端前已经被写入到 <复制因数> 个节点中。任何节点如果没有响应,则操作失败。

读一致性级别别Read

ZERO
不支持,因为没有意义。
ANY
不支持,应该使用ONE来代替。
ONE
将会返回第一个有响应结果的节点返回的数据。在使用ConsistencyLevel.ONE的时候,一致性检查永远是在后台线程中来修复一致性问题。这意味着如果开始的读取得到了旧数据时后续的调用可以返回正确的数据(这叫做读取修复 read repair)
QUORUM
查询所有的节点,一但绝大多数复制节点返回了结果,返回具有最新的时间戳的纪录。其余复制节点的结果会在后台进行检查。
ALL
查询所有的节点,一但所有复制节点返回了结果,返回具有最新的时间戳的纪录。任何节点如果没有响应,则操作失败。

2 thoughts on “Cassandra的一致性级别”

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.