“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

分区定价:座位上玩转“精细化运营”

  • 2020-03-09
  • 本文字数:2653 字

    阅读完需:约 9 分钟

分区定价:座位上玩转“精细化运营”

分区定价就是将同一个场次的座位分割成不同的区域,以不同的价格进行售卖。不同的座位,不同的价格,在上座率和价格之间求得一个平衡,帮助影院实现收入的最大化。同时,通过异业合作或者绑定会员权益等手段,将权益与座位“对号入座”,实现更加精细化的运营策略。

一、技术挑战-不仅仅是改个价格

  1. “同场同价”-在线选座系统的地基


分区定价要想落地,对于技术来说,并非是改个价格那么简单。


自 2010 年,电影行业出现在线选座业务以来,场次都是定价的最小粒度,影院会根据影厅及放映影片、放映时间等对整个场次的座位进行统一定价,这就是所谓“同场同价”。这个思维定势一直贯穿在在线选座系统的设计实现和升级过程中。在线选座系统的基础数据、交易、网关、营销等核心服务模块,都是基于上述思路进行搭建。


发展到今天,在线选座的业务绝非仅仅是锁座-下单-出票那么简单,如果说 2010 年的系统规模是一栋平房,那如今的规模可以称得上是 500 层的高楼了,那么要改动从系统搭建初期就已定下的规则,就如同重新打造这幢高楼的地基一般,这个挑战可想而知。


  1. 怎么做分区定价,不同系统商有不同的说法


淘票票作为领先的观影购票平台,中国电影市场的很大一部分票房是由淘票票的用户贡献的。然而,淘票票并非电影票的最终出票者,影院才是。淘票票通过对接影院安装的具有售票资质的售票系统,完成出票。


目前,具有售票资质的系统商有七家,如凤凰云智、佳影、鼎新等,在系统商的基础上,还有搭建自己售票能力的电商,如大地、万达等等。上述提到的系统商加电商(下文统称合作商),代表全国近万家影院,定义了影院本地售票系统的接口协议和标准。对于分区定价,他们接口层面有不同的诠释。这就为我们带来了第二个挑战,如何适配众多结构不一的分区定价接口。


  1. 如何快速响应?


时间是个永恒的话题。如何在较短的时间内,面对较大的技术复杂性,去支撑业务的急速变化,这也是我们在实现分区定价过程中遇到的问题。

二、方案-控边界,以不变应万变

  1. 思路


我们从业务建模出发,构建问题空间模型,然后落实到系统上,逐个击破,用系统建模的方式产出解决方案模型,最后用技术手段实现。根据第二章节的阐述,我们抽象出分区定价的两个核心问题:


1)售票的定价维度从场次精确到座位;


2)适配各个合作商不同的分区定价接口。


按照领域建模的沉淀内聚的原则,尽量将变更收敛控制在相关的业务域内。因此接下来我们针对上述两个问题进行抽解、推理:


a)将座位的定价维度精确到座位,分区定价,核心就是价格,价格属性是贯穿整个服务集群的重要属性。基础数据、交易、营销甚至网关系统都依赖价格。然而价格本身并不是一个独立的模型,而是商品模型的一个属性,这里的商品模型也可以认为是场次或者排期模型。基础数据、交易、营销等各个业务域所依赖的是商品模型,并非价格。一个普通场次对应一个商品,而对分区定价场次来说,可能一个场次可能对应多个商品。因此针对这个问题我们的解决思路是:抽象分区定价数据到商品模型,交易、营销等模块依赖商品中的价格属性去实现收单、交易履行等模块,尽量不感知分区细节逻辑;


b)适配各个合作商的分区定价接口,我们的原则是尽量减少其对上层业务的侵入,将其差异屏蔽到底层模块,并对上层提供统一的接口。虽然各个合作商提供的分区定价服务有所差异,但是基本上可以抽象为排期拉取、锁座、解锁座位、出票等模块,而这些底层模块与上层的交互是统一且确定的。因此针对这个问题我们的解决思路是:网关域适配个合作商的分区定价接口,组装统一结构的基础数据,暴露统一标准的锁座、出票等服务,将分区定价的基础服务能力沉淀内聚到网关层。


  1. 架构与实现


综上所述,淘票票对于分区定价的实现方式可总结为以下几点:


1)网关层沉淀封装排期拉取、座位图拉取、锁座、出票、解锁座位等能力,并对外暴露统一标准的基础服务;


2)抽象分区定价的数据到商品及排期模型中,对外提供统一结构的数据模型;


3)上层模块基于底层的基础数据和服务,以通用逻辑进行适配,尽量减少对上层业务的侵入。


具体如下图所示:



  1. 最终答卷


通过上述的解决方案,淘票票在较短的时间内完成了对分区定价业务的支撑,覆盖了行业内多数合作商和影院,同时系统具备一定的可扩展性和复用性,能够以较低成本实现合作商的对接。

四、思考

  1. 快速的业务变化,如何应对,并沉淀技术能力?


快速变化是互联网行业一个无法回避的问题,由于技术人员距离业务前线相对较远,在应对过程中难免显得被动和疲倦。“面向复制-粘贴的编程模式”“先 run 起来”“赶一下进度,后面再重构”、“必须马上上线”等等这些传统应对方式就会大显身手。然而,这些手段纵然能够“快速”支撑业务,也造成了一些恶果。其一,代码的可复用性和可扩展性极差;其二,技术债高垒,影响开发效率,增加变更风险,降低技术竞争力,甚至反过来影响业务和团队。在快速交付的前提下,在分区定价项目的实践过程中,我们总结出以下几点经验:


