1

對於一個獨特的商品銷售數據庫,如果我們使用順序一致性,我們可以保證,例如,這個獨特的商品永遠不會賣給不同的人。因果一致性能保證我們嗎?連續和因果一致性

如果有一些銷售開始/結束的同時會破壞系統嗎?

由於物品是唯一的,我們只能出售每件物品中的一件。

謝謝

回答

0

Causual一致性保證您,如果兩個事件是隨便相關,每個人都將他們發生的順序上達成一致。它允許對事件的順序意見不一致(或「同時」)。

購買由系統中不同節點執行的項目的兩次嘗試可能不會與因果相關 - 買方B幾乎肯定不會嘗試購買項目,因爲他已經看到買方A已經買了它。在一個事實上一致的系統中,這意味着這兩個事件是同時發生的,系統中的不同節點可能不同意他們的相對順序 - A可能認爲她的購買嘗試是第一個成功的,B可能相信同樣的事情。

您可以強制兩次購買嘗試與一些額外的最終性因果關係。讓買家直接購買物品,而不是讓他們寫一條記錄,表明他們希望購買物品。指定一個節點作爲該項目的「所有者」。每當它看到一個購買慾望記錄時,它就會讀取該項目的當前狀態,並且 - 如果它是可用的 - 將其出售給給定購買者。購買者觀看該物品,看它是賣給他們還是賣給其他人。

這建立了兩個事件之間的順序:要麼是所有者首先看到A的記錄並將其賣給她,要麼先看B的記錄並將其賣給他。這兩個事件並不是因果相關的,因此其他節點可能會以相反順序看到記錄,但這很好 - 他們的意見不計算在內,只有業主的意見。所有者的第二次閱讀(應該看到該項目已被出售)與之前的寫作相關,因爲它們是在同一節點上執行的,因此我們保證它只會出售該項目一旦。