写点什么

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

  • 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:001889

评论

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

C++ Lambda表达式

王玉川

c++ Lambda

聚焦低碳发电,践行“双碳”之路

脑极体

华为 智能光伏

web前端线下培训学习靠谱吗?

小谷哥

架构实战营4.4 如何设计存储架构随堂练习

西山薄凉

「架构实战营」

Perfkit - 性能分析与测量工具集

王玉川

Linux 性能优化 Dockerfile ebpf perf

软件测试/测试开发 | 如何使用代理配置快速定位接口测试脚本问题?

测试人

软件测试 自动化测试 接口测试 测试开发

可观测性之网站性能调优的实际案例-小白都看的懂

Yestodorrow

前端 可观测性 网站性能

软件测试/测试开发 | 接口自动化测试如何进行认证?

测试人

软件测试 自动化测试 接口测试 测试开发

Source Map 原理

道道里

前端 webpack sourcemap

架构实战营4.3 存储分片分区架构随堂练习

西山薄凉

「架构实战营」

Python 内置界面开发框架 Tkinter入门篇 乙

eng八戒

Python GUI tkinter

细胞分裂问题的原创解法

王玉川

原创 算法 递归 LeetCode 动态规划

大数据培训课程靠谱吗?

小谷哥

WEB前端编程培训靠谱吗?

小谷哥

Java编程培训中心怎么样呢

小谷哥

NodeJS 实战系列:如何设计 try catch

光毅

JavaScript node.js

数据可视化图表系列解析——瀑布图

Data 探险实验室

数据分析 数据可视化 图表 可视化数据

通用池化框架commons-pool2功能拓展

FunTester

运维训练营第十二课作业

好吃不贵

CBM业务模型是什么和为什么?

涛哥 数字产品和业务架构

企业架构

设计消息队列存储消息数据的 MySQL 表格

小虎

#架构训练营

性能优化 - 伪共享

王玉川

c++ 缓存 性能 cpu

技术升级落地需要天时、地利、人和

石云升

极客时间 1月月更 技术领导力实战笔记

一文揭晓,我是如何在Linux中查找自如

蔡农曰

Linux 程序员 运维 后端

从人工分析到智能分析,流量分析如何快速上手?

智维数据

智能运维 应用交付 可视化数据 流量分析系统

性能优化 - 访问局部性

王玉川

c++ 性能 cpu 访问局部性

C++ const与指针

王玉川

c++ 指针 常量 const

程序员培训班哪家教的比较好

小谷哥

Verilog HDL门级建模

timerring

FPGA

C++ 引用:他是坤坤也是鸡哥

子夜的星

c++ 引用 语法 引用参数函数

架构实战营4.2 存储复制架构随堂练习

西山薄凉

「架构实战营」

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