1)规范技术债的管理机制,对于需要优化的模块,在项目上线之初,就要确定迭代计划。这是最简单却很容易见效的手段;


2)定位核心变更,并将核心模块收敛到尽量少的业务域中,沉淀能力,便于统一管理、复用和扩展。比如在分区定价架构设计中,我们把核心模块落地在基础数据域和网关域,在不影响业务交付的前提下,也使得系统具备一定的扩展和复用能力;


3)拉进业务距离,尽可能多的理解业务诉求、未来规划等等,在设计阶段,把这些信息带入思考,能够使我们在面对变化时更加从容。


  1. 业务技术,做业务还是做技术,技术性体现在哪里?


在业务开发的角色上,面对纷繁的业务需求,很多人会产生困惑,到底是在做技术,还是在做业务,其技术含量体现在哪里?


通过上文所述,一些业务需求的复杂性未必就逊色于底层技术。我们产生困惑的原因,更多的还是面对的问题不一样。业务技术面对的问题变化更快、领域横向上更广;底层技术面对的问题更加稳定,领域纵向上更加深入,但是大家解决问题的能力是共通的,比如编程能力、抽象建模能力、结构化思维能力、落地能力等等。


因此业务开发并不简单,只是大家想“简单”了,或者说在用“简单”的方式做业务开发。我们认为,尊重业务需求,夯实编程、抽象建模、落地等能力,并在项目实践中充分思考和应用,业务一样可以做的很“技术”。


作者简介


阿里文娱开发工程师 暮平


相关链接


10W 座位的大场馆究竟是怎么画出来的?


10 倍高清不花!大麦端选座SVG 渲染


首次揭秘!看大麦如何掌控超大规模高性能选座抢票


3D/VR 选座技术探索


大麦库存的高性能及一致性是如何设计的?


大麦票夹:从工具到服务的技术演进之路


2020-03-09 11:001623

评论

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

限时开源!阿里京东架构师出品亿级高并发系统设计手册

会踢球的程序源

Java 架构 后端 java架构师

好用的pdf格式转换器:PDF to Word Document Converter 激活版

真大的脸盆

Mac PDF Mac 软件 PDF格式转换

Java的访问修饰符

Java你猿哥

Java oop SSM框架

劲爆!阿里巴巴面试参考指南(嵩山版)开源,程序员面试必刷

做梦都在改BUG

Java 程序员 面试

2023最NB的JVM基础到调优笔记,光图文就超清晰,吃透阿里P6小case

Java你猿哥

Java JVM Java虚拟机 jvm调优

分布式事务的21种武器 - 1

俞凡

架构

霸榜Github三个月的「架构师成长手册」!成为架构师竟然也有捷径

Java你猿哥

Java 分布式 架构设计 架构师 SSM框架

我给大家免费公开五份阿里Java架构师学习手册!助力金三银四

Java你猿哥

Java 架构 算法 高并发 Java性能调优

工赋开发者社区 | MES/MOM数据采集系统需求分析和总体设计

工赋开发者社区

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

亚马逊云科技 (Amazon Web Services)

【Java技术专题】「盲点追踪」突破知识盲点分析Java安全管理器(SecurityManager)

洛神灬殇

Java 安全管理器 SecurityManager

2023春招、金三银四,面试官必问的1000道Java面试题及答案整理

架构师之道

Java 面试

测试需要写测试用例吗?

老张

软件测试 质量保障 测试用例

从初学者角度聊一聊socket到底是什么?

会踢球的程序源

Java 后端 socket

🔥🔥🔥热乎的前端面试题(昨天)

控心つcrazy

JavaScript 面试 Vue 前端面试

面试官:类是如何加载的?

做梦都在改BUG

带你浅谈下Quartz的简单使用

Java你猿哥

Java SSM框架 quartz

FastDFS收藏起来,现在开始用Minio吧

会踢球的程序源

Java fastdfs

MySQL索引15连问,你扛得住吗?

做梦都在改BUG

Java MySQL 数据库 索引

CNStack 云服务&云组件:打造丰富的云原生技术中台生态

阿里巴巴云原生

阿里云 云原生 CNStack

fabric.js开发图片编辑器可以实现哪些功能?多图

秦少卫

h5编辑器 FabricJS Fabric.js 海报编辑器 图片编辑

硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K

做梦都在改BUG

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

让算力普惠、释放技术红利,阿里云让开发者成为创新主体

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

阿里巴巴灵魂一问:说说触发HashMap死循环根因

会踢球的程序源

hashmap Java1

如果有一天当你的Redis 内存满了,该怎么办?

会踢球的程序源

Java redis 后端

Golang负载均衡器Balancer的源码解读

骑牛上青山

Go 负载均衡

WebGPU 令人兴奋的 Web 发展

devpoint

WebGL webgpu #WebGPU 三周年连更

ES6中的Proxy

格斗家不爱在外太空沉思

JavaScript ES6 三周年连更

多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌

Java你猿哥

Java 多线程 面试题 高并发 多线程与高并发

2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

肥晨

三周年连更

SpringBoot中如何解决Redis的缓存穿透、缓存击穿、缓存雪崩?

做梦都在改BUG

分区定价:座位上玩转“精细化运营”_文化 & 方法_阿里巴巴文娱技术_InfoQ精选文章