订票系统

订票系统 #

不同业务的订票系统存在很大差异。

电影院/场馆选座系统 #

业务需求:

  • 可以同时购买一张票或多张票。
  • 用户可以自动选座也可以手动选座。
  • 购物多张票的用户应优先推荐连座。
  • 系统应尽量减少同一个座位被多人同时选中的可能。
    • 只有一个用户购买成功会降低其他人的用户体验,而其他人甚至可能因此丢失买到票的机会。

实现方式:

  1. 用户选择场次、票价和数量。
  2. 购票系统根据待售票和生成规则返回最佳座位表。生成规则如下:
    • 根据票价获得所有可选区域,以每排最中间位置为中心,计算座位的距离列表。
    • 从每个区域的距离列表中选择最短距离,合并为最佳座位表。
    • 如果是多人票,则连座票优先级大于距离。
  3. 如果用户选择自动选座,直接锁定座位,生成订单。
  4. 否则,返回最佳座位表,由用户手动选择。

座位锁定方案:

基于队列实现公平性。购票系统尝试锁定座位前向客户端返回一个token,同时该token也写入队列。后台消费队列,锁座位。客户端通过token发起轮询查询购票是否完成。