Read-your-own-writes 一致性是对所谓的最终一致性的巨大改进:如果我更改了我的个人资料图片,我不在乎其他人是否在一分钟后看到更改,但如果在页面重新加载后我仍然看到,这看起来很奇怪旧的。
这可以在 Cassandra 中实现,而无需对多个节点进行完整的读取检查吗?
在读取未指定的数据时使用ConsistencyLevel.QUORUM
很好,并且实际上正在读取 n>1 个节点。但是,当客户端在写入时从同一个节点读取(并且实际上使用相同的连接),这可能会很浪费 - 在这种情况下,某些数据库将始终确保返回以前写入的(我的)数据,而不是返回一些旧的数据。使用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=quorum 和 WL=quorum 会导致浪费的读取请求。
// seo:也称为:会话一致性、read-after-my-write 一致性