2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

评论

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

探究 JavaScript 前端热点面试题(三):让你在面试中游刃有余!

沉浸式趣谈

揭秘RLHF;可商用开源LLM列表;领域编译器的前世今生

OneFlow

人工智能 深度学习 RLHF

ZBrush 2023 v2023.1.1最新激活版下载 三维数字雕刻和绘画

Rose

ZBrush 2023安装教程 ZBrush 2023下载地址 ZBrush 2023破解版 角色建模 特效制作

基于云原生的物联大数据智能服务

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

阿里技术总监纯手打的内部手册《MySQL笔记》真是太硬核了

Java MySQL 数据库

魔改xxl-job,彻底告别手动配置任务!

Java你猿哥

Java 分布式 定时任务 ssm Job

SecureCRT中文乱码怎么办?解决 SecureCRT中文乱码方法

Rose

SecureCRT下载 SecureCRT激活版 SecureCRT许可证 SecureCRT中文乱码

PullTube for Mac使用技巧:快速导出铃声、缩略图和短片

Rose

Mac视频下载器 PullTube下载 PullTube使用教程

记录内网Docker启动Stable-Diffusion遇到的几个坑

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

如果你项目使用了MyBatis-Plus你一定要用它

Java你猿哥

Java mybatis ssm Mybatis Plus

开发者反响热烈,阿里云免费试用产品增至 80 多款!

云布道师

阿里云

关于接口可维护性的一些建议 | 京东云技术团队

京东科技开发者

京东云 接口设计 企业号 5 月 PK 榜

吃透这份406页的Java修炼宝典,直接送你进入一线大厂

Java java面试 Java八股文 Java面试题 Java面试八股文

阿里P8级架构师十年心血终成Java核心精讲与网络协议文档;

Java java面试 Java八股文 Java面试题 Java面试八股文

日常开发中,程序员如何提升技术?这13个点一定要做到!

Java你猿哥

Java ssm java基础 日常开发 java 编程

一个同事喜欢查别人的BUG,截图发工作大群,还喜欢甩锅怎么办?

Java你猿哥

Java 程序员 ssm 编码 java编程

CrossOver 让你在Mac上轻松运行 PC 游戏

Rose

虚拟机 CrossOver2023 Mac电脑运行win CrossOver Mac下载

涅槃重生,BitKeep如何闯出千万用户新起点

鳄鱼视界

IDP 与 DevOps平台:相似之处与关键差异

SEAL安全

IdP 平台工程 内部开发者平台

GitHub项目免费教你提示工程,全中文教学,小白也能懂

Openlab_cosmoplat

人工智能 GitHub 开源社区

Git 代码分支管理 | 京东云技术团队

京东科技开发者

git 京东云 企业号 5 月 PK 榜

MySQL触发器Trigger加载以及目前局限

GreatSQL

MySQL greatsql greatsql社区

清华大佬首推"中高级Java程序员进阶小册",程序员架构进阶必备

Java你猿哥

Java 算法 Spring Boot JVM java面试

涨薪40K!来自阿里内部绝学的“微服务架构手册”

Java你猿哥

架构 微服务 微服务架构 ssm 架构师

Python从0到1丨带你了解图像直方图理论知识和绘制实现

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 5 月 PK 榜

新能源汽车品牌加速出海 赛力斯“硬实力”助力全球化布局

科技热闻

NineData:高效高质量的Redis可视化管理工具

NineData

数据库 redis 开发工具 Redis 可视化工具 NineData

B 站构建实时数据湖的探索和实践

Apache Flink

大数据 flink 实时计算

日常开发中,程序员如何提升技术?这13个点一定要做到!

程序员小毕

Java 程序员 程序人生 后端 架构师

SVN管理工具Cornerstone入门教程

Rose

cornerstone 4破解 SVN管理 Cornerstone教程 Mac版Cornerstone许可证

大数据拥抱云原生 HashData助力资管数字化转型

酷克数据HashData

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