在Cassandra中读取您自己的写入一致性

til*_*lda 9 consistency eventual-consistency cassandra

从所谓的最终一致性来看,你自己写的一致性是一个很大的改进:如果我改变了我的个人资料图片,我不在乎别人是否会在一分钟之后看到这个变化,但是如果页面重新加载之后看起来很奇怪我仍然看到旧的.

这可以在Cassandra中实现,而无需在多个节点上进行完整的读取检查吗?

ConsistencyLevel.QUORUM在读取未指定的数据时使用正常,实际上正在读取n> 1个节点.但是,当客户端在写入时从同一节点读取(并且实际使用相同的连接)时,这可能是浪费的 - 在这种情况下,某些数据库将始终确保返回先前写入的(my)数据,而不是某些较旧的数据.使用ConsistencyLevel.ONE不能保证这一点,并假设它会导致竞争条件.一些测试表明:http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/per-connection-quot-read-after-my-write-quot-consistency-td6018377.html

我对此场景的假设设置是2个节点,复制因子2,读取级别1,写入级别1.这导致最终的一致性,但我希望在读取时读取您自己的写入一致性.

在我看来,使用3个节点,RF = 3,RL =仲裁和WL =仲裁会导致浪费的读取请求,如果我对"我的"数据保持一致就足够了.

// seo:也称为:会话一致性,read-after-my-write一致性

jbe*_*lis 5

好问题.

我们已经开启了http://issues.apache.org/jira/browse/CASSANDRA-876一段时间来添加这个,但是没有人为此付出困难,因为

  1. CL.ONE适用于很多工作量,没有任何额外的体操
  2. 读取是如此之快,以至于执行额外的操作并不是什么大事(事实上,Read Repair,默认情况下启用,意味着无论如何都要检查所有节点,因此CL.ONE和更高版本之间的区别实际上更多是关于可用性比表现)

也就是说,如果你有动力去帮忙,请在机票上询问,我很乐意指出你正确的方向.

  • 为了节省用户的点击时间,它已关闭,因为无法修复. (3认同)