最终一致性环境下写后读记录
Read record after write in eventual consistency environment
写入NoSQL最终一致性环境后如何读回一条记录?例如,我去了一个大型电子商务网站,在我下订单后,我看到了订单确认页面,但是当我点击订单号时,我收到了找不到订单的消息,但由于最终一致性,一分钟后工作正常。我怎样才能在像 Cassandra 这样的 NoSQL 环境中克服这个问题?
我认为在你的例子中,问题不在于真正的最终一致性,而在于系统的分离 - 通常,订单 ID 是由某个子系统生成的,然后通过某个队列推送到数据库中,或类似的东西。
说说Cassandra的最终一致性——如果你想要强一致性,你可以玩一下读写操作的一致性设置。如果你有 R + W > RF
,那么你就实现了强一致性。但这可以通过不同的方式实现,具体取决于性能要求——人们经常简单地使用 QUORUM
进行读取和写入——在这种情况下,它将保证你总是得到你写的结果。
写入NoSQL最终一致性环境后如何读回一条记录?例如,我去了一个大型电子商务网站,在我下订单后,我看到了订单确认页面,但是当我点击订单号时,我收到了找不到订单的消息,但由于最终一致性,一分钟后工作正常。我怎样才能在像 Cassandra 这样的 NoSQL 环境中克服这个问题?
我认为在你的例子中,问题不在于真正的最终一致性,而在于系统的分离 - 通常,订单 ID 是由某个子系统生成的,然后通过某个队列推送到数据库中,或类似的东西。
说说Cassandra的最终一致性——如果你想要强一致性,你可以玩一下读写操作的一致性设置。如果你有 R + W > RF
,那么你就实现了强一致性。但这可以通过不同的方式实现,具体取决于性能要求——人们经常简单地使用 QUORUM
进行读取和写入——在这种情况下,它将保证你总是得到你写的结果。