Riak一致性

时间:2014-04-04 08:02:17

标签: riak consistency cap-theorem

我试图特别用Riak包围NoSQL。看CAP定理,我很难理解一致性是如何发生的。比方说,我有一个在线商店。我有6件待售。 2个人想要购买这些物品。第一个人想购买其中的2个,而第二个人想要购买所有6个项目。这两笔交易几乎立即进行。如何以第二人不购买幻影商品的方式完成这项工作?

我正在考虑使用读/写锁定。这可能是我认为的可用性问题。

我还看到了交换复制数据类型的一些内容。还在阅读关于它的期刊,但是任何人都对Riak有任何见解吗?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

这个问题不是特定于Riak或NoSQL,而是一般的分布式系统。如果您使用像mysql这样的关系数据库来跟踪库存,并且正在2个或更多服务器之间复制该数据,那么您的应用程序将需要设计为确保您不会根据服务器2的可用性报告转售项目。服务器1刚刚处理了销售最后一个的交易但尚未复制的交易。在任何一种情况下,如果您不想处理向客户道歉的运输/生产延迟,您需要处理锁定或序列化购买请求。

通过Riak,您可以通过使用读取和写入仲裁来调整可用性/一致性,有选择地使最终购买失败,如果主要副本不可用则必须保持一致,同时仍然允许不太重要的操作喜欢浏览库存继续。即,您可以在查询时选择一致性而非可用性,反之亦然。