硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

世界顶级赛事的票务支撑:百万座位与限时匹配

  • 2020-03-22
  • 本文字数:2504 字

    阅读完需:约 8 分钟

世界顶级赛事的票务支撑:百万座位与限时匹配

一、背景

麦座,是大麦旗下的票务系统。去年,我们承接了 2019 年国际篮联篮球世界杯(2019FBWC),核心目标是完成三种套票的运营及售卖。用户可选择的套票方案为:


  1. 球队套票:可以观看指定球队比赛;

  2. 城市套票:可以观看指定城市比赛;

  3. 单日套票:可以观看指定日期(同时也指定城市)的比赛。


要知道,2019FBWC 有 92 场比赛,共计 100 多万的座位,两场比赛间最短时间间隔仅有 10 多个小时,只有上一场比赛打完,才能确定下场比赛的对手和城市。我们的技术难点是,面对套票本身对阵关系及场次的不确定性,如何在百万座位中,快速为套票用户匹配座位。以下是我们的技术解法和总结,希望对大家有借鉴。

二、套票解法

1. 套票问题抽象


我们按照目标场次是否存在,把三种套票分为两类:


1)球队套票定金、城市套票、单日套票。特点在于目标场次一定存在,但是对阵关系和座位图不确定,可以抽象为无座场次下单模型,即在不确定具体场次和座位情况下通过售卖数字库存,为用户锁定某种资格(入场、后续购票等等);


2)球队套票后续阶段。特点在于目标场次不一定存在,败者球队不一定有后续比赛。但是随着赛程推进,一轮打完必然知道下一轮的对手以及比赛城市,此时只有已经交了球队套票定金的观众可以继续以较便宜的价格购买球队套票下一阶段的门票。


针对球队套票赛程阶段,我们需要提供的是锁定资格后不断购买指定球队后续比赛场次门票的能力,即给客户“配单”。而无论何种套票,用户最终还是要进场观赛,需要要在验票入场前告知用户实际座位,因此我们提供将无座订单转化为有座订单的能力,即给客户“配座”。


为了解决配单、配座问题,麦座设计了两个工具:


1)配单工具:球队套票,每个阶段之间通过工具,生成下一阶段待支付订单,延续用户购买套票资格;


2)配座工具:具体比赛场次出来后通过工具,将无座套票映射到有座场次,给用户机选座位,最终实现用户座位分配。


2. 解法一:配单


配单功能适用于球队套票的分阶段售卖,世界杯的球队套票分为六个阶段。



图 1 赛程抽象


第一阶段为定金支付,支付定金后,获得后续球队套票购买资格,后续共分为 5 个阶段,每个阶段对应小组赛到决赛的实际场次。配单工具要解决的核心问题在于:


1)利用当前阶段的订单信息生成下一阶段待支付订单,同时通知用户支付;


2)保持套票订单之间的关联关系,方便报表统计。



图 2 配单模型


如图所示,配单时基本上是按照原始订单的订单结构信息,复制出目标订单的结构信息,订单结构保持不变,同时所有后续阶段的订单都与最原始的定金订单建立关联关系,后续通过定金场次订单可以统计出套票生命周期的所有订单,方便报表统计。球队套票每个阶段都生成一个待支付的无座订单,并提醒用户及时支付。



图 3 处理流程


配单处理流程如图所示,由于处理时间较长,为了更好的用户体验和性能,需要在订单开始处理后及时返回用户“处理中”的状态,后台采取异步处理。通过消息中间件将处理任务分发到到集群处理节点,另一方面由于底层下单接口 TPS 承载有限,需要每个处理节点(应用实例)控制处理速率,做好限流,图中是通过线程池控制处理速率。



图 4 process 分解


单个 process 的内容如图所示,其中橙色框中的步骤标识有数据库写操作,需要做事务处理。扣减库存、订单保存、订单权限保存基本上是复用的麦座下单 process 中的的 step。


3. 解法二:配座


配座工具适用于所有套票映射最终有座场次的场景。从用户体验上讲,配座与配单不同,配单工具生成的订单需要用户支付,因此必然让用户感知到新订单的生成,而配座工具生成的订单实际上不需要用户支付,而且由于配座的场次非常多,会出现一个原订单生成最多十个目标订单的场景,因此如果让用户感知到其实是不合理的(考虑一个用户某天打开订单列表,可能看见若干莫名其妙的订单),所以订单结构上配座与配单也不尽相同。



图 5 配座模型


配单工具通过关联关系记录套票生命周期,而配座工具通过父子关系,更偏向于传统的购物车订单,即父订单收钱,子订单无需再次收钱。套票无座订单记为父订单,实际的有座场次与套票订单建立父子关系。另外由于配座时不需要用户支付,因此子订单都记为零元订单,以免后续报表和对账结算金额无法抹平。


