直播大廳 直播列表的刷新 問(wèn)題: 作為 App 的入口,其高可用十 分重要 用戶(hù)點(diǎn)擊進(jìn)入直播間后,發(fā)現(xiàn)直 播已經(jīng)結(jié)束,體驗(yàn)不好 主播們及時(shí)露出、吸引粉絲的需 求
[5.] 直播大廳 實(shí)踐方案: 1、多種刷新機(jī)制相結(jié)合 全量刷新 頂部刷新,按滑屏的偏移 局部刷新,對(duì)直播流進(jìn)行分組, 只更新用戶(hù)當(dāng)前界面的直播流; 便于服務(wù)端實(shí)施緩存策略 刷新的時(shí)間間隔可配置
[6.] 直播大廳 實(shí)踐方案: 2、用戶(hù)體驗(yàn)方面 用戶(hù)當(dāng)前正在滑動(dòng)屏幕時(shí),延遲 刷新當(dāng)前界面
[7.] 直播大廳 問(wèn)題:進(jìn)入直播間速度的優(yōu)化 常見(jiàn)現(xiàn)象: 用戶(hù)點(diǎn)擊某個(gè)直播之后,進(jìn)入直 播間頁(yè)面較慢 直播間內(nèi)視頻遲遲加載不出來(lái) 主播開(kāi)播后反映人氣一直上不去
[8.] 直播大廳 問(wèn)題:進(jìn)入直播間速度的優(yōu)化 原因分析: 獲取視頻流時(shí)建立網(wǎng)絡(luò)連接的耗時(shí) 直播間內(nèi)業(yè)務(wù)模塊眾多,界面初始 化耗時(shí)
[9.] 直播大廳 問(wèn)題:進(jìn)入直播間速度的優(yōu)化 解決思路: 在直播間大廳預(yù)先解析視頻流地 址,從而加快獲取視頻數(shù)據(jù) 對(duì)房間內(nèi)部分UI模塊使用懶加載 方式,如公聊、用戶(hù)列表等
[10.] 直播間 業(yè)務(wù)模塊劃分 音視頻 公聊 消息 直播間 點(diǎn)贊、 分享 …. 禮物 展示 連線(xiàn)
[11.] 直播間 直播間內(nèi)的優(yōu)化 1. 定時(shí)器事件調(diào)度 1. 房間內(nèi)長(zhǎng)連接消息的處理 1. 動(dòng)畫(huà)展示 1. 主播端的體驗(yàn)優(yōu)化
[12.] 直播間 統(tǒng)一的定時(shí)器事件調(diào)度 獲取直播 狀態(tài) 刷新 公聊 …. 刷新用戶(hù)列表 按不同時(shí)間間隔 調(diào)度事件 拉取私信 展示 點(diǎn)贊 展示 彈幕 展示 禮物
[13.] 直播間 公聊消息列表刷新 問(wèn)題現(xiàn)象: 熱門(mén)直播間大量的公聊消息使得列 表持續(xù)快速刷新,導(dǎo)致主線(xiàn)程 CPU 占用很高,影響整體界面交互
[14.] 直播間 公聊消息列表刷新 優(yōu)化思路: 將處理長(zhǎng)連接消息的 SocketIO庫(kù)中的 block 執(zhí)行線(xiàn)程設(shè)置 為非主線(xiàn)程,緩解主線(xiàn)程的 CPU 占用
[15.] 直播間 公聊消息列表刷新 優(yōu)化思路: 實(shí)時(shí)統(tǒng)計(jì)單位時(shí)間內(nèi)收到的消息數(shù)目, 在性能較低的機(jī)型上,動(dòng)態(tài)調(diào)整公聊 列表的刷新頻率
[16.] 直播間 公聊消息列表刷新 優(yōu)化思路: 使用隊(duì)列暫存消息,每條公聊消息到來(lái) 時(shí)不直接刷新列表 批量的 pop 隊(duì)列中的消息,只保留最 近收到的一些消息進(jìn)行滾動(dòng)刷新
[17.] 直播間 公聊消息列表刷新 優(yōu)化效果: 熱門(mén)直播間內(nèi) FPS 從最初的10上升至 20以上,界面卡頓明顯改善
[18.] 直播間 問(wèn)題: 大量的禮物動(dòng)畫(huà)如何進(jìn)行流暢的展示 優(yōu)化思路: 根據(jù)禮物類(lèi)型,使用不同的隊(duì)列存放待 展示的禮物消息,隊(duì)列區(qū)分優(yōu)先級(jí) 使用內(nèi)存池,緩存點(diǎn)贊和彈幕中執(zhí)行動(dòng) 畫(huà)的 view/layer,以重復(fù)使用 全屏動(dòng)畫(huà)都使用 Core Animation動(dòng)畫(huà), 取代 Gif 動(dòng)畫(huà)
[19.] 直播間 問(wèn)題: 大量的禮物動(dòng)畫(huà)如何進(jìn)行流暢的展示 測(cè)試優(yōu)化效果: 測(cè)試環(huán)境中,服務(wù)端配置自動(dòng)送禮腳本, 對(duì)各種送禮動(dòng)畫(huà)進(jìn)行壓力測(cè)試 和其他業(yè)務(wù)模塊結(jié)合起來(lái)測(cè)試,比如開(kāi) 啟美顏和連麥等功能,測(cè)試整體界面的 流暢性
[20.] 直播間 問(wèn)題: 大量的禮物動(dòng)畫(huà)如何進(jìn)行流暢的展示 測(cè)試優(yōu)化效果: 導(dǎo)入線(xiàn)上熱門(mén)直播間的廣播消息數(shù)據(jù), 進(jìn)行真實(shí)環(huán)境的測(cè)試
[21.] 直播間 直播端體驗(yàn)的優(yōu)化 問(wèn)題:主播直播了很久,好不容易上了熱門(mén),發(fā)生App 崩潰如何 處理 解決思路: 開(kāi)始直播時(shí)保存推流地址等信息 App 崩潰后,再次啟動(dòng)可以繼續(xù)直播 恢復(fù)效果上相當(dāng)于一次切后臺(tái)的操作
[22.] 直播間 直播端體驗(yàn)的優(yōu)化 問(wèn)題:如何應(yīng)對(duì)運(yùn)營(yíng)活動(dòng)時(shí)的房 間內(nèi)的消息壓力 問(wèn)題現(xiàn)象: 短時(shí)間內(nèi)服務(wù)器廣播消息壓力 非常大 公聊和禮物消息持續(xù)刷屏,主 播直播嚴(yán)重受干擾
[23.] 直播間 直播端體驗(yàn)的優(yōu)化 問(wèn)題:如何應(yīng)對(duì)運(yùn)營(yíng)活動(dòng)時(shí)的房間內(nèi) 的消息壓力 解決思路: 服務(wù)降級(jí),下發(fā)限制客戶(hù)端公聊 和禮物消息發(fā)送頻率的命令 限制點(diǎn)贊和部分禮物的動(dòng)畫(huà)展示
[24.] 直播間 減輕服務(wù)端并發(fā)請(qǐng)求方面的優(yōu)化 問(wèn)題場(chǎng)景: 用戶(hù)關(guān)注關(guān)系的拉取 ? 每次進(jìn)入直播間,都需要請(qǐng)求用戶(hù)列 表中的關(guān)注關(guān)系 ? 主播結(jié)束直播時(shí),用戶(hù)都需要拉取和 主播的關(guān)注關(guān)系 推送消息 ? 明星用戶(hù)開(kāi)播全量推送時(shí),大量客戶(hù) 端同時(shí)拉取大廳直播列表
[25.] 直播間 減輕服務(wù)端并發(fā)請(qǐng)求方面的優(yōu)化 解決思路: 對(duì)用戶(hù)profile、關(guān)注關(guān)系等信息進(jìn) 行緩存 收到直播推送時(shí),不立即刷新直播列 表,延遲到退出直播間后再啟動(dòng)大廳 刷新機(jī)制
[26.] 直播間 客戶(hù)端首次啟動(dòng)方面的優(yōu)化 問(wèn)題場(chǎng)景: 用戶(hù)安裝映客后首次啟動(dòng)App,點(diǎn)擊登錄按鈕出現(xiàn)卡頓 原因: 客戶(hù)端啟動(dòng)時(shí),需要下載大量的圖片資源,網(wǎng)絡(luò)請(qǐng)求和文件 操作頻繁 解決思路: 對(duì)部分禮物和等級(jí)圖標(biāo)資源進(jìn)行內(nèi)置,增量下載更新
[27.] 私信消息 私信消息模塊的整體設(shè)計(jì) 私信消息 UI API 接 口 Model Cache Database 操作 通知
[28.] 私信消息 優(yōu)化點(diǎn):私信聊天頁(yè)面的打開(kāi)速度和消息瀏覽的體驗(yàn) 思路: 內(nèi)存中只緩存少量的幾十條數(shù)據(jù)用于展示,滑屏瀏覽 時(shí),動(dòng)態(tài)更新緩存內(nèi)容