首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电影售票系统中分配座位的自动阻塞/解锁

电影售票系统中分配座位的自动阻塞/解锁
EN

Software Engineering用户
提问于 2017-08-18 18:12:39
回答 1查看 1.6K关注 0票数 4

我正在尝试建立一个电影票务系统。但我无法理解如何解决以下用例:

  • 假设有10个座位,即S1,S2,S3,S4…S10。
  • 现在假设User1已经登录到系统中,并选择了S1和S2。
  • 这两个座位都必须自动阻塞15分钟,这样User1就可以在这段时间内付款并确认座位。
  • 同时,如果另一个User2登录到系统中,则必须将座位S1和S2视为阻塞。
  • 只有当15分钟的超时时间发生(或) User1自愿中止预订过程时,座位才会被解除阻塞。

知道如何做到这一点吗?我们能通过避免页面重新加载来异步地完成阻塞和解除阻塞吗?

我已经找到了解决方案,并找到了以下相关问题:如何处理向Paypal支付有限数量的项目的潜在并发问题?

但这对我没什么帮助。我肯定我得把这件东西从货架上取下来一段时间。但技术上如何做到这一点呢?我应该更新数据库以使那个座位被封锁吗?如果我这样做了,如何在失败或用户放弃系统时解除阻塞?如何异步更新UI?

EN

回答 1

Software Engineering用户

发布于 2017-08-19 08:50:55

电影票务面临的挑战是,随着电影开始时间的临近,争论达到顶峰。

有两个部分是耗时的:选择(有些人甚至不关心彼此之间的关系)和付费(通常由外部Two服务处理)。因此,您可以通过选择以下选项之一来改善这种情况:

选项1:实时锁定方法

使锁定时间大大缩短(例如2分钟),但允许每次用户活动时(鼠标和键盘事件)扩展会话。如果用户选择屏幕能够反映座椅状态的变化,这将更好。

选项2:优化者的方法

乐观点。不要锁定,并解释它的先到先得,并预订在付款结束时的座位。如果所需的座位不再可用,请提出新的选择(但不需要付款:可以立即预订)或退款(我假设付款是在外部系统上完成的,您不能影响其事务管理)。

然而,如果只剩下几个位置,或者他们只是不关心座位位置,这可能会让用户感到不安。

选项3:航空公司方法

这是一种乐观主义方法的变体,它可以大大减轻用户的压力:询问有多少座位,什么是首选区域(例如前、中、后)。确认可用性,付款,然后预订连续的座位,如果可能的话,在首选的地区或其他地方,如果没有。通知使用者他已订好的座位,如果不高兴,可以选择其他座位。

当大多数人不想要一个非常特定的座位时,这样做是最好的,让您的系统优化分配,同时最小化锁定。

如何在技术上做到这一点?

你没有给出很多关于你的项目的技术信息,所以很难帮助你。一种可能的方法是使用会话id将座位标记为临时预订,并在会话过期时取消相关预订(选项1)。另一种方法是使用数据库的事务性管理 (选项2和3):未能完成事务表明另一个会话已经获得了位置。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/355903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档