2014-04-04 68 views
1

我想用Riak特別圍繞NoSQL圍繞我的大腦。看着CAP定理,我很難理解一致性如何發生。比如說,我有一家網上商店。我有6件物品可以出售。 2人想購買這些物品。第一個人想要購買這些物品中的2個,而第二個人想要購買全部6個物品。這兩筆交易幾乎立即發生。這樣做會如何做到第二個人不會購買幻影商品?Riak一致性

我一直在想,使用讀/寫鎖定我的頭頂。這可能是我認爲可用性的一個問題。

我也看到了一些交換性複製數據類型。仍然閱讀有關它的日記,但任何人都有任何關於Riak的見解?

預先感謝您。

回答

4

此問題不是特定於Riak或NoSQL,而是一般分佈式系統。如果您使用像mysql這樣的關係數據庫來跟蹤庫存,並在兩臺或更多服務器之間複製數據,則需要設計應用程序以確保您不會基於來自服務器2的可用性報告轉售某個項目服務器1剛剛處理了銷售最後一個的事務,但它尚未複製。無論哪種情況,如果您不想處理因運輸/生產延誤向客戶道歉,您需要處理鎖定或序列化採購申請。

藉助Riak,您可以通過使用讀寫仲裁來調整您的需求的可用性/一致性,選擇性的失敗操作,如最終購買,如果主副本不可用,必須保持一致,像瀏覽庫存以繼續操作。即您可以在查詢時選擇一致性,反之亦然。