點(diǎn)擊上方 "程序員小樂(lè)"關(guān)注, 星標(biāo)或置頂一起成長(zhǎng)
每天凌晨00點(diǎn)00分, 第一時(shí)間與你相約
每日英文
Anywhere, it is a good in the past, recall the number of times many, all would be light.
任何地方,再好的過(guò)去,回憶的次數(shù)多了,一切也就淡了。
每日掏心話
挖掘自己的潛力,樹(shù)立自己的信心,開(kāi)拓自己的事業(yè),揚(yáng)長(zhǎng)避短,循序漸進(jìn)。
來(lái)自:鐘鎮(zhèn)剛 | 責(zé)編:樂(lè)樂(lè)
鏈接:blog.csdn.net/mucaoyx/article/details/84498468
程序員小樂(lè)(ID:study_tech)第 754 次推文 圖片來(lái)自 Pexels
往日回顧:如何更規(guī)范化編寫(xiě) Java 代碼
正文
今日頭條創(chuàng)立于2012年3月,到目前僅幾年時(shí)間。從十幾個(gè)工程師開(kāi)始研發(fā),到上百人,再到200余人。產(chǎn)品線由內(nèi)涵段子,到今日頭條,今日特賣(mài),今日電影等產(chǎn)品線。一、產(chǎn)品背景
今日頭條是為用戶提供個(gè)性化資訊客戶端。下面就和大家分享一下當(dāng)前今日頭條的數(shù)據(jù)(據(jù)內(nèi)部與公開(kāi)數(shù)據(jù)綜合):
5億注冊(cè)用戶
2014年5月1.5億,2015年5月3億,2016年5月份為5億。幾乎為成倍增長(zhǎng)。
日活4800萬(wàn)用戶
2014年為1000萬(wàn)日活,2015年為3000萬(wàn)日活。
日均5億PV
5億文章瀏覽,視頻為1億。頁(yè)面請(qǐng)求量超過(guò)30億次。
用戶停留時(shí)長(zhǎng)超過(guò)65分鐘以上
1、文章抓取與分析
我們?nèi)粘.a(chǎn)生原創(chuàng)新聞在1萬(wàn)篇左右,包括各大新聞網(wǎng)站和地方站,另外還有一些小說(shuō),博客等文章。這些對(duì)于工程師來(lái)講,寫(xiě)個(gè)Crawler并非困難的事。
接下來(lái),今日頭條會(huì)用人工方式對(duì)敏感文章進(jìn)行審核過(guò)濾。此外,今日頭條頭條號(hào)目前也有為數(shù)不少的原創(chuàng)文章加入到了內(nèi)容遴選隊(duì)列中。
接下來(lái)我們會(huì)對(duì)文章進(jìn)行文本分析,比如分類,標(biāo)簽、主題抽取,按文章或新聞所在地區(qū),熱度,權(quán)重等計(jì)算。
2、用戶建模
當(dāng)用戶開(kāi)始使用今日頭條后,對(duì)用戶動(dòng)作的日志進(jìn)行實(shí)時(shí)分析。使用的工具如下:
- Scribe
- Flume
- Kafka
我們對(duì)用戶的興趣進(jìn)行挖掘,會(huì)對(duì)用戶的每個(gè)動(dòng)作進(jìn)行學(xué)習(xí)。主要使用:
- Hadoop
- Storm
產(chǎn)生的用戶模型數(shù)據(jù)和大部分架構(gòu)一樣,保存在MySQL/MongoDB(讀寫(xiě)分離)以及Memcache/Redis中。
隨著用戶量的不斷擴(kuò)展大,用戶模型處理的機(jī)器集群數(shù)量較大。2015年前為7000臺(tái)左右。其中,用戶推薦模型包括以下維度:
1 用戶訂閱
2 標(biāo)簽
3 部分文章打散推送
此時(shí),需要每時(shí)每刻做推薦。
3、新用戶的“冷啟動(dòng)”
今日頭條會(huì)通過(guò)用戶使用的手機(jī),操作系統(tǒng),版本等“識(shí)別”。另外,比如用戶通過(guò)社交帳號(hào)登錄,如新浪微博,頭條會(huì)對(duì)其好友,粉絲,微博內(nèi)容及轉(zhuǎn)發(fā)、評(píng)論等維度進(jìn)行對(duì)用戶做初步“畫(huà)像”。
分析用戶的主要參數(shù)如下:
- 關(guān)注、粉絲關(guān)系
- 關(guān)系
- 用戶標(biāo)簽
除了手機(jī)硬件,今日頭條還會(huì)對(duì)用戶安裝的APP進(jìn)行分析。例如機(jī)型和APP結(jié)合分析,用小米,用三星的和用蘋(píng)果的不同,另外還有用戶瀏覽器的書(shū)簽。頭條會(huì)實(shí)時(shí)捕捉用戶對(duì)APP頻道的動(dòng)作。另外還包括用戶訂閱的頻道,比如電影,段子,商品等。
4、推薦系統(tǒng)
推薦系統(tǒng),也稱推薦引擎。它是今日頭條技術(shù)架構(gòu)的核心部分。包括自動(dòng)推薦與半自動(dòng)推薦系統(tǒng)兩種類型:
1 自動(dòng)推薦系統(tǒng)
- 自動(dòng)候選
- 自動(dòng)匹配用戶,如用戶地址定位,抽取用戶信息
- 自動(dòng)生成推送任務(wù)
這時(shí)需要高效率,大并發(fā)的推送系統(tǒng),上億的用戶都要收到。
2 半自動(dòng)推薦系統(tǒng)
- 自動(dòng)選擇候選文章
- 根據(jù)用戶站內(nèi)外動(dòng)作
頭條的頻道,在技術(shù)側(cè)劃分的包括分類頻道、興趣標(biāo)簽頻道、關(guān)鍵詞頻道、文本分析等,這些都分成相對(duì)獨(dú)立的開(kāi)發(fā)團(tuán)隊(duì)。目前已經(jīng)有300+個(gè)分類器,仍在不斷增加新的用戶模型,原來(lái)的用戶模型不用撤消,仍然發(fā)揮作用。
在還沒(méi)有推出頭條號(hào)時(shí),內(nèi)容主要是抓取其它平臺(tái)的文章,然后去重,一年幾百萬(wàn)級(jí),并不太大。主要是用戶動(dòng)作日志收集,興趣收集,用戶模型收集。
資訊App的技術(shù)指標(biāo),比如屏幕滑動(dòng),用戶是不是對(duì)一篇都看完,停留時(shí)間等都需要我們特別關(guān)注
5、數(shù)據(jù)存儲(chǔ)
今日頭條使用MySQL或Mongo持久化存儲(chǔ)+Memched(Redis),分了很多庫(kù)(一個(gè)大內(nèi)存庫(kù)),亦嘗試使用了SSD的產(chǎn)品。今日頭條的圖片存儲(chǔ),直接放在數(shù)據(jù)庫(kù)中,分布式保存文件,讀取的時(shí)候采用CDN。
6、消息推送
消息推送,對(duì)于用戶: 及時(shí)獲取信息。對(duì)運(yùn)營(yíng)來(lái)講,能夠 提??用戶活躍度。比如在今日頭條推送后能夠提升20%左右的DAU,如果沒(méi)有推送,會(huì)影響10%左右 DAU(2015年數(shù)據(jù))。推送后要關(guān)注的ROI:點(diǎn)擊率,點(diǎn)擊量。能夠監(jiān)測(cè)到App卸載和推送禁用數(shù)量。今日頭條推送的主要內(nèi)容包括突發(fā)與熱點(diǎn)咨訊,有人評(píng)論回復(fù),站外好友注冊(cè)加入。在頭條,推送也是個(gè)性化:- 頻率個(gè)性化- 內(nèi)容個(gè)性化- 地域- 興趣比如:按照城市:遼寧朝陽(yáng)發(fā)生的某個(gè)新聞事件,發(fā)給朝陽(yáng)本地的用戶。按照興趣:比如京東收購(gòu)一號(hào)店,發(fā)給互聯(lián)網(wǎng)興趣的用戶。推送平臺(tái)的工具和選擇,需要具備如下的標(biāo)準(zhǔn):- 通道,首先速度要快,但是要可控,可靠,并且節(jié)省資源- 推送的速度要快,有不同維度的策略支持,可跟蹤,開(kāi)發(fā)接口要友好- 推送運(yùn)營(yíng)的后臺(tái),反饋也要快,包括時(shí)效性,熱度,工具操作方便- 對(duì)于運(yùn)營(yíng)側(cè),清晰是否確定推薦,包括推送的文案處理因此,推送后臺(tái)應(yīng)該提供日?qǐng)?bào),完整的數(shù)據(jù)后臺(tái),提供A/B Test方案支持。推送系統(tǒng)一部分使用自有IDC,在發(fā)送量特別大,消耗帶寬較嚴(yán)重。可以使用類似阿里云的服務(wù),可有效節(jié)省成本。
二、今日頭條系統(tǒng)架構(gòu)
三、頭條微服務(wù)架構(gòu)今日頭條通過(guò)拆分子系統(tǒng),大的應(yīng)用拆成小應(yīng)用,抽象通用層做代碼復(fù)用。
系統(tǒng)的分層比較典型。重點(diǎn)在基礎(chǔ)設(shè)施,希望通過(guò)基礎(chǔ)設(shè)施提高快速迭代、容災(zāi)和一系列的工作,希望各個(gè)業(yè)務(wù)團(tuán)隊(duì)能更快做業(yè)務(wù)上的迭代以及架構(gòu)上的調(diào)整。
四、今日頭條的虛擬化PaaS平臺(tái)規(guī)劃
通過(guò)三層實(shí)現(xiàn),通過(guò) PaaS 平臺(tái)統(tǒng)一管理。提供通用 SaaS 服務(wù),同時(shí)提供通用的 App 執(zhí)行引擎。最底層是 IaaS 層。
IaaS 管理所有的機(jī)器,把公有云整合起來(lái),頭條有一些熱點(diǎn)事件會(huì)全國(guó)推廣推送,對(duì)網(wǎng)絡(luò)帶寬比較高,我們借助公有云,需要哪一種類型計(jì)算資源,統(tǒng)一抽象起來(lái)。基礎(chǔ)設(shè)施結(jié)合服務(wù)化的思路,比如日志,監(jiān)控等等功能,業(yè)務(wù)不需要關(guān)注細(xì)節(jié)就可以享受到基礎(chǔ)設(shè)施提供的能力。五、總結(jié)
今日頭條重要的部分在于:
數(shù)據(jù)生成與采集
數(shù)據(jù)傳輸。Kafka做消息總線連接在線和離線系統(tǒng)。
數(shù)據(jù)入庫(kù)。數(shù)據(jù)倉(cāng)庫(kù)、ETL(抽取轉(zhuǎn)換加載)
數(shù)據(jù)計(jì)算。數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)表如何能被高效的查詢很關(guān)鍵,因?yàn)檫@會(huì)直接關(guān)系到數(shù)據(jù)分析的效率。常見(jiàn)的查詢引擎可以歸到三個(gè)模式中,Batch 類、MPP 類、Cube 類,頭條在 3 種模式上都有所應(yīng)用。
歡迎在留言區(qū)留下你的觀點(diǎn),一起討論提高。如果今天的文章讓你有新的啟發(fā),學(xué)習(xí)能力的提升上有新的認(rèn)識(shí),歡迎轉(zhuǎn)發(fā)分享給更多人。
猜你還想看
阿里、騰訊、百度、華為、京東最新面試題匯集
Java中關(guān)于try、catch、finally中的細(xì)節(jié)分析,看了都說(shuō)好!
Google 開(kāi)源的依賴注入庫(kù),比 Spring 更小更快!
Spring怎么在一個(gè)事務(wù)中開(kāi)啟另一個(gè)事務(wù)
關(guān)注「程序員小樂(lè)」,收看更多精彩內(nèi)容
嘿,你在看嗎?
查看心情排行你看到此篇文章的感受是: