NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

一年只用一天的系统如何做技术沉淀?

  • 2019-12-05
  • 本文字数:3759 字

    阅读完需:约 12 分钟

一年只用一天的系统如何做技术沉淀?

今年是双 11 的第 11 年,猫晚的第五年。


今年的天猫双 11 狂欢夜(简称“猫晚”):有超 200 个国家和地区通过优酷 APP 观看猫晚直播;共有 5144 万人通过猫晚公益直播间观看明星卖农货,网友在淘宝直播间点赞 1 亿次。今年猫晚海外艺人参与的节目超过了四成,晚会版权输出到 106 个国家和地区,实现了除南极洲外的全覆盖。



2019“猫晚”现场,图为腾格尔唱《High 歌》


2019 猫晚不仅在优酷,还打通手淘、天猫等 APP,实现了多屏、多端、双向的互动,将互联网晚会的互动形态推进到 3.0 时代。如晚会上跑男队和街舞队在一个 4×8 米的巨型触摸屏上玩起了“好礼对对碰”游戏。优酷和淘宝的网友在 APP 端也可以选择加入某一战队,游戏比分实时计入明星嘉宾的成绩中,影响节目进程。观众还可以通过互动打赏给喜爱的节目“打 call”,优酷直播间 63%观看晚会的用户参与了互动,较去年增长 7%。


很荣幸,我能有机会参与到双 11 猫晚项目,借这个机会给大家分享技术在猫晚落地的过程和思考。

技术目标如何定

猫晚 KO 时,总负责人说猫晚是给天猫双 11 消费者办的晚会及回馈,所以我们目标不仅要给消费者提供视觉盛宴,还要给消费者带来实惠,要给商家带货;虽然自古忠义不能两全,鱼与熊掌不可兼得,但是项目组同学即使执手相看泪眼竟无语凝噎也要咬牙接下有挑战的目标。基于这几个方向团队开始做分解,猫晚产品技术运营设计团队核心要承载晚会的传播影响力、丰富有趣的互动形式、以及进店的引导和让消费者实惠的权益发放。


明确定位后猫晚的核心业务目标相对就清晰了,基于业务目标技术同学进一步分解首要是业务目标支撑,稳定是底线、体验要保证、权益全发放、不能有资损(还有团队有成长、系统有沉淀)。



业务技术大图


所以猫晚技术目标制定的思考路径是,首先是看行业、看大盘、看业务、看团队;然后分解目标,找到关键指标和抓手及相关团队;最后去量化,定有挑战的指标和倒计时的里程碑



制定技术目标图


技术如何保障公平一致的体验

体验一致是因为晚会公域互动主打手淘、优酷、天猫 APP,为即将到来的双 11 预热,让用户在看晚会时候就能边看边玩、边玩边买,所以主持人口播时候每次都会提醒打开手机摇一摇可以在手淘、天猫和优酷 APP 参与互动,这就要求多端需要同时弹起和关闭互动、展示内容一致、玩法一致、抽奖时间一致。


基于以上几个需求,猫晚今年的解法是第一次完全一套代码,运行到手淘、天猫和优酷,在优酷侧部署的代理服务只承载转发和适配不做其他任何业务、核心服务部署到集团机房承载所有的互动玩法和权益发放,技术架构图如下:



技术架构图


提到公平,为什么存在公平性的问题?


核心原因在于因为不可抗力的用户网络延迟、现场信号延迟以及内容生产制作过程中的延迟,如果技术上不处理可能存在的问题大家互动弹起的时间分布完全不同,那么很可能你还没开始游戏或者正在玩游戏,有的人已经把那些一元购以及终极大奖替你还 49999 花呗的权益抽取完了,这个带来的挫败感和不公平感实在叔可忍婶婶不可忍,所以猫晚引入了以下四个机制来保障:


  1. 客户端和服务端通过 CSN 及无线 RPC 网关轮询对表,保障客户端维护的时钟和服务端一致;

  2. 现场布置延迟机,反复实测现场延迟以及内容制作过程中的延迟时间;

  3. 运营操作节目单事件点击和主持人话口与导演组反复沟通及演练对齐;

  4. 最后根据 2 和 3 的时间 delay 在直播流中插入 SEI,内容消费端再解析 SEI 信息,根据节目开始时间弹起互动。

高并发脉冲流量如何抗

猫晚比较典型的是打底常驻流量一直有,然后每轮互动带来脉冲流量,针对这些场景猫晚这面的核心思路是以下三板斧:多轮全链路压测、应用预热、防刷限流兜底;以上三点可能大家都比较熟悉每次大型活动的默认项,除了以上点还可以聊一聊比较有晚会特色的优化比如削峰、路由、下游保护。

1 路由

