一位女運維的自述:3年為公司節省10億元!
本文作者將跟大家分享她在騰訊運營成本優化方面的實戰經驗,并探討精細化成本管理的價值是什么。
我是來自騰訊 SNG 社交網絡運營部,簡稱 DSNO(屌絲 NO.1)團隊的一枚大齡女屌絲。下面這張圖上半部分大家很熟悉是王思聰的第一個人生小目標。
作為一枚女屌絲為什么會有比他還大的目標呢?每年年初我們要制定 SNG 成本優化年度目標,過去三年已經用技術手段為公司節省了超過 10 億的現金流。
產品的架構和容量也越來越健康,繼續成本優化變得十分艱難,去年我們團隊小伙伴們定目標時內心是如上圖的。
但理想還是要有的,萬一實現了呢?所以當時我們在迷茫中定下了再優化 3 億元的目標。很幸運,2017 年我們實現了這個目標,并再次獲得公司級獎勵,這是非常不容易的。
因為“成本與質量”是個平衡木,而 2017 年 SNG 產品面臨著激烈的內外競爭,要降低產品質量是根本不可能的。所以跟大家分享如何在保障質量前提下做成本優化。
先問大家一個問題:
我在身邊的同事和朋友圈兒做了同樣的調查,得到的答案差不多,大家對手機流量不怎么在意,不喜歡轉菊花和卡頓。
我自己用的是騰訊大王卡,騰訊系的免流量,其他流量全國 1 元 800 M / 日,我身邊有個開發妹子用的阿里寶卡,1 元 / G 全國日租流量。
我領導用的全球通套餐,他自己也不記得多少錢一個月,反正流量用不完,他說他不缺流量,缺的是時間,但我總發現他會偷偷看小視頻,一看就停不下來。
今年 3 月,政府報告提出“取消流量漫游費,流量資費年內要下降 30% ” 。2020 年 5G 就要問世,網速是 4G 的 5-15 倍。
全國人民流量時代即將來臨,上網時長會增加,將承載更多富媒體應用快速增長。
像 QQ 相冊、朋友圈、微博、Facebook 是以圖片為載體的時代,現在將會有更多快手、抖音、直播基于原創短視頻的傳播,對比文字圖片更具有直觀性,視頻讓人更感同身受,但具有“高帶寬性”。
現在普通手機拍攝的圖片在沒有壓縮的情況下大約 2M,一段 3 分鐘的小視頻大約 20M,直接存儲或傳輸的話,不僅浪費用戶帶寬,而且容易造成菊花和卡頓。
如何在不影響質量的前提下把圖片和視頻壓縮到最小,手機耗電發熱更少、網絡傳輸更快,就是提升了用戶體驗。
說了這么多,這就是我認為成本優化十億元背后的價值,用技術手段為用戶提供低成本高質量的產品體驗。
帶寬優化實戰案例-圖片壓縮
QQ 相冊圖片壓縮
QQ 相冊業務發展較為平穩,總圖片數有上萬億張,每日新增上傳圖片幾百萬張,每日下載圖片幾百億張,外網帶寬日峰值上百 G,成本壓力一直存在。
WebP 圖片壓縮
用戶上傳的圖片一般有三種主流格式:JPEG、PNG 和 GIF 動圖,2015 年 QQ 相冊用 Google 的 WebP 格式用戶上傳的原圖進行后臺壓縮,在保障同等質量下的 WebP 圖片比原圖體積小 30%。
分辨率自適應
用戶終端機型分辨率存在大小不一,但一些產品是以最大分辨率下發的,但中低端機型并不需要高分辨率的圖片,優化為按需返回適當分辨率圖,可節約 20% 的流量。
2015 年做的這 2 個優化都是在保障圖片清晰度不變的前提下,為用戶和企業節約了流量和存儲空間。
GIF 動圖壓縮
2016 年底相冊推出新功能,用戶在發表說說時可以選擇自己的照片合成 GIF 動圖,新功能導致流量增長非常迅猛,對應的外網帶寬成本上增 70%。
流量分析發現僅有 5% 下載次數的 GIF 格式圖片占用了 20% 帶寬,剩下大部分是經過 WebP 格式壓縮過的圖片。
GIF 動圖相當于一組圖片的集合,可以把它看做一個小視頻,但 GIF 格式是一種位圖文件格式,是利用顏色表索引來表示每個像素顏色,然后標記重復出現的數據。
編碼過程對圖片顏色數據沒有損失,是一種無損壓縮方式,相比視頻壓縮算法壓縮率比較低,用戶自己編輯的 GIF 大小普遍在 2-4M,是普通圖片的幾十倍,占用戶和企業的下載流量和存儲都很大。
當時用的開源 WebP 不支持 GIF 動圖壓縮,所以考慮采用其他圖片壓縮格式。
新技術選型 TPG 圖片壓縮
騰訊 SNG 音視頻實驗室基于 AVS2(國家標準內核)開發了 TPG 圖片壓縮格式。采用了視頻編碼模式,利用幀間參考,大幅減少冗余值,提升壓縮率。
特別是在動圖上具有高壓縮率和低編解碼耗時的明顯優勢,經在 QQ 相冊驗證 TPG 可在同等質量下將 GIF 大小降低 90%,將 WebP 再降低 21%,比 JPEG 節約 43% 左右。
并做了編解碼性能的優化,耗時等都優于 WebP。為此 2017 年全面推廣相冊的 TPG 格式化。
右圖是壓縮了 11 倍的 TPG 動圖,人眼主觀觀察質量很難看出區別。
相冊接入 TPG 圖片壓縮-前后臺解決的困難
全客戶端統一后臺配置:相冊圖片展示場景復雜,接入方案要適用于移動、PC、H5 內核等所有客戶端版本,根據用戶客戶端能力優先返還 TPG > WebP > JPG,右圖是后臺搭建的全客戶端統一后臺配置。
分級壓縮、OC 點分片緩存:因為 GIF 比較大,壓縮耗時較長,針對不同大小的 GIF 分級壓縮,小于 2M 的實時壓縮,設置 2s 為超時,2-8M 設置 4s 為超時,大于 8M 的異步壓縮并更新緩存。
同時為了保證 OC 點不會因為 GIF 過大而容易被淘汰,做了分片緩存策略。
兼容性:對于分享出去的 GIF 我們給出原 URL,優先保障用戶體驗。
灰度發布:作為首個大體量全面接入 TPG 的業務,為了保障平滑過渡,首先對新上傳的圖片保障異步壓縮后存儲在源站。
被訪問后圖片會存儲在中間源和 OC 點,大概一個月等 TPG 熱數據占 70% 后,對舊的圖片需要人工觸發或者基于訪問觸發實時壓縮。
廉價轉碼資源
TPG 是利用 AVS2 編碼標準通過非常復雜的計算來提高圖片壓縮比,實際無論是圖片、音頻還是視頻壓縮比的提升都會增加計算復雜度,等于是用計算資源來換帶寬和存儲。
所以帶寬優化需要大量廉價轉碼資源,如果專門采購轉碼服務器,需要大量的現金流。所以我們用 FPGA 轉碼卡與離線平臺軟硬結合來提供廉價計算資源。
離線平臺:離線平臺主要通過部署 Docker 來對 CPU 空閑時段進行資源調度。資源來源有母機超賣池、公司和部門資源池、以及線上低負載設備。
同時為了不影響原有的線上業務和資源池的分配,會通過監控任務的負載狀態來逐步擴縮容,現已實現了小時級調度能力和靈活的分配策略。
FPGA 卡:FPGA 作為一種高性能、低功耗的可編程芯片,可以根據客戶定制來做針對性的算法設計。
所以在處理海量數據的時候,FPGA 相比于 CPU 和 GPU,優勢在于 FPGA計算效率更高。
以相冊TPG轉碼為例,FPGA 卡性能是普通圖片處理服務器的10倍,編碼延時減少 80%,大幅減少用戶等待,采用結合 FPGA 轉碼卡與 Docker 離線軟硬結合,能有效降低轉碼成本,現已節約了幾千臺服務器。
成果:項目在上半年完成,現在 TPG 請求量占 80% 以上,節約了 40% 的帶寬,存儲量減少,節約幾千萬/年,質量上反而由于文件變小,解碼效率提升,用戶等待時長減少了 22%。
全類型多場景的圖片壓縮解決方案
TPG 編碼壓縮雖然在壓縮率上更優,但需要客戶端和 PC 具備解碼 SDK 才能正常使用,現在推廣階段,現網仍存在很多原圖(JPEG、PNG、GIF)請求量。
Guetzli 是 Google 2017 年最新推出的圖片壓縮格式,比同等質量的 JPEG 節約 30%大小,此算法并沒有改變 JPEG 編碼格式,只是對數據進行優化縮減,因此編碼出來的圖片適用于目前已有的解碼器。
但它的計算開銷非常大,耗時不可接受。GPU 相比傳統 CPU 具備高并發的圖片類計算能力,Guetzli & GPU可大幅減少壓縮時間到可接受范圍。現在已有一些場景(漫畫)在用這種方式。
HEIF 是 H.265 標準的建議格式,比 JPEG 小 40%,蘋果 iPhone7 升級 iOS 11 以上拍攝直接生成的是 HEIF 格式,同等質量文件大小和 TPG 差不多。
騰訊的圖片平臺支持這種格式的存儲和請求返回,只需客戶端請求上做改造即可。
相冊、微云都已使用,如果兩個 iPhone7(iOS 11)用戶互發本機拍攝的圖片(HEIF 格式),則無需轉碼可比原 JPEG 圖節約 40% 以上的流量和存儲,在其他不支持的客戶端下載時需轉碼為其他格式。
所以針對部分蘋果用戶體驗更好,要成為主流還有待普及。
經過三年的積累騰訊搭建了一套全類型多場景的圖片壓縮解決方案,根據用戶客戶端情況返還最優的圖片格式,降低業務接入門檻,如下右圖。
帶寬優化實戰案例-視頻
點播類小視頻
冗余下載
原來 QQ 空間的小視頻播放沒做任何限速,一旦開始播放就會以用戶最快的速度進行下載,一個小視頻文件長度大約 80s,在正常網速下不到 20s 就可以下載完成。
但往往用戶并沒有完整看完每個視頻,數據顯示空間用戶的平均播放時長是只有 23s,下載但沒有播放的視頻浪費了用戶和企業的流量。
這種情況很普遍,比如 QQ 音樂里也一樣,一首歌平均時長接近 4 分鐘,高品質音質文件大小是 9M,下載完一首歌只需要 4s 不到,但經常發生剛聽完前奏感覺不對胃口就切歌了。
還有一種場景,在 QQ 里的長視頻(大于 10s)需要先全部下載完才能播放。
用戶在對話框里收到一個視頻,點擊后往往要轉菊花,等下載完一點開發現其實已經看過或并不感興趣,這種情況還浪費了用戶寶貴的時間,體驗更不好。
QQ 空間小視頻限制下載速度
對空間的小視頻控制下載速度,先嘗試限制下載永遠只比播放多 40s,卡頓率在 1.2%,然后將 40s 改為 20s,卡頓率上升到 2.1%,持續驗證,最后調整在 20s。如果用戶網速太差,發生二次緩沖則不限速。
QQ 長視頻實施邊下邊播
針對 QQ 的長視頻啟用邊下邊播策略,用戶點擊視頻后先全速緩沖 20s 然后再以文件碼率進行下載,看一秒下一秒,關閉播放就停止下載。
不需要等下載完才能播放,用戶平均等待時間從 12.6s下降到了 1.77s 左右,極大地提升了用戶體驗。
現在邊下邊播已經成了騰訊視頻業務的標配,改進措施完成后,冗余下載比從 65% 下降到 35% 左右。
空間小視頻歷史優化策略
關閉自動播放:過去 2 年空間小視頻播放量一直在上漲,造成外網帶寬流量也一直上漲。
2017 年以前已經做的優化手段有“高峰期關閉自動播放“(用戶點擊才播放,但現在來看只要在 WiFi 環境下自動播放用戶體驗更順暢,所以也切回去了)。
限制大文件轉發次數:分析下載日志文件大小,有很多大于 1G 以上的文件,這種大文件往往是盜版電影,產品不希望空間是傳播盜版電影的平臺,所以限制了大文件轉發次數。
提高安全打擊準確率和及時率:小視頻的頭部效應非常明顯,少量熱點視頻就占播放量 50% 以上。當時傳播比較火的有色情暴力和搞笑,針對色情暴力提升安全打擊的準確率和及時率。
降碼率:搞笑的很多都是小貓小狗,場景比較簡單,當時我們認為這類視頻流暢比清晰度更重要。
所以可以適當的降低清晰度(碼率),于是系統根據熱度,對每小時 TOP 2000 的熱點視頻后臺壓縮出低碼率進行播放,節約了大量的帶寬。
空間小視頻 H.265 技術選型
碼率太低,質量變差:碼率是數據傳輸時單位時間傳送的數據位數,同一種編碼格式下碼率越高越清晰,當時空間熱點視頻碼率壓縮到 300kps,不到現在普通手機拍攝的 1/3。碼率降到肉眼可識別的程度后用戶體驗就會變差。
但業務持續上漲,需要既節約帶寬又保障質量,所以考慮使用新一代視頻編碼標準 H.265 來提升壓縮率。
新一代編碼標準 H.265:H.265(又名HEVC)是 2013 年 ITU-T VCEG 繼 H.264 之后所制定的新的視頻編碼標準,仍然是采用塊的編碼框架,塊的大小從 16*16 變大為 64*64。
但對比 H.264 創造性采用四叉樹架構,以及采用編碼單元CU、預測單元PU,變化單元 TU,極大地提高了壓縮效率,幀內預測方向從 9 個擴展到 35 個,獲得更好的預測特性,相比 H.264 壓縮率提升 40%。
2016 年當時公司沒有業務嘗試,除了專利風險外,由于 H.265 計算復雜度遠高于 H.264,編解碼都需要硬件在性能上支持。
硬解 & 軟解:解碼有硬解和軟解兩種,硬解碼是使用播放設備(手機和電腦)的硬件解碼。
比如通過專用的 DSP 內核解碼芯片的功率更低,解碼效率更高,現在支持硬解碼的手機比例大概在 70%。安卓客戶端復雜,不確定是否支持解碼。
不具備專用硬件就只能通過軟件利用 CPU 解碼,軟解由于要妥協解碼設備的通用性,所以算法上對效率和質量有折扣,相比硬解更耗時,容易造成手機發熱和耗電。
微信占用戶耗電排行很高,對發熱和耗電量都極為敏感,就不適合軟解方案。視頻普遍比較短才十幾秒的話,解碼耗時也會影響用戶體驗。
我們看 QQ 空間是怎么做的?空間在后臺搭建轉碼能力,客戶端維護一套自動更新的機型庫,綜合 H.265 的不同分辨率對不同手機性能進行自動打分,并動態更新,數據顯示 95% 以上的手機是支持 H.265 軟解的。
于是先上線軟解方案,并開發了一套云適配的后臺兼容方案,可以根據不同的客戶端請求盡量給用戶下發最適合的碼率(高、中、低),盡量讓更多人用到。
硬解比軟解能減少用戶終端 CPU 占用、降低系統開銷、減少耗電和發熱,所以現在要做軟硬結合。
經過一整年的運營,整體 H.265 播放占比從 8% 提升到現在的 30%,壓縮比最高 40%。卡頓率沒有下降,反而提升,用戶體驗更流暢。
實時音視頻
QQ 會議視頻混音
視頻里還有一種場景是實時音視頻通話類,比如 QQ 會議視頻,以往都會是有幾個人同時說話,接收方就接收幾路音頻,然后在客戶端進行混音操作。混音是把多種來源的聲音整合至一個立體音軌或單音音軌中。
客戶端混音改為后臺混音:所以如果能夠在服務端將一個房間所有的用戶聲音先混成一路再下發的話將大大減少我們和用戶的下行帶寬,實際上線后節省近 50% 帶寬。
節省混音計算資源:另外,由于混音比較消耗計算資源,一方面對混音編碼性能進行優化,一方面對用戶的房間數進行性價比分析,對房間數 3 以下的不混音。
質量跟蹤:優化過程中也通過質量評分系統,對用戶質量進行監控。質量隨著混音灰度逐步微升。
直播優化
下圖是企鵝電競正在直播的一場吃雞,可以看到房間在線人數非常高,清晰度有高清、超清和藍光,帶寬成本一直很高。
今年春節期間 NOW 直播的答題業務非常火,每天晚上 8 點會在指定房間出題,觀眾答對可以瓜分每天 100 萬的獎金,最高峰值有 90 萬觀眾同時在線,假設平均碼率 1M,峰值會有 900G 的帶寬,成本非常高。
SNG 直播業務很多,根據每個產品不同特點,分別做了不同的優化。
空間直播是熟人社交,房間人數普遍很少,低于 10 人,小房間走 OC 回源率非常高,浪費 CDN 分發資源,所以使用 IP 直連方式。
NOW 直播的房間稍大(一般數十人到數百人不等),但音頻走的 DC 帶寬,OC 帶寬單價是 DC 帶寬的 1/2 還低,所以就推進 DC 轉 OC。
前面分享了點播類視頻使用 H.265 編解標準節省 40% 的帶寬和存儲,直播由于實時性要求更強,所以結合 GPU 提高轉碼性能,GI1(2 塊卡)的轉碼性能是普通 24 核的CPU 的 9 倍,但采購價格僅是普通 CPU 的 1.6 倍。
分析企鵝電競的房間大小,Top 300 的大主播占據了 61% 的用戶,考慮轉碼資源性價比,只對 Top 300 的主播進行 H.265 優化。
幾萬元采購 GI1 設備,可節約成本 600 萬元/年的帶寬,也為非 WiFi 環境下的用戶節約了流量。
和點播不同,大主播的設備和網絡比較好,一般采用主播上行推 2 路流,一路 H.264 (考慮低端手機硬解能力),一路 H.265。小房間考慮到主播上行帶寬限制和轉碼計算成本,就只出一路 H.264.
NOW 直播答題房間主播同時推 H.264 和 H.265 兩路流可以節約總體 30% 帶寬,可優化力度很大。
精細化碼率優化
帶寬優化案例還有很多,結合產品特色各有千秋,就不一一列舉了,下面我們看一下現在視頻優化的方向。
動態碼率
碼率控制有三種:恒定碼率(CBR)、平均碼率(ABR)、動態碼率(VBR),一般使用的平均碼率,但平均碼率有很多弊端。
根據預測的用戶網絡質量變化:不同的用戶網絡質量不同,同一個用戶網絡質量也會發生變化。所以可以對用戶網絡質量變化進行預測,如果用戶網絡要變差,則下一幀切換到低碼率流。
根據內容分類:不同的視頻內容需要的碼率是不同的,比如體育 NBA 類就比連續劇需要的碼率高,可以在視頻上傳時進行標簽分類,然后給與不同的編碼參數,騰訊視頻使用這個策略后整體碼率節約 10%。
根據場景不同:但同一個視頻里也會出現不同的場景,比如打斗需要的碼率要比風景高,可利用深度學習對場景進行分類,在轉碼時給與不同的編碼參數。
根據 ROI 特征提取,對人眼感興趣區域重點編碼
人眼一般對人物特別是人臉區域的注意力要大于其他區域,比如看下圖是斗魚一姐馮提莫的直播畫面,可以對人臉重點編碼、對人身體和衣服次重點增強、對其他區域適當減弱的策略來轉碼。
自適應分辨率
動態碼率是在用戶網絡條件允許的情況下,找編碼碼率的最優解。而如果用戶網速限制,但又想為用戶提升清晰度的話,可以用自適應分辨率的方式。
在相同播放窗口下(顯示分辨率相同),相同碼率下不同編碼分辨率的質量 PSNR 是不同的,所以在固定碼率和顯示窗口下,有最佳編碼分辨率。
比如用戶選擇高清,用戶帶寬限制碼率在 1.2M,在這個基礎上可以找到適合用戶網速的最佳編碼分辨率進行編碼。
AI 在成本優化中的應用
小馬哥說過在騰訊 AI in every thing,AI 運維也超級火,AI 如何運用在帶寬優化上呢,現在來看落地的壓縮和安全打擊兩個方向。
圖片超分辨率-QQ 相冊
去年 QQ 相冊大圖使用了基于深度神經網絡超分辨率技術。在圖片無損的情況下可節約 75% 的流量和存儲空間。
運用手段是先把圖片像素壓縮一半,圖片 SIZE 壓縮到原來的 1/4,再使用算法進行還原,達到跟原圖相當的清晰度,肉眼無法識別,但圖片大小僅是原圖的 25%。這項技術不僅可以降低帶寬,也可以用于提高用戶體驗。
和業界領先的 Google Raisr 對比,PSNR(峰值信噪比)更高,也就是失真更小,壓縮性能耗時更低。
具體的模型訓練,先采用 1W 張用戶真實圖片,通過調整圖片顏色、高度、對比度、施轉、左右反轉等操作構造上百萬個用戶訓練樣本集。
采用壓縮的方法將訓練樣本圖片寬高各壓縮到原來的 1/2,這部分圖片經過超分處理后再與原來的圖片效果進行比較,根據對比效果進行調整模型參數。
與業界的訓練方法不同,除了對比圖片的損失(PSNR)外,同時引入了可視化評測系統。
峰值信噪比是一種評價圖像的客觀標準,PSNR 值越大,就代表失真越少,越高越好,但它具有局限性,比如人肉眼對于面部會更在意。使用用戶的真實圖片進行可視化評測可達到更佳的超分效果。
AI&安全打擊
空間上小視頻色情問題一直存在而且不斷出現對抗的原因主要是:量級比較大,資源有限很難全量鑒黃,黑產惡意不斷對抗,去年就出現了大量柵格、星星等干擾,傳統的鑒黃手段失效。
空間準入門檻低,UGC(用戶原創內容)有留存功能,很方便當成網盤使用;空間分享功能靈活,可以分享到 QQ,微信,朋友圈等。
涉黃視頻大多是帶有引流信息,空間是網盤,分享是途徑,贏利點是在 QQ 群付費或者微信群紅包、賭博群等。
深度學習模型提升格柵識別能力
針對以上的分析,首先引入新的打擊手段。首先要提升格柵干擾后的識別能力,騰訊安全部門用卷積神經網絡 CNN 搭建了新的打擊模型。
輸入大量的格柵模板進行訓練后,識別能力相比之前大大提升,和現網結合,不斷及時添加新的干擾模版種子,邊使用邊訓練的模式。
模型上線后每日點擊量 TOP 1000 里黃色占比從 25% 下降到 5%,極大地提升了產品的形象和口碑。
OCR 提升招嫖識別能力
很多招嫖類會在美女圖片上配有聯系方式的文字,可以使用 OCR 技術(光學字符識別)。
通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程,簡單的說就是可以提取圖片上的文字,有效打擊招嫖類。
傳統打擊手段弊端
傳統的打擊方式有行為聚類分析,比如涉黃熱度文件里 90% 來源于分享,所以降低分享的打擊預值重點打擊。
通過業務安全的天象系統的養號情況,信安信用度的歷史違規記錄,用戶的批量發表/分享行為,圈定出可疑用戶,對可疑用戶重點監控,降低打擊預值。
但這些傳統手段缺點是用戶隨意改動容易變種,MD5 種子庫種子覆蓋率低,人工審核效率低。
現在有 AI 助力,經過新一輪打擊,空間和 QQ 的視頻帶寬在去年 10 月份有了明顯的下降。
總結方法論
結合這些實際案例,帶寬優化歸納為一小兩少三不變。文件壓縮的更小,下載次數少,冗余下載少,質量不變。
常用的管理和技術手段有很多,如下餅圖:
在優化過程可以運用五部曲:
- 厘清資源消耗構成,在哪些場景,有多少入口,給資源使用建模。
- 對資源消耗 TOP 模塊抓大放小,先解決主要矛盾。
- 對架構和算法實現庖丁解牛,了解產品策略,了解技術選型背后的原因和業界動態。
- 產品策略和技術雙管齊下。
- 產品形態和業界技術可能每個月都會有新的變化,所以動態運營持之以恒。
業務運維還有一個非常痛苦的場景就是做預算,利用精細化成本管理思路為產品做帶寬預測和優化模型。因為數據會變化,所以可以采集數據,系統自動統計帶寬的預算和進行合理性分析。
運維為企業創造更大價值,用技術手段為用戶提供低成本高質量的產品體驗,能做到這點,那運維對企業來說就更具有價值。
范晶晶,騰訊高級工程師,2008 年進騰訊做資源管理和預核算,現在主要從事成本優化工作。SNG 成本優化項目 PM,三年累計為公司節省超 10 億現金流。