2013-12-19 80 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%。请记住,您必须处理您的网站正在运行的情况,但结帐过程已关闭(例如,结帐时出现错误对话框,要求他们等待/重试,并为他们的烦恼提供促销代码)。

最后一个细节是,您需要在某人退房后更新最终一致性数据库的“可用门票数量”。好消息是,这可以懒散地完成 - 排队工作,并在系统有一些备用周期时执行。它肯定不会发生在用户结帐过程的关键路径中。