单节点Cassandra是否保障写后读一致性?读写操作示例求证
单节点Cassandra的写后读一致性说明
当然可以!单节点Cassandra完全能保障写后读一致性,针对你给出的操作流程,变量a_value的最终值一定会是5——也就是你总能读取到最新写入的数据。
具体原因拆解:
- Cassandra的一致性由一致性级别控制,单节点场景下,默认的写一致性级别是
ONE(等待当前节点写入确认),读一致性级别也是ONE(从当前节点读取)。因为所有读写都在同一个节点完成,没有分布式复制的延迟问题,写入操作成功返回后,数据已经处于可读取的状态(要么在内存的memtable中,要么已经刷写到磁盘的SSTable,读操作会优先读取最新的数据源)。 - 针对你的操作序列:
这三个操作是顺序执行的,第二个write(key=A, value=3) write(key=A, value=5) a_value = read(key=A)write会覆盖第一个write的结果,当第二个写入操作完成时,节点已经确认数据更新成功。后续的读操作直接从该节点获取数据,必然拿到最新的5,不会出现读取旧值3的情况。
这里需要注意的是,如果是并发的异步读写操作,可能会有不同的情况,但你给出的是顺序执行的同步操作,完全不需要担心一致性问题。
内容的提问来源于stack exchange,提问作者lolski
相关产品推荐
相关产品推荐

