今日頭條技術架構分析

2022-02-07 21:04:50 字數 2364 閱讀 4620

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

2023年5月1.5億,2023年5月3億,2023年5月份為5億。幾乎為成倍增長。

2023年為1000萬日活,2023年為3000萬日活。

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

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

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

- scribe

- flume

- kafka

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

- hadoop

- storm

​ ​ 產生的使用者模型資料和大部分架構一樣,儲存在mysql/mongodb(讀寫分離)以及memcache/redis中。

1 使用者訂閱

2 標籤

3 部分文章打散推送

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

​ ​ 分析使用者的主要引數如下:

- 關注、粉絲關係

- 關係

- 使用者標籤

1 自動推薦系統

- 自動候選

- 自動匹配使用者,如使用者位址定位,抽取使用者資訊

- 自動生成推送任務

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

2 半自動推薦系統

- 自動選擇候選文章

- 根據使用者站內外動作

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

​ ​ 今日頭條使用mysql或mongo持久化儲存+memched(redis),分了很多庫(乙個大記憶體庫),亦嘗試使用了ssd的產品。

​ ​ 今日頭條的儲存,直接放在資料庫中,分布式儲存檔案,讀取的時候採用cdn。

​ ​ 訊息推送,對於使用者: 及時獲取資訊。對運營來講,能夠 提⾼⽤使用者活躍度。比如在今日頭條推送後能夠提公升20%左右的dau,如果沒有推送,會影響10%左右 dau(2023年資料)。

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

- 頻率個性化

- 內容個性化

- 地域

- 興趣

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

​ ​ 按照興趣:比如京東收購一號店,發給網際網路興趣的使用者。

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

​ ​ ​ ​ - 通道,首先速度要快,但是要可控,可靠,並且節省資源

​ ​ ​ ​ - 推送的速度要快,有不同維度的策略支援,可跟蹤,開發介面要友好

​ ​ ​ ​ - 推送運營的後台,反饋也要快,包括時效性,熱度,工具操作方便

​ ​ ​ ​ - 對於運營側,清晰是否確定推薦,包括推送的文案處理

​ ​ 因此,推送後台應該提供**,完整的資料後台,提供a/b test方案支援。

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

​​ ​ 今日頭條通過拆分子系統,大的應用拆成小應用,抽象通用層做**復用。

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

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

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

今日頭條 今日頭條三面面經

一面 1 演算法題,程式設計實現nsum 2 實現元素的居中並且寬高比為3 4 3 實現繼承 4 給了一段 給出輸出結果,這個是和非同步相關 5 http的狀態碼有哪些 6 cookie和session的區別,以及如何生成session 7 給 寫輸出和原型鏈相關 8 變數宣告提公升 三面 1 介紹...

今日頭條的核心架構解析

今日頭條創立於2012年3月,到目前僅4年時間。從十幾個工程師開始研發,到上百人,再到200餘人。產品線由內涵段子,到今日頭條,今日特賣,今日電影等產品線。2014年5月1.5億,2015年5月3億,2016年5月份為5億。幾乎為成倍增長。2014年為1000萬日活,2015年為3000萬日活。1 ...

今日頭條筆試

問題描述 給定乙個段落,由 n 個句子組成。第 i 個句子的長度為 l i 包含的單詞個數為 w i 句子不包含任何除字母和空格 外的符號。每個句子內部,含有若干個單詞,由空格 分隔。句子不會包含連續的空格。隨後給定 m 個查詢,每個查詢包含乙個句子,需要在段落中尋找相同單詞數量最多的句子。重複的單...