短視頻 APP 相關推薦資源位的高擴展高可用工程實踐

導讀:短視頻在如今已經是非常重要的內容載體,在短視頻播放時如給予用戶進行如相關視頻、商品、遊戲、活動等優質內容的推薦,不僅能提升用戶的使用粘性,也能極大的豐富內容的生態,本文會詳細介紹在短視頻 APP 相關頁面做內容推薦入口位置的設計實踐。

一、背景

1.1 推薦產品的流量精細化運營

搜索行爲的用戶通常較爲明確自己的需求和問題,技術的重心是針對問題返回準確的答案。推薦產品則反之,用戶消遣時間是主要的目的,技術的重心是幫助用戶挖掘潛在需求,需要通過與用戶的交互逐步瞭解用戶的喜好,給予用戶提供相應的內容、服務等。如果說用戶觀看完當前視頻再次請求,我們給予推薦新的視頻主要是基於用戶緯度進行內容推薦,那在當前視頻播放時我們在本頁面及時推薦一些內容服務就是細化到用戶 + 視頻維度,這就是短視頻相關資源推薦位的意義和價值。

1.2. 資源位示例

1.3 這個位置要具備怎樣的能力

通用性: 由於短視頻內容可能在多個 APP 或者產品中都會進行分發,並且主要分發形式都是視頻列表頁、視頻落地頁等,所以這個位置是共性需求。再此基礎上如果每個產品獨立去開發這個位置就是重複勞動,成本高昂,所以我們需要一個通用的能力來解決這個問題。

穩定性: 短視頻的分發的量級是非常大的,並且經常出現在 APP 首頁這樣關鍵的位置,那麼服務的穩定性無疑是非常重要的一環,極端情況下服務徹底不可用也不能影響視頻播放本身。

擴展性: 如示例所示這個位置除了提供視頻、文章等內容服務外,還會提供活動推廣、遊戲下載、商品掛載等服務,這些內容及服務可能來自於各個產品線,怎麼快速、低成本的接入管理這些產品線的內容和服務是快速豐富這個位置能力的關鍵因素。

智能性: 這個位置接入的內容和服務足夠多後,更重要的就是給予用戶推薦更合適的內容和服務,以及在一些服務的性能出現問題進行降級,讓這個位置充分的發揮其價值。

二、設計與實踐

2.1 抽象化、標準化解決通用性問題

資源位最核心的能力就是:

  1. 給誰分發展示

  2. 分發什麼內容

由此可以抽象出以下位置分發能力和卡片內容定義兩個部分。

產品側只需要定義好卡片的樣式內容和決定分發的位置和人羣等就可以將自身內容、服務輸出給指定用戶,這就是第一個階段,提供通用性內容服務 -> 用戶的通路。

2.2 高併發下保證可用性、降低平響

作爲一個面向多個產品線的基礎服務,應用場景如首頁、活動頁等,qps 的量級將至少以 10w 爲單位計數,設計上響應時間需要穩定控制在 50ms 內,從而避免對產品本身的性能造成影響。

2.2.1 降級策略保證整體可用性

1. 降級的定義

因流量或服務器壓力劇增,可能引發服務宕機或級聯性崩潰。在有限資源的情況下,服務端不得不按優先級區分處理業務,即優先保證核心業務的正常運行,而對非核心業務用做簡單折中處理,如快速失敗,或返回緩存數據等等,避免佔用更多資源,稱之爲服務降級。降級的目的是在服務自身性能達到瓶頸,或網絡硬件應用等依賴的資源出現異常時,儘可能保證核心業務正常運行,進一步保證系統整體的可用性和穩定性。

2. 降級的特點

3. 常用策略

限流 (拒絕, 緩存), 熔斷 (快速失敗, 緩存)

4. 選取策略

資源卡片的內容和服務大多由內容服務團隊提供,所以我們需要實時監測這些服務,避免由於某個服務的問題導致整體服務出現問題。