球队套票每个阶段、城市套票、单日套票最终要映射到有座场次,座位的选择是通过机选实现,配座流程与配单流程大部分是可以复用的,不同之处在于配座需要为用户机选座位,因此需要插入机选步骤,如图 6 所示。同样,图中的橙色框标识有数据库写操作,需要做事务处理。



图 6 process 分解


配座是麦座与大麦票务中台融合的一次实践,也是大麦多年以来票务能力的资源整合。未来大麦票务中台的机选能力可以开放给更多的业务方使用。


5. 如何做的更加通用?


设计之初,我们考虑到了业务的通用性,虽然不同票务系统的差异,不太可能通过一套实现满足麦座、世界杯、票务云的需求,但是玩法是可以借鉴的,通过一套接口流程,可以将套票玩法沉淀下来,后续其他票务系统有类似的玩法需求,仅需要实现接口就可以方便快速的克隆套票玩法,因此我们将接口定义抽取了独立的业务插件(jar 包)。另一方面,使用插件而不是独立应用,是因为配单和配座不可避免的要做权限校验,jar 包可以复用接入系统的权限体系,这样工具只做核心的玩法部分,可以更聚焦。



图 7

三、效果以及未来展望

2019FBWC 总共 92 场比赛,共计进行了 5 轮配单配座,通过后续的业务数据检查,所有座位配置正确,无一错漏,配单配座工具将运营同学原本一周甚至更久的工作在十几分钟内搞定,达到了产品要求的准确、高效,效果得到业务方的认可。


大规模的配单配座在体育赛事中可能成为行业常态,事实上 2019FBWC 的玩法也同时得到了亚运会、冬奥会等赛事的关注,配单配座工具采用的技术并不是阿里特有,同时由于我们采用插件设计,也在一定程度上实现了可复用,方便的推广到其他票务平台。


作者介绍


阿里文娱技术专家 展恒


相关阅读


电影垂直行业的云智开放平台如何炼成?


阿里工程师带你了解 B 端垂类营销中心如何设计?


云智前端技术如何赋能场馆院线?


60 秒售出 5 万张票!电影节抢票技术揭秘


电影行业提升 DCP 传输效率,还能这样做!


超大型场馆的绘座选座解决方案


大型赛事稳定性保障:Dpath 为世界军人运动会护航


2020-03-22 10:002004

评论

发布
暂无评论
发现更多内容

企业选择YashanDB数据库的五大核心理由

数据库砖家

如何构建基于YashanDB数据库的实时分析平台

数据库砖家

如何高效部署YashanDB数据库实现企业数字化转型

数据库砖家

如何从用户角度改善YashanDB功能体验

数据库砖家

高效实施 YashanDB 的数据准备与清洗流程

数据库砖家

融合边缘计算的YashanDB数据库应用创新及发展趋势

数据库砖家

构建基于 YashanDB 数据库的弹性数据服务架构

数据库砖家

如何构建基于YashanDB数据库的高效数据模型

数据库砖家

如何建立基于YashanDB的统一数据平台

数据库砖家

如何结合YashanDB数据库构建智能供应链平台

数据库砖家

如何打造安全可靠的YashanDB数据库访问控制体系

数据库砖家

如何处理YashanDB数据库中的大规模数据

数据库砖家

如何高效部署YashanDB数据库实现企业数据管理升级

数据库砖家

如何高效部署YashanDB数据库实现业务优化

数据库砖家

如何高效部署YashanDB数据库以提升数据安全

数据库砖家

如何高效利用YashanDB数据库提升企业数据管理能力

数据库砖家

如何结合YashanDB数据库塑造数据驱动型企业

数据库砖家

如何解读YashanDB数据分析能力

数据库砖家

企业应用中YashanDB的负载测试流程详述

数据库砖家

如何高效部署YashanDB数据库实现企业级数据管理

数据库砖家

如何构建基于YashanDB数据库的数据仓库

数据库砖家

如何管理YashanDB中的数据访问权限

数据库砖家

高通的AI新程,下一个激荡三十年

脑极体

AI

构建一个高效的 YashanDB 环境

数据库砖家

如何高效迁移到YashanDB:步骤与注意事项

数据库砖家

全面指南:部署YashanDB数据库的10个步骤详解

数据库砖家

融合AI技术的YashanDB未来数据库发展方向

数据库砖家

搭建基于 YashanDB 的企业级数据架构

数据库砖家

基于YashanDB数据库构建智能客服系统的技术指南

数据库砖家

如何解决YashanDB使用中的常见问题

数据库砖家

趋势型分析:YashanDB如何引领数据库技术创新

数据库砖家

世界顶级赛事的票务支撑:百万座位与限时匹配_文化 & 方法_阿里巴巴文娱技术_InfoQ精选文章