今日頭條技術架構到底有多牛

  今日頭條創立於 2012 年 3 月,到目前僅 4 年時間。從十幾個工程師開始研發,到上百人,再到 200 餘人。產品線由內涵段子,到今日頭條,今日特賣,今日電影等產品線。

一、產品背景

  今日頭條是爲用戶提供個性化資訊客戶端。下面就和大家分享一下當前今日頭條的數據(據內部與公開數據綜合):

1、文章抓取與分析

  我們日常產生原創新聞在 1 萬篇左右,包括各大新聞網站和地方站,另外還有一些小說,博客等文章。這些對於工程師來講,寫個 Crawler 並非困難的事。

  接下來,今日頭條會用人工方式對敏感文章進行審覈過濾。此外,今日頭條頭條號目前也有爲數不少的原創文章加入到了內容遴選隊列中。

  接下來我們會對文章進行文本分析,比如分類,標籤、主題抽取,按文章或新聞所在地區,熱度,權重等計算。

2、用戶建模

  當用戶開始使用今日頭條後,對用戶動作的日誌進行實時分析。使用的工具如下:

我們對用戶的興趣進行挖掘,會對用戶的每個動作進行學習。主要使用:

  產生的用戶模型數據和大部分架構一樣,保存在 MySQL/MongoDB(讀寫分離)以及 Memcache/Redis 中。

  隨着用戶量的不斷擴展大,用戶模型處理的機器集羣數量較大。2015 年前爲 7000 臺左右。其中,用戶推薦模型包括以下維度:

此時,需要每時每刻做推薦。

3、新用戶的 “冷啓動”

  今日頭條會通過用戶使用的手機,操作系統,版本等 “識別”。另外,比如用戶通過社交帳號登錄,如新浪微博,頭條會對其好友,粉絲,微博內容及轉發、評論等維度進行對用戶做初步 “畫像”。

  分析用戶的主要參數如下:

  除了手機硬件,今日頭條還會對用戶安裝的 APP 進行分析。例如機型和 APP 結合分析,用小米,用三星的和用蘋果的不同,另外還有用戶瀏覽器的書籤。頭條會實時捕捉用戶對 APP 頻道的動作。另外還包括用戶訂閱的頻道,比如電影,段子,商品等。

4、推薦系統

  推薦系統,也稱推薦引擎。它是今日頭條技術架構的核心部分。包括自動推薦與半自動推薦系統兩種類型:

1) 自動推薦系統

這時需要高效率,大併發的推送系統,上億的用戶都要收到。

2)半自動推薦系統

  頭條的頻道,在技術側劃分的包括分類頻道、興趣標籤頻道、關鍵詞頻道、文本分析等,這些都分成相對獨立的開發團隊。目前已經有 300 + 個分類器,仍在不斷增加新的用戶模型,原來的用戶模型不用撤消,仍然發揮作用。

  在還沒有推出頭條號時,內容主要是抓取其它平臺的文章,然後去重,一年幾百萬級,並不太大。主要是用戶動作日誌收集,興趣收集,用戶模型收集。

  資訊 App 的技術指標,比如屏幕滑動,用戶是不是對一篇都看完,停留時間等都需要我們特別關注

5、數據存儲

  今日頭條使用 MySQL 或 Mongo 持久化存儲 + Memched(Redis),分了很多庫(一個大內存庫),亦嘗試使用了 SSD 的產品。

  今日頭條的圖片存儲,直接放在數據庫中,分佈式保存文件,讀取的時候採用 CDN。

6、消息推送

  消息推送,對於用戶: 及時獲取信息。對運營來講,能夠 提⾼⽤用戶活躍度。比如在今日頭條推送後能夠提升 20% 左右的 DAU,如果沒有推送,會影響 10% 左右 DAU(2015 年數據)。

  推送後要關注的 ROI:點擊率,點擊量。能夠監測到 App 卸載和推送禁用數量。

  今日頭條推送的主要內容包括突發與熱點諮訊,有人評論回覆,站外好友註冊加入。

  在頭條,推送也是個性化:

比如:

  按照城市:遼寧朝陽發生的某個新聞事件,發給朝陽本地的用戶。

  按照興趣:比如京東收購一號店,發給互聯網興趣的用戶。

  推送平臺的工具和選擇,需要具備如下的標準:

  因此,推送後臺應該提供日報,完整的數據後臺,提供 A/B Test 方案支持。

  推送系統一部分使用自有 IDC,在發送量特別大,消耗帶寬較嚴重。可以使用類似阿里雲的服務,可有效節省成本。

二、今日頭條系統架構

三、頭條微服務架構

  今日頭條通過拆分子系統,大的應用拆成小應用,抽象通用層做代碼複用。

系統的分層比較典型。重點在基礎設施,希望通過基礎設施提高快速迭代、容災和一系列的工作,希望各個業務團隊能更快做業務上的迭代以及架構上的調整。

四、今日頭條的虛擬化 PaaS 平臺規劃

通過三層實現,通過 PaaS 平臺統一管理。提供通用 SaaS 服務,同時提供通用的 App 執行引擎。最底層是 IaaS 層。

  IaaS 管理所有的機器,把公有云整合起來,頭條有一些熱點事件會全國推廣推送,對網絡帶寬比較高,我們藉助公有云,需要哪一種類型計算資源,統一抽象起來。基礎設施結合服務化的思路,比如日誌,監控等等功能,業務不需要關注細節就可以享受到基礎設施提供的能力。

五、總結

今日頭條重要的部分在於:

數據生成與採集

數據傳輸。Kafka 做消息總線連接在線和離線系統。

數據入庫。數據倉庫、ETL(抽取轉換加載)

數據計算。數據倉庫中的數據表如何能被高效的查詢很關鍵,因爲這會直接關係到數據分析的效率。常見的查詢引擎可以歸到三個模式中,Batch 類、MPP 類、Cube 類,頭條在 3 種模式上都有所應用。

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