Categories
程式開發

一年只用一天的系統如何做技術沉澱?


今年是雙11的第11年,貓晚的第五年。

今年的天貓雙11狂歡夜(簡稱“貓晚”):有超200個國家和地區通過優酷APP觀看貓晚直播;共有5144萬人通過貓晚公益直播間觀看明星賣農貨,網友在淘寶直播間點贊1億次。今年貓晚海外藝人參與的節目超過了四成,晚會版權輸出到106個國家和地區,實現了除南極洲外的全覆蓋。

一年只用一天的系統如何做技術沉澱? 1

2019“貓晚”現場,圖為騰格爾唱《High歌》

2019貓晚不僅在優酷,還打通手淘、天貓等APP,實現了多屏、多端、雙向的互動,將互聯網晚會的互動形態推進到3.0時代。如晚會上跑男隊和街舞隊在一個4×8米的巨型觸摸屏上玩起了“好禮對對碰”遊戲。優酷和淘寶的網友在APP端也可以選擇加入某一戰隊,遊戲比分實時計入明星嘉賓的成績中,影響節目進程。觀眾還可以通過互動打賞給喜愛的節目“打call”,優酷直播間63%觀看晚會的用戶參與了互動,較去年增長7%。

很榮幸,我能有機會參與到雙11貓晚項目,藉這個機會給大家分享技術在貓晚落地的過程和思考。

技術目標如何定

貓晚KO時,總負責人說貓晚是給天貓雙11消費者辦的晚會及回饋,所以我們目標不僅要給消費者提供視覺盛宴,還要給消費者帶來實惠,要給商家帶貨;雖然自古忠義不能兩全,魚與熊掌不可兼得,但是項目組同學即使執手相看淚眼竟無語凝噎也要咬牙接下有挑戰的目標。基於這幾個方向團隊開始做分解,貓晚產品技術運營設計團隊核心要承載晚會的傳播影響力、豐富有趣的互動形式、以及進店的引導和讓消費者實惠的權益發放。

明確定位後貓晚的核心業務目標相對就清晰了,基於業務目標技術同學進一步分解首要是業務目標支撐,穩定是底線、體驗要保證、權益全發放、不能有資損(還有團隊有成長、系統有沉澱)。

一年只用一天的系統如何做技術沉澱? 2

業務技術大圖

所以貓晚技術目標制定的思考路徑是,首先是看行業、看大盤、看業務、看團隊;然後分解目標,找到關鍵指標和抓手及相關團隊;最後去量化,定有挑戰的指標和倒計時的里程碑

一年只用一天的系統如何做技術沉澱? 3

制定技術目標圖

技術如何保障公平一致的體驗

體驗一致是因為晚會公域互動主打手淘、優酷、天貓APP,為即將到來的雙11預熱,讓用戶在看晚會時候就能邊看邊玩、邊玩邊買,所以主持人口播時候每次都會提醒打開手機搖一搖可以在手淘、天貓和優酷APP參與互動,這就要求多端需要同時彈起和關閉互動、展示內容一致、玩法一致、抽獎時間一致。

基於以上幾個需求,貓晚今年的解法是第一次完全一套代碼,運行到手淘、天貓和優酷,在優酷側部署的代理服務只承載轉發和適配不做其他任何業務、核心服務部署到集團機房承載所有的互動玩法和權益發放,技術架構圖如下:

一年只用一天的系統如何做技術沉澱? 4

技術架構圖

提到公平,為什麼存在公平性的問題?

核心原因在於因為不可抗力的用戶網絡延遲、現場信號延遲以及內容生產製作過程中的延遲,如果技術上不處理可能存在的問題大家互動彈起的時間分佈完全不同,那麼很可能你還沒開始遊戲或者正在玩遊戲,有的人已經把那些一元購以及終極大獎替你還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晚上現場同學頂住壓力,完美呈現首次雙向聯動。

一年只用一天的系統如何做技術沉澱? 5一年只用一天的系統如何做技術沉澱? 6一年只用一天的系統如何做技術沉澱? 7

現場和線上雙向互動圖

一年只用一天的系統如何做技術沉澱? 8

大屏交互示意圖

回到現場大屏操作異常時準備的預案,重點說明進場前技術準備的只有一級預案,後面的全是隨機應變根據現場情況和產品同學一起討論臨時制定的預案。

  • 一級預案晚會前演練觸摸使用,異常檢修;
  • 二級預案是無法檢修換大屏機器;
  • 三級預案是大屏機器無法更換,需要看台固定1機位,導播車有1人保證機位不會切換,看台口令員和操作員配合鍵盤同步明星現場操作;
  • 四級預案是操作員1的電腦或鍵盤異常,熱備2機器和熱備2同學操作。

總結:

  1. 預案一定要可應急、可執行、已演練、甚至需要準備備胎的備胎;
  2. 技術要有追求,多想可能的辦法,時間越緊張越要把預案做細,做簡單。

總結:一年只用一天的系統如何做技術沉澱

像天貓雙11晚會類似的項目,平時不承載流量,沒有專門的維護團隊,隨著貓晚啟動抽調各個團隊來共同承擔,參與到項目的技術同學該如何讓自己成長和收穫呢?我自己總結有以下幾點:

  1. 學會思考和製定技術目標;
  2. 鍛煉技術PM能力,不設邊界,有技術預判,識別解決風險,保障目標堅決落地;
  3. 有匠心:對性能和體驗及技術方案上需要極致、細緻;
  4. 為後人栽樹:工具、組件、產品、組織能力沉澱;
  5. 复盤能力:复盤從參與項目的第一天開始,思考突破與沈淀;
  6. 拓寬視野:偶爾跳出專業領域,發現技術外的視角,看其他領域及合作團隊的思考,學習周邊優秀的小伙伴。

感謝

因為人員太多,無法一一感謝,感謝阿里文娛貓晚的所有同學,因為有我們2019雙11貓晚更精彩。

一年只用一天的系統如何做技術沉澱? 9

入駐現場的我們

一年只用一天的系統如何做技術沉澱? 10

貓晚開始前現場作戰室的我們

一年只用一天的系統如何做技術沉澱? 11

現場沒時間看易烊千璽、看泰勒、看馬老師的我們