2013-12-19 81 views
1

通過將所有信息存儲在Cassandra集羣中,可以構建Ticketmaster票券預訂系統嗎?完全依靠Cassandra構建的票證預訂系統

系統需要能夠

1. Display the correct number of tickets available at one time 
2. Temporarily reserve a ticket while the customer is making the purchase 
3. No two users can ever buy the same ticket. 

爲了保持一致性所有讀取和寫入應在仲裁進行。我不知道如何執行步驟2或3?

+1

你爲什麼?儘管這當然是可能的,但我不明白爲什麼你不會使用MySQL。這將會更加昂貴,您將不得不手動控制應用程序中的數據關係。 – user1641165

回答

1

是的,你可以。

但是,會有一些交易需要嚴格的一致性。例如,當用戶瀏覽網站並向他們的購物車添加票據時,一致性並不重要,但是當他們在特定日期結賬並選擇特定座位號時,一致性問題很重要(雙重預訂是一件壞事,特別是爲高利息事件)。

因此,您可以在最終一致的數據庫中實現99%的功能,並在一致的數據庫中實現結帳過程。這也很好,因爲您可以將99%的系統水平和跨多個數據中心進行擴展,這可能會超過負載的70%。請記住,您必須處理您的網站正在運行的情況,但結帳過程已關閉(例如,結帳時出現錯誤對話框,要求他們等待/重試,併爲他們的煩惱提供促銷代碼)。

最後一個細節是,您需要在某人退房後更新最終一致性數據庫的「可用門票數量」。好消息是,這可以懶散地完成 - 排隊工作,並在系統有一些備用週期時執行。它肯定不會發生在用戶結帳過程的關鍵路徑中。