當前位置:
首頁 > 科技 > 存儲一萬億張圖片,需要怎樣的架構?

存儲一萬億張圖片,需要怎樣的架構?

嘉賓|付強

編輯|David

QQ 空間(Qzone)是騰訊公司於 2005 年開發出來的個性化空間,12 年過去,目前 QQ 空間用戶數量達到 6.233 億。其中,QQ 空間背後的平台照片總數接近 1 萬億,在這背後的存儲架構是怎樣的?

2017 年 10 月 17-19 日,QCon 全球軟體開發大會將在上海寶華萬豪酒店舉行。本次大會設置了《快速變化的互聯網架構》等技術專題來深入解讀互聯網圈超快速發展的公司在業務架構進行的各種創新和嘗試,其中邀請了騰訊 QQ 空間後台開發 Leader 付強老師前來分享《億萬圖片服務平台——QQ 空間海量照片服務平台架構設計與實踐》。

我們藉此機會採訪了付強老師,他為我們帶來了有關 QQ 空間海量系統設計的思考和經驗,希望可以為大家帶來啟發。如果讀者想了解更多 QQ 空間圖片平台架構設計的過程和總結,歡迎報名參加 QCon 上海站與付強老師進一步交流。

1

受訪嘉賓介紹

付強,騰訊 QQ 空間後台開發 Leader。

負責國內最大的 UGC 圖片平台架構設計與開發工作。有著多年的海量系統設計與移動環境下優化經驗,對分散式資料庫架構,高可用高並發系統設計等方面都有較深刻的理解,目前平台照片總數接近 1 萬億。

負責過多個技術優化項目,每年帶來成本節省超過 1 億元。目前致力於推動機器學習在圖片領域的探索。

2

QQ 空間後台開發團隊的背後協作

首先先介紹我們 QQ 空間後台開發團隊,QQ 空間相冊後台整條鏈路相關的團隊有 5 個:

負責相冊業務開發與整體優化的相冊後台團隊;

負責圖片處理的存儲開發團隊;

負責底層結構化資料庫開發的數據開發小組;

負責冷數據備份研究的一個小組;

負責業務運維與機器管理的運維團隊

除此之外我們對接對接客戶端 IOS,AND,前端 H5 與 WEB 開發的各有一個小組,對接具體項目的推進。

目前我們團隊主要負責相冊的架構優化,整個系統的性能提升,成本優化,產品特性開發與相冊歷史數據的挖掘以及推動機器學習在相冊照片相關場景的探索與應用。

我們不同技術團隊的分工與配合主要有兩種方式:

一種是具體項目合作的方式。這種一般是目標比較明確的具體項目推進,各個團隊一起參與進來,會有具體的項目負責人和項目經理進行職能的分工與項目進度管理。

另外一種是基於各小組的職能劃分,做一些長線探索與技術預研。比如存儲方面的深入預研,新型圖片格式的研究與推廣,低成本的數據備份技術,統一運營管理平台等。很多技術成果同時復用與推廣到到內部產品比如微信,微雲,郵箱,騰訊雲上。

在騰訊內部,只要你目標比較明確並且有足夠的挑戰,這方面的推動合作往往比較順利。比如我們上半年與音視頻合作的採用 TPG 圖片流量優化項目,涉及 4 個部門的多個團隊。整個移動端流量優化掉 60%。對於 GIF 格式的圖片的節省流量 90% 以上。

3

回顧 12 年老產品的開發之道

QQ 空間已經是有 12 年的「老」產品了,經過 12 年的反覆迭代與演化,可以說空間是目前最複雜的產品之一。因為涉及業務廣、入口與場景多、歷史包袱重,所以一度我們飽受開發效率和維護代價的困擾。目前針對這個問題我們的做法是:

第一,多從產品層面切入與優化,包括歷史邏輯(業務)的清理與下線。

同時對於新上的業務邏輯,在設計之初就充分考慮邏輯的解耦與下線邏輯內置。事實證明,基於產品層面業務邏輯的優化對於清理歷史包袱有很直接的貢獻,這一點往往很容易被開發者忽視。

第二,代碼架構設計多考慮擴展性與功能復用。

這一部分我們的做法是多做一些底層的通用標準化組件框架,比如我們現有的 CGI 的組件、Server 開發的組件、移動端接入的組件等等,這樣可以把和很多的業務邏輯處理標準化起來,節省不少開發與維護成本。

即使這樣,隨著業務的不斷變化,目前我們的代碼還是存在很大的冗餘與需要優化的地方,這裡的矛盾是業務的重構與優化是無止境的,而對於業務開發來說,資源與時間都很緊缺。

這裡我們的經驗是把代碼重構與需求開發結合起來,在我們的業務開發過程中附加上部分重構優化的工作,或者把架構優化跟成本優化結合起來,這樣能更好地推進重構的進展。

4

平台照片接近 1 萬億的困境與架構優化的四個階段

從用戶層面考慮,隨著業務規模的變大,意味著所面臨的問題會隨指數級放大。

對於業務規模比較小的系統,萬分之一概率出現的系統問題可以不用太關注,但當業務規模達到萬億級別時,哪怕是百萬分之一、千萬分之一概率的問題也會因為這個系統規模進行極端放大,因為會影響到相當基數的用戶而變成不得不優化解決的問題。

同時從業務層面考慮,你的體量起來了,這裡的業務成本與運營代價也會變成不得不經常考慮的問題。

