今日頭條技術架構分析
點選上方“視學演算法”,選擇“設為星標”
來源:blog.csdn.net/mucaoyx/article/details/84498468
一、產品背景
1、文章抓取與分析
2、使用者建模
3、新使用者的“冷啟動”
4、推薦系統
5、資料儲存
6、訊息推送
二、今日頭條系統架構
三、頭條微服務架構
四、今日頭條的虛擬化PaaS平臺規劃
五、總結
今日頭條創立於2012年3月,到目前僅4年時間。從十幾個工程師開始研發,到上百人,再到200餘人。產品線由內涵段子,到今日頭條,今日特賣,今日電影等產品線。
一、產品背景
今日頭條是為使用者提供個性化資訊客戶端。下面就和大家分享一下當前今日頭條的資料(據內部與公開資料綜合):
5億註冊使用者
2014年5月1.5億,2015年5月3億,2016年5月份為5億。幾乎為成倍增長。
日活4800萬使用者
2014年為1000萬日活,2015年為3000萬日活。
日均5億PV
5億文章瀏覽,視訊為1億。頁面請求量超過30億次。
使用者停留時長超過65分鐘以上
1、文章抓取與分析
我們日常產生原創新聞在1萬篇左右,包括各大新聞網站和地方站,另外還有一些小說,部落格等文章。這些對於工程師來講,寫個Crawler並非困難的事。
接下來,今日頭條會用人工方式對敏感文章進行稽核過濾。此外,今日頭條頭條號目前也有為數不少的原創文章加入到了內容遴選佇列中。
接下來我們會對文章進行文字分析,比如分類,標籤、主題抽取,按文章或新聞所在地區,熱度,權重等計算。
2、使用者建模
當使用者開始使用今日頭條後,對使用者動作的日誌進行實時分析。使用的工具如下:
Scribe
Flume
Kafka
我們對使用者的興趣進行挖掘,會對使用者的每個動作進行學習。主要使用:
Hadoop
Storm
產生的使用者模型資料和大部分架構一樣,儲存在MySQL/MongoDB(讀寫分離)以及Memcache/Redis中。
隨著使用者量的不斷擴充套件大,使用者模型處理的機器叢集數量較大。2015年前為7000臺左右。其中,使用者推薦模型包括以下維度:
1 使用者訂閱
2 標籤
3 部分文章打散推送
此時,需要每時每刻做推薦。
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 種模式上都有所應用。
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- 今日頭條 Flutter 架構實踐Flutter架構
- 【今日頭條】高薪誠聘 架構 / 後端高薪架構後端
- 今日頭條:iOS 架構設計雜談iOS架構
- RSS推送技術——打造自己的今日頭條
- 今日頭條這麼牛逼,用了什麼技術?
- 今日頭條架構演進之路——高壓下的架構演進專題架構
- 趣頭條 架構師/技術專家 (稅前45-60K+股票)架構
- 美顏SDK架構技術分析架構
- 今日頭條的小遊戲戰術遊戲
- 今日頭條推薦系統架構設計實踐(附下載)架構
- NVIDIA安培架構下MIG技術分析架構
- 趣頭條 業務架構師架構
- 分析Ajax爬取今日頭條街拍美圖
- 微服務精華問答:什麼是微服務架構中的DRY?| 技術頭條微服務架構
- 趣頭條商業化技術部誠招廣告架構師/資深開發架構
- 今日頭條極速版和今日頭條有什麼區別?
- 2018春招科大訊飛,華為,今日頭條面經 | 掘金技術徵文
- 趣頭條 中介軟體架構師架構
- 趣頭條招Golang研發工程師及架構師(有技術,有流量,薪酬開放)Golang工程師架構
- 今日頭條Android面試Android面試
- 快應用技術架構及業務分析架構
- springblade技術架構Spring架構
- 今日頭條:2018今日頭條兩會閱讀大資料(附下載)大資料
- 趣頭條 高薪招聘各類架構師高薪架構
- 今日頭條研發面經
- thinkphp仿今日頭條原始碼PHP原始碼
- 網站技術架構網站架構
- springcloud技術架構理解SpringGCCloud架構
- 今日頭條怎麼設定黑色背景?今日頭條app開啟深色模式的技巧APP模式
- 今日頭條上央視新聞 很快今日頭條回應廣告“二跳”事件事件
- 大型網站技術架構(三)--架構模式網站架構模式
- 今日頭條怎麼賺錢?頭條號的賺錢思路
- 趣頭條-誠招微服務架構/業務架構/中介軟體架構/演算法微服務架構演算法
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第4篇 架構師(附 大型網站架構技術一覽)網站架構筆記
- 今日頭條正式釋出小程式
- 【今日頭條】校招內推碼
- 我的“技術架構”之旅架構
- PingCode 技術架構揭祕GC架構