猫晚比较典型的打底流量节目单 polling,所有同时在线用户每 45S 都会轮询一次,技术同学准备了路由方案,默认所有请求 100%走无线 RPC 网关,但是可以动态下发路由比例给前端,当无线 RPC 网关压力较大或者即将超过目标限流值时或者流量评估模型有问题时可以走预案切换比例到轮询 CSN,以保障系统稳定性。


总结:根据流量情况动态路由分发是兜底和保证体验的利器。

2 削峰 &错峰

错峰:


a、公私域互动在节目进程中叉开投放时间,避免并发同时来临;


b、20 点及 21 点集团有红包雨,和导演组沟通及演练互动错开整点的前后几分钟,防止给权益平台带来集中压力;


c、在私域像红包雨、入场红包、密令红包等互动通过中间件消息下行通道投放,降低私域服务端压力。


削峰:


a、客户端向后台提交数据有压力的点都采用在一定时间范围内随机打散算法;


b、红包雨控制中奖率,同一个用户的多次点击可以配置有效请求数;


c、终极宝箱个数查询提前打散异步 15S 预查询,避免集中冲击;


d、获得终极宝箱后客户端维护有无标志,挡掉开奖时一部分的集中查询。


总结:削峰和错峰需要体验+业务+技术手段相结合,避免技术上过度设计和优化,ROI 低。

3 下游保护

猫晚发放核心依赖权益平台,每轮互动结束后都会有抽奖环节,抽奖就要调用权益平台,比如终极大奖开奖时有两个要求:


a. 所有用户都可以参与抽取,如果用户没抽中大奖还可以抽打底奖池;


b. 要保证大奖全部发出,否则算资损。


这里如果让所有用户先走全部抽大奖然后不中的再来抽打底,就会两次调用权益平台,对下游的调用直接 double 而且权益平台大奖奖池口也无法承载这么高的流量(大奖权益平台会直接同步操作 DB),无论从性能上还是从价值及成本上来看必要性都不大,基于此判断项目组定了以下三个优化 action:


a. 从业务规则上告诉用户宝箱越多概率越高;


b. 从应用上直接分流宝箱较多用户抽大奖奖池,宝箱较少用户直接抽打底奖池;


c. 从技术上实时监控统计宝箱分布情况,在前面轮次一旦发现宝箱分布和预期业务规则不一致,启动提前预案,保证大奖必然全部发放。


总结:下游稳定全链路才能稳定,系统设计时要充分考虑对下游的保护。

现场大屏和小屏联动花絮

这里想给大家分享一个猫晚关于预案的小花絮,提醒每个同学预案一定不能只留在预案平台上,需要可应急、可执行、已演练、甚至需要准备备胎的备胎。


为了让内容和互动更精彩,结合更紧密,项目组同学提出要做双向互动,让用户有更强的参与感,去支持自己喜爱的明星并同步参与一样的游戏,数据实时回流现场影响最终 PK 结果。


做双向互动以前没有先例,因为有以下问题要解决:


  1. 现场环境复杂,对设备及通讯等都会有干扰;

  2. 链路长,可控性差,除猫晚内部团队协同外还涉及导演组、主持人、明星等外部配合;

  3. 直播现场突发情况多,对应急能力要求高。


果不其然从需求反复调整对齐,CodeReview 以及全链路压测,手淘天猫集成,集团技术汇报,直播演练及和导演组对话口一路解决各种风险;等项目组同学进入现场后才发现以前的问题只是毛毛雨,先看下时间轴和现场大屏和直播画面示意图:


  1. 9 月份就开始提前启动在广州、东莞、虎门等地多次实测现场大屏效果,进场前确认完全没问题;

  2. 11.6 进入现场第一次排练就发现现场信号嘈杂,触摸屏触摸会失灵,现场每次可以给的检修时间非常有限;

  3. 11.8 号依然未能修好,和导演组沟通希望尝试预案演练;

  4. 11.9 号晚明星彩排吊威亚看台同步配合操作,看台给的机位切换,导致看不清大屏操作,演练效果依然不好;

  5. 11.10 上午导演组一度考虑拿掉该环节;

  6. 11.10 晚上现场同学顶住压力,完美呈现首次双向联动。





现场和线上双向互动图



大屏交互示意图


回到现场大屏操作异常时准备的预案,重点说明进场前技术准备的只有一级预案,后面的全是随机应变根据现场情况和产品同学一起讨论临时制定的预案。


  • 一级预案晚会前演练触摸使用,异常检修;

  • 二级预案是无法检修换大屏机器;

  • 三级预案是大屏机器无法更换,需要看台固定 1 机位,导播车有 1 人保证机位不会切换,看台口令员和操作员配合键盘同步明星现场操作;

  • 四级预案是操作员 1 的电脑或键盘异常,热备 2 机器和热备 2 同学操作。


