摘要:微博系統(tǒng)的推模式和拉模式實(shí)現(xiàn)推拉結(jié)合推數(shù)據(jù)和拉數(shù)據(jù)都有什么優(yōu)缺點(diǎn)在用戶的信息流中,推數(shù)據(jù)的實(shí)現(xiàn)其實(shí)更簡單。姚晨發(fā)了條微博,只需要取出姚晨粉絲的信息流,依次推給粉絲就了。簡單介紹了我對時(shí)間流的看法只是我個人的認(rèn)識,不知道微博具體是如何實(shí)現(xiàn)的。
微博feed系統(tǒng)的推(push)模式和拉(pull)模式實(shí)現(xiàn)timeline推拉結(jié)合
推數(shù)據(jù)和拉數(shù)據(jù)都有什么優(yōu)缺點(diǎn)?在用戶的信息流中,推數(shù)據(jù)的實(shí)現(xiàn)其實(shí)更簡單。姚晨發(fā)了條微博,只需要取出姚晨粉絲的信息流,依次推給粉絲就OK了。拉數(shù)據(jù)的邏輯實(shí)現(xiàn)就非常復(fù)雜,需要獲取所有我關(guān)注用戶的動態(tài),并對其進(jìn)行整合,每次刷新、或者加載更多需要判斷的邏輯就更多。
姚晨粉絲1000萬,如果有1000萬個姚晨同時(shí)更新了一條動態(tài),數(shù)據(jù)要推到什么時(shí)候?假設(shè)這個情況真的發(fā)生了,那么首先肯定這是一個并行的操作,其次網(wǎng)絡(luò)以及緩存那么快,再加上一些算法優(yōu)化,我相信超過不了5分鐘吧。而且給所有粉絲推數(shù)據(jù)也是不現(xiàn)實(shí)的。
為什么不是給所有姚晨的粉絲推數(shù)據(jù)?假設(shè)用戶A關(guān)注了姚晨之后就再也沒有玩過微博,在有限的內(nèi)存空間維護(hù)用戶A的信息流會變得毫無意義。所以推的對象應(yīng)該是活躍的用戶,或者是當(dāng)天的在線用戶。
用戶信息流(Feed)構(gòu)建數(shù)據(jù)存儲基于Redis的ZSet數(shù)據(jù)結(jié)構(gòu)。ZSet優(yōu)勢非常明顯:自動排序。信息流按照時(shí)間排序正是利用了這一點(diǎn)。為什么不考慮使用List,最基本的一點(diǎn)就是取消關(guān)注用戶A(或者用戶A刪除了剛剛發(fā)的動態(tài))之后,刪除粉絲信息流中A的動態(tài)變得非常困難:一個可怕的遍歷操作。
用戶信息流該怎么創(chuàng)建?APP端用戶對信息流有兩個基本操作,下拉刷新和上拉加載更多。對于活躍用戶,他的信息流都是推過來的,每時(shí)每刻都是最新的,所以只考慮數(shù)據(jù)顯示邏輯就OK了。對于不活躍的怎么處理了,這個分支有點(diǎn)多?
如果用戶A消失一周之后又想看姚晨的狀態(tài),怎么辦?很顯然用戶A一下由僵尸粉變成了活躍粉,Redis里沒有他任何的信息流數(shù)據(jù)(因?yàn)樗У臅r(shí)間太久了),信息流需要完全重建。我們首先獲取他關(guān)注的所有用戶,假設(shè)為用戶群B。篩選用戶群B中今日更新動態(tài)的用戶,然后合并信息流,依次類推。
如果用戶A消失2天之后又想看姚晨的狀態(tài),此時(shí)系統(tǒng)已經(jīng)停止了對他的實(shí)時(shí)推送,但是他的信息流卻依然存在,只是缺少了(他的信息流中)最早動態(tài)時(shí)間到當(dāng)前時(shí)間這段間隔的動態(tài)。重構(gòu)該期間的動態(tài)。
綜上所述:停止信息流實(shí)時(shí)更新的時(shí)間間隔、信息流過期時(shí)間、用戶最后一次更新動態(tài)的時(shí)間都是需要認(rèn)真權(quán)衡的。
冷數(shù)據(jù)、溫?cái)?shù)據(jù)和熱數(shù)據(jù)。冷數(shù)據(jù)——性別、興趣、常住地、職業(yè)、年齡等數(shù)據(jù)畫像,表征“這是什么樣的人”;溫?cái)?shù)據(jù)——近期活躍應(yīng)用、近期去過的地方等具有一定時(shí)效性的行為數(shù)據(jù),表征“最近對什么感興趣”;熱數(shù)據(jù)——當(dāng)前地點(diǎn)、打開的應(yīng)用等場景化明顯的、稍縱即逝的營銷機(jī)會,表征“正在哪里干什么”。
如何定義活躍用戶?基本上的答案都是:具體要看這個產(chǎn)品是什么類型的。我覺得用戶產(chǎn)生行為是根據(jù)產(chǎn)品來定義的:比如網(wǎng)易云閱讀(閱讀類的),用戶只要看了某本書的目錄、看了作者簡介,下載閱讀了,都算是活躍;用戶去做了一些設(shè)置,例如換頭像,或者是完善個人信息,這些也都是可以算的。再比如映客(直播類的),用戶只要打開看了某段視頻,搜索了某些關(guān)鍵詞,給某個視頻評論點(diǎn)贊了,也都算是活躍。所以確實(shí)產(chǎn)品不同,定義維度也不同,回歸到產(chǎn)品戰(zhàn)略上,用戶發(fā)生的這些行為是不是產(chǎn)品設(shè)計(jì)時(shí)想要的,用戶哪些參與行為是有效的,那么,有效的這些行為往往都是屬于活躍行為。
也就是區(qū)分活躍用戶和不活躍用戶?;钴S用戶的幾個屬性:
用戶最后一次發(fā)帖的時(shí)間
用戶最后一次登錄的時(shí)間
用戶只查看不發(fā)帖
用戶今天是否在線
如何衡量用戶今日是否在線?需要找一個定義標(biāo)準(zhǔn):用戶今日瀏覽過、或者用戶今日登陸過。本質(zhì)上說就是找到一個:用戶今日有過與APP交互的動作。
總結(jié):文中信息流和時(shí)間流混用,但是表示的是同一個意思。簡單介紹了我對時(shí)間流的看法(只是我個人的認(rèn)識,不知道微博具體是如何實(shí)現(xiàn)的)。大家認(rèn)真看完了的話,就趕緊評論互噴起來吧。
文章為原創(chuàng),轉(zhuǎn)載請注明鏈接地址。覺得有幫助的話,不妨打個賞吧!
參考文章:
1. 冷數(shù)據(jù)、溫?cái)?shù)據(jù)、熱數(shù)據(jù),難道數(shù)據(jù)也是有溫度的?
2. 淺談如何定義活躍用戶
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/21906.html
摘要:今天想做一個微博爬個人頁面的工具,滿足一些不可告人的秘密。那么首先就要做那件必做之事模擬登陸代碼是參考了我對代碼進(jìn)行了優(yōu)化,重構(gòu)成了版本,并且加入了大量注釋方便大家學(xué)習(xí)。接下來再請求這個,這樣就成功登錄到微博了。 showImg(https://segmentfault.com/img/remote/1460000018544062?w=900&h=600); 今天想做一個微博爬個人頁...
摘要:一般而言,擴(kuò)展會對用戶瀏覽的頁面進(jìn)行相應(yīng)的操作和一些數(shù)據(jù)傳遞,本案例的本質(zhì)是,當(dāng)用戶瀏覽網(wǎng)頁版微博時(shí),擴(kuò)展會向當(dāng)前頁面注入預(yù)先寫好的,這樣便對微博網(wǎng)頁版進(jìn)行了樣式重構(gòu)。采用這樣的方法依次處理所有你不想看到的元素,你的微博便會簡潔很多。 0x00. 前言 微博現(xiàn)在也是變得越來越臃腫,廣告越來越多,早已不再是微博了,這讓微博深度用戶的我感到十分焦灼。由于之前就嘗試寫過 Chrome 插件,...
摘要:而且已開源出來,隨著容器技術(shù)發(fā)展,大文件分發(fā)一直是個重要的問題,所以是一件值得研究的技術(shù)。實(shí)用推薦檢定攻略是近期推出的一項(xiàng)認(rèn)證,用以認(rèn)證開發(fā)者的移動網(wǎng)頁開發(fā)技能。凈化,移除中不必要的文件技術(shù)周刊由小組出品,匯聚一周好文章,周刊原文。 業(yè)界動態(tài) 直擊阿里雙11神秘技術(shù):PB級大規(guī)模文件分發(fā)系統(tǒng)蜻蜓 文章主要介紹了阿里的PB級大規(guī)模文件分發(fā)系統(tǒng)蜻蜓, 通過使用P2P技術(shù)同時(shí)結(jié)合智能壓縮、智...
摘要:為了處理解決這個問題,需要提高海外直播的接流覆蓋率,并針對鏈路進(jìn)行優(yōu)化,從而有效降低整體從推流到拉流的卡頓率。 今天主要分享我們海外直播鏈路優(yōu)化的問題和解決問題的一個思路,介紹的主要流程,大概就是拋出一個問題,簡單介紹我們解決的思路,在這個過程中碰到的一些問題和我們具體進(jìn)行的一些思考,以及后續(xù)可以再進(jìn)行一些額外優(yōu)化的處理。 指標(biāo)定義 在介紹整體內(nèi)容之前,首先定義一下我們的性能指標(biāo),由于...
摘要:事件處理器是自包含和獨(dú)立的,解耦于架構(gòu)。因其分布式和異步的性質(zhì),事件驅(qū)動架構(gòu)的實(shí)現(xiàn)相對復(fù)雜,主要是由于它的異步和分布式特性。微內(nèi)核架構(gòu)微內(nèi)核架構(gòu)模式也被稱為插件架構(gòu)模式。 來自于OReilly免費(fèi)的電子書:Software Architecture Patterns showImg(https://segmentfault.com/img/remote/1460000009652123...
閱讀 2407·2021-09-26 10:21
閱讀 2920·2021-09-08 09:36
閱讀 3128·2019-08-30 15:56
閱讀 1015·2019-08-30 12:57
閱讀 1008·2019-08-26 10:39
閱讀 3617·2019-08-23 18:11
閱讀 3163·2019-08-23 17:12
閱讀 1207·2019-08-23 12:18