2.2.2 存儲優化,提升平響、穩定性

1. 業務需求和特徵

業務數據特點:

分發側需求:

業務進行分類:

用戶使用特徵:

2. 基於以上需求特徵確定存儲方案如下

2.2.3 多路數據獲取,性能優先

併發多路請求下游服務,設定超時時間,將最終未超時返回的數據進行後續策略處理確定最終分發數據。由於受限與機器連接數,核心要點是要平衡好併發的數量和超時時間,二則呈負相關。

我們的目的是儘可能的請求更多的服務來獲取內容和服務以便給出用戶最佳推薦,達成這個目的依賴於我們對於服務的精細化管理。

2.3 平臺工具化保證快速業務接入

1. 設計背景:

2. 設計目標:

2.3.1 資源模板化、下發規則插件化,應用規則引擎,靈活組裝上線

  1. 業務方選取展現物料模板,填充物料,確定展示樣式。

  2. 下圖下發規則組件化由接入業務方自由選取組合,平臺進行最終審覈上線。

規則引擎運轉步驟:

  1. 創建規則引擎對象

  2. 向引擎中加載規則集或更換規則集

  3. 向引擎的前置過濾規則提交需要被規則集處理的數據對象獲取處理結果

  4. 根據處理結果獲取需求的物料數據

  5. 將物料數據提交給規則引擎的後置聚合規則

  6. 輸出引擎執行結果

規則引擎核心設計:

  1. 判斷資源在哪裏出與不出,業務上由於已經沉澱出絕大部分的規則,且規則變化不大,核心在於規則中的條件變更,所以基於業務和成本考量不建設複雜的規則編輯和解析能力,規則將以組件化的形式存在,可以動態維護規則得變量參數,如 app 下發規則,規則變量參數爲下發端的名稱,應用規則時變量參數爲端名稱、條件、是否下發,如新業務需要新增規則再進行組件開發,主要核心能力在於組裝管理規則組件。

  2. 判斷資源出什麼,業務方選擇物料模板填充物料,如跳轉地址以及地址裏的參數和用戶、端、版本等因素都會有一定的關係,所以在輸出的時候需要進行動態的轉化,這個也需要通過規則得方式進行數據轉化。

且: 規則定義爲執行的一條執行鏈路,所有的規則都命中爲下發則下發,一條命中不下發則不下發。

從屬: 規則存在從屬關係,有配套父子關係,如規則 a 下有從屬 b、c,配置 a 時可以配置從屬 b、c 規則,如版本和規則下發規則從屬與端下發規則,只有端下發規則生效從屬規則纔有意義,完整規則鏈條是:a(分發端) b (>=xx 版本) c(在端什麼頁面) 進行下發。

2.3.2 資源下發錄製回放

通過記錄並模仿用戶的行爲完成 case 的復現、業務探活、上線迴歸。

2.4 智能調度分發策略保證用戶體驗

通過前後端打點,獲取推薦卡片的點、展、觀看時長等數據,結合實驗進行統計分析,動態完成業務質量評估結合用戶畫像來實時調整下發策略。

2.4.1 接入業務質量評估及迭代處理

根據下發資源卡片的打點數據,定期進行業務自動化評估,根據評估數據,持續迭代淘汰質量較差的業務資源。

2.4.2 動態策略返回最優內容

根據用戶畫像及接入業務服務的性能及健康狀態,實時計算資源下發的分配份額,基於份額進行資源下發調配。

三、總結

前期重通路及可用性完成基礎能力構建,打通業務側內容、服務供給,用戶側內容消費、服務使用的閉環,通過存儲優化、性能優化保證了服務的可用性。後期重效率、質量通過平臺建設,應用插件設計、規則引擎提升業務接入效率,通過流量回放來降低事故率、業務迴歸測試成本,最終通過智能調度策略保障平臺生態質量,避免無序擴張而影響應用資源卡片的業務本身。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/rpNBlvj7u4aOR9EWtJW-ow