阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

评论

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

DolphinDB与Aliyun HybridDB for PostgreSQL在金融数据集上的比较

DolphinDB

postgresql 阿里云 时序数据库 DolphinDB 数据库开发

云小课 | 需求任务还未分解,该咋整!项目管理Scrum项目工作分解的心酸谁能知?

华为云开发者联盟

项目管理 敏捷 devcloud

GaussDB(DWS)应用实践丨负载管理与作业排队处理方法

华为云开发者联盟

数据 负载 GaussDB

巨头们为什么要开源自己的技术?解析科技企业对软件开源的态度

Marilyn

开源 敏捷开发

忒棒了!阿里P8大牛用这份技术点直接带你玩转高可用服务架构

比伯

Java 编程 架构 互联网 程序人生

12.7作业

张荣召

12.5大数据集群资源管理系统Yarn

张荣召

12.6大数据仓库Hive

张荣召

【涂鸦物联网足迹】物联网常见通信协议

IoT云工坊

物联网 HTTP 通信协议 mqtt coap

第八周大作业

小兵

ICT芯矿链挖矿矿机系统开发平台丨ICT芯矿链源码案例

系统开发咨询1357O98O718

ICT芯矿链矿机系统开发

第五周作业第1题

走走,停停……

快来!开源一份阿里微服务指导手册:SpringBoot+SpringCloud+消息中间件

Java架构追梦

Java 架构 面试 微服务

12.4大数据计算框架MapReduce-架构

张荣召

英特尔唐炯:36.4% PC同比增长,预示了2021是个好年

E科讯

第八周总结

小兵

12.3大数据计算框架MapReduce-编程框架

张荣召

从物理空间到数字世界,数字孪生打造智能化基础设施

华为云开发者联盟

IoT 智能 数字

学习笔记-week12

张荣召

Eclipse Vert.x 4发布

dinstone

Java Reactive Vert.x

H3C核心交换机故障处理通用流程

云原生体系下的技海浮沉与理论探索

阿里巴巴云原生

Serverless 容器 微服务 云原生 k8s

探究神秘的SpringMVC,寻找遗失的web.xml踪迹

996小迁

Java 编程 程序员 架构 面试

Java中CAS原理分析(volatile和synchronized浅析)

叫练

volatile 多线程 synchronized CAS JUC

12.2分布式文件系统

张荣召

12.1大数据技术发展史

张荣召

架构师训练营第 1 期 第 12 周作业

李循律

极客大学架构师训练营

话题讨论 | 作为程序员你的业余爱好是什么呢?

小天同学

话题讨论 业余爱好

Gemini双子新约交易所系统软件APP开发

系统开发

Norvarm波场链系统开发方案丨Norvarm波场源码功能

系统开发咨询1357O98O718

Norvarm波场链系统开发

我看技术人的成长路径

阿里巴巴云原生

开发者 云原生 技术人 自我思考 职场成长

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