我們業務的第一次架構優化是從 MySQL 集群升級成自研的海量文件系統 TFS(Tencent File System), 支持用戶數據規模可以達到 EB 級別,在這當時看來基本相當於整個系統的無限容量的平等擴展了。這個階段一舉解決了容量問題,為業務量的爆發打下了基石。

我們優化的第二階段主要集中解決用戶的接入問題,包括極速上傳、跨運營商接入、下載加速,優化後帶來了用戶較大體驗的提升與數據量的大量增長。

隨著新型存儲介質的出現,以及用戶面對照片容量與性能的要求,第三階段我們的優化重點主要是進行 TFS 的重新設計,主要支持了單個用戶的無限容量,同時採用了基於 SSD 介質(TSSD)和高速索引升級版的 TFS,同時對冷數據進行特殊處理以降低成本。

架構優化的第四階段主要是針對移動端、弱網路進行優化。目前我們優化方向主要集中在高性能,低成本與更強的數據處理能力方面。

現有的系統從存儲容量上來看,我們實際容量目前達到了 0.4EB,單從容量這一維度來看,目前的架構完全可以滿足未來十年的發展。

在整個架構迭代過程中我們仍保持了高性能,一方面我們架構設計主要的設計思想是簡單,包括業務邏輯的簡化,與處理過程的簡化;另一個點是我們目前採用的是結構化存儲,能夠針系統進行針對性的優化,這也對高性能有比較大的貢獻。

最後我們會考慮整個系統全端優化,能夠從用戶端到終落地的存儲各環節進行系統的優化來保證高性能。目前我們的存儲架構也面臨主要問題是結構化存儲的靈活性比較差一些,這裡我們也在借鑒業界的一些思想。

5

自研和開源

其實騰訊內部有很豐富的內部組件與開源軟體。

存儲來說,像基於 SSD 盤 Key-value 型海量存儲系統 TSSD,內存與 SSD 混合型存儲的 CKV,基於目錄管理的海量文件系統 TFS 和冷存儲系統 BTFS。

可以說,在主流互聯網公司使用的開源組件在騰訊基本都可以找到對標的產品與解決方案。目前我們使用的組件自研的佔比相對多些,主要原因是這些組件都有專門的內部維護團隊,而且基本都經過了線上大規模業務的考驗與優化,可靠性與實用性比較有保證。

同時我們工程中也有較多的使用開源組件,比如 Redis, Kafka, Ngnix, raft 等都有在我們工程中應用。目前一般獨立的模塊,中小型的系統我們比較傾向採用開源的框架,靈活性比較好。目前騰訊本身的思路也是盡量把內部好的組件開源出去。

6

為什麼要引入機器學習?

機型學習目前的三大應用方向:圖片(計算機視覺)、語音、文字。我們積累了超海量的有價值的圖片數據。同時之前從我們部門發展出的優圖實驗室,在機器學習上面積累很深技術儲備。最後,基於我們的產品形態、機器學習的成果能夠很好的與業務場景結合併進行產品價值的最大化。

所以綜合來說,我們具備「天時」、「地理」、「人和」三大因素,進行圖片相關的 AI 結合的項目是比較自然的。上半年我們主要在做兩個與圖片相結合的項目:

第一個是使用機器學習來進行圖片內容的識別與用戶身份的識別,我們主要使用線上機器的空閑時段來進跑訓練好的模型進行圖片處理,目前應該是業界規模最大的圖片處理系統,每天高峰時處理圖片上百億。

另一個主要是利用客戶端的 GPU 和 CPU 能力來進行圖片的超解析度的應用,這個項目也已經上線,能夠充分把客戶端的處理能力發掘出來,在保證清晰度的情況下節省用戶 75% 的帶寬。經過極致優化,能夠在 80% 以上的手機上能把訓練好的模型跑起來。

上述兩個項目都取得了不錯的效果。隨著移動端性能的越來越強,包括現在 GPU 慢慢成為手機的標配,同時結合數據不斷積累與演算法研究不斷突破,AI 相關的應用應該是未來的一個大方向,我們也希望在這一塊有更多的發力。

7

存儲的未來與建議

存儲發展到今天,數據規模與性能目前來看已經不是最大的挑戰。這兩者目前來看應該都是走在業務前面的。目前比較有挑戰的問題主要還是集中在儲存系統自帶的數據加工處理能力,包括智能數據處理以及大規模存儲對價格的要求。目前我們比較關注近幾年出現的 NewSQL 和 JBOD,並且有望借鑒引入到我們系統中來。

作為後台開發 Leader, 這些年最大的感受應該是不要把自己完全局限在後台這個領域。實際上前台相關的知識、業務相關的知識,還有通用的包括流程處理相關的知識能夠很好地幫助你全面成長。

目前的分散式資料庫架構很多,而且不斷有新的架構湧現出來,如果要學習這方面的知識的話,建議結合自己的項目或者所做的工具,引入一種最好是開源的框架進行深入學習,最好是以應用過程中碰到的問題來驅動。只要深入進行你會發現,其實很多高並發系統的設計思想是相通的。

QCon:感謝付強老師接受我們的採訪,期待您在 QCon 上海站分享的《億萬圖片服務平台——QQ 空間海量照片服務平台架構設計與實踐》。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

Yahoo開源實時大數據處理服務系統Vespa
那個瘋狂歲月里,蘋果公司的工程師文化
無人駕駛技術紛繁複雜,如何快速找到學習切入點?
Twitter 大數據實時計算的經驗分享
深入理解AI、微服務、IoT,光想「上層建築」還不夠

TAG:InfoQ |