总结:


  1. 预案一定要可应急、可执行、已演练、甚至需要准备备胎的备胎;

  2. 技术要有追求,多想可能的办法,时间越紧张越要把预案做细,做简单。

总结:一年只用一天的系统如何做技术沉淀

像天猫双 11 晚会类似的项目,平时不承载流量,没有专门的维护团队,随着猫晚启动抽调各个团队来共同承担,参与到项目的技术同学该如何让自己成长和收获呢?我自己总结有以下几点:


  1. 学会思考和制定技术目标;

  2. 锻炼技术 PM 能力,不设边界,有技术预判,识别解决风险,保障目标坚决落地;

  3. 有匠心:对性能和体验及技术方案上需要极致、细致;

  4. 为后人栽树:工具、组件、产品、组织能力沉淀;

  5. 复盘能力:复盘从参与项目的第一天开始,思考突破与沉淀;

  6. 拓宽视野:偶尔跳出专业领域,发现技术外的视角,看其他领域及合作团队的思考,学习周边优秀的小伙伴。

感谢

因为人员太多,无法一一感谢,感谢阿里文娱猫晚的所有同学,因为有我们 2019 双 11 猫晚更精彩。



入驻现场的我们



猫晚开始前现场作战室的我们



现场没时间看易烊千玺、看泰勒、看马老师的我们


2019-12-05 13:345749

评论

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

Serverless 架构下的 AI 应用开发

阿里巴巴云原生

阿里云 Serverless 云原生

Jenkins + Docker 一键自动化部署 Spring Boot 项目

小小怪下士

Java Docker jenkins springboot

PID和TID的区别

源字节1号

APP开发 低代码开发 小程序开发 网站开发

华为云虚拟专用网络VPN,为企业铺就数据上云的安全路

路过的憨憨

云计算:基于互联网的超级计算

Finovy Cloud

云计算 云渲染

涨薪跳槽利器!清华大佬总结的Java核心突击讲,一应俱全

钟奕礼

Java java程序员 java面试 java编程

源自双11混部实战,Koordinator 如何保障应用服务质量?

阿里技术

云原生 混部技术

【iOS逆向与安全】frida-trace命令大全

小陈

iOS逆向 ios安全 Frida ios 开发

二面美团,有惊无险已拿offer,不得不说“太难了”

钟奕礼

Java 程序员 java编程 Java 面试题

2022年中国母婴新消费市场专题分析

易观分析

母婴 消费市场

python常用的内置对象

乔乔

11月月更

行业分析| 智慧消防对讲

anyRTC开发者

人工智能 监控 消防 调度 快对讲

“天翼云杯”厦门软件开发大赛开赛 为开发者提供“沃土”

Geek_2d6073

京东二面:MySQL 主从延迟,读写分离 7 种解决方案

钟奕礼

Java 程序员 java面试 java编程

双机热备与集群的区别分析-行云管家

行云管家

高可用 双机热备 双机

新版阿里神级“高并发”教程《基础+实战+源码+面试+架构》

钟奕礼

Java java面试 java编程 程序员、

DevOps制品管理——软件“工业革命”的里程碑式改革

嘉为蓝鲸

DevOps 制品管理

一步一图带你深入理解 Linux 物理内存管理

bin的技术小屋

内存 内存管理 Linux Kenel 内核 内核源码

南京等保测评公司有哪些?一共有几家?

行云管家

等保测评 等保备案 等保整改 南京等保测评

小令动态 | 令牌云成功通过国家等保三级认证

令牌云数字身份

JS有哪些变态语法,你知道吗?

千锋IT教育

百度APP iOS端内存优化实践-内存管控方案

百度Geek说

android 后端 内存管理 企业号十月 PK 榜

LeetCode题解:938. 二叉搜索树的范围和,递归,JavaScript,详细注释

Lee Chen

JavaScript 算法 LeetCode

新力量,新希望|明道云伙伴大会2022秋圆满落幕

明道云

AI机器学习模型部署的典型策略

Baihai IDP

人工智能 AI MLOps 模型部署

当Kubernetes遇见Macvlan——网络互通

陆云

鲲鹏开发者创享日杭州站:你想知道的所有精彩都在这里了

Geek_2d6073

腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华

钟奕礼

Java 程序员 java面试 java编程

嘉为科技彭一宽:组织度量,先做造钟人,再做报时人

嘉为蓝鲸

DevOps 度量

SpringBoot邮件发送demo

@下一站

编程 email Java core 11月月更

热门资讯:超大规模数字产业生态正在加快构建!

优秀

数字化转型

一年只用一天的系统如何做技术沉淀?_文化 & 方法_郭超_InfoQ精选文章