Hack On Douyu -- 2

在上一篇文章中,主要講了我獲取斗魚彈幕和某些靜態(tài)頁面的方法,在數(shù)據(jù)獲取到之后,如何有效的組織和存儲數(shù)據(jù)直接關系到后續(xù)數(shù)據(jù)能否可以背有效使用。
為了更直觀的說明獲取到的這些數(shù)據(jù)如何組織和使用,我大致花了兩張圖來說明。

數(shù)據(jù)存儲結構

通過爬蟲或是直接通過tcp通訊獲取到的斗魚靜態(tài)頁面數(shù)據(jù)和彈幕聊天內容數(shù)據(jù)組織形式如下圖所示:


mongodb數(shù)據(jù)組織結構
mongodb數(shù)據(jù)組織結構

我使用mongodb來存儲和管理數(shù)據(jù),把上述的數(shù)據(jù)存儲在名為Douyu的數(shù)據(jù)庫中,將數(shù)據(jù)分別存于Roominfo、chatmsg、rocket、rocketbyDay四個表中。

靜態(tài)頁面數(shù)據(jù)存儲

其中Roominfo庫主要記錄通過爬蟲獲取到的當前開播房間信息,字段主要包括用以紀錄數(shù)據(jù)獲取時間的date、開播房間人氣audience、房間標題roomtitle、主播名anchor、房間標簽tag、當前房間封面圖片img、房間標識符roomid。
在實際使用中,可以隔時執(zhí)行靜態(tài)頁面數(shù)據(jù)獲取腳本從而獲取這些數(shù)據(jù),通過對audience進行排序可以輕易獲取到人氣最高的房間,并且能夠將這些房間信息以json的格式傳輸?shù)叫枰牡胤健6鴄udience和tag的組合也可以獲取不同類型直播房間人氣對比結果。
我在項目中通過服務器上的crontab每隔10分鐘執(zhí)行一次靜態(tài)頁面數(shù)據(jù)獲取任務.

0,10,20,30,40,55 * * *  * python  /path/to/allRooms.py

反應給前端的結果可以通過這個頁面看到。

彈幕聊天內容

上一篇說過,最初打算是想要對彈幕聊天內容進行自然語言分析的,但是由于一直沒來得及搞,也就擱淺了,對與彈幕聊天內容,只是簡要的紀錄了包括發(fā)送者sender_id、發(fā)送時間date和彈幕內容content,由于每次獲取的彈幕數(shù)據(jù)都是獲取當時人氣最高的房間彈幕,所以彈幕內容大都是什么“白銀三杰”、“最強王者”之類的。。。

火箭紀錄

自然語言分析沒搞成,所以現(xiàn)在的重點工作是紀錄觀眾贈送火箭,通過這些數(shù)據(jù)做出一些圖表。
對火箭信息紀錄使用了兩個表:rocket和rocketbyDay。
rocket主要是獲取實時火箭信息,通過與斗魚彈幕服務器建立連接,根據(jù)彈幕消息類型將贈送火箭的信息獲取到,主要包括:贈送者sender_id、接受者recver_id、贈送時間date和禮物類型gift。
rocketbyDay則是通過每天0:05分統(tǒng)計前一天火箭隨著時間的分布情況,以天為單位的date、每天火箭總數(shù)count和當天火箭具體數(shù)據(jù)data。
紀錄這些內容主要是可以統(tǒng)計出每日逐時禮物贈送情況、每天贈送禮物的土豪排名、受到火箭主播排名等。大致結果可以點擊當天火箭信息火箭歷史數(shù)據(jù)查看具體內容。

消息實時轉發(fā)

上述數(shù)據(jù)可以看作直播數(shù)據(jù)中的長時間數(shù)據(jù),而其中的一些需要“保鮮”的數(shù)據(jù)例如在有土豪贈送給主播火箭之后,觀眾可以在兩分鐘內到該房間搶魚丸禮物,對于這種需要“保鮮”的數(shù)據(jù),我通過redis的pub/sub來接收和轉發(fā),并通過socke.io實時發(fā)送給當前打開頁面的觀眾。大致過程如下圖所示:


遇到的問題和下一步計劃

在實際項目運行中,有好幾次出現(xiàn)mongodb莫名其妙掛掉的現(xiàn)象,由于項目運行在騰訊1核心1gb內存的云主機上(學生優(yōu)惠一個月只要一塊錢,23333333),這讓我很快想到是不是在寫入數(shù)據(jù)的時候,mongodb占用內存過高導致掛掉(之前在學校做項目的時候曾經見到過mongodb在大量寫入數(shù)據(jù)的時候數(shù)據(jù)庫掛掉的現(xiàn)象)。
于是,打開終端,連接到云主機上, 進入到mongodb目錄:

./mongo
use Douyu
db.setProfilingLevel(1)

然后靜待下次數(shù)據(jù)庫掛掉。果然在某個整10分鐘的時候,數(shù)據(jù)又數(shù)不出來了,重啟數(shù)據(jù)庫,打開mongodb客戶端:

db.system.profile.find().limit(2)

出現(xiàn)的內容:


正如猜想的那樣,果然是由于寫入的時候造成了數(shù)據(jù)庫的問題。
這時,機智的我想到了師妹那里還有個閑置的云主機,征用過來做個讀寫分離試下吧(當然我也想搞個副本集,好多主、好多從、好多分片。。。關鍵不是沒條件嘛)。減輕了服務器負載之后,數(shù)據(jù)庫掛掉的現(xiàn)象沒有再出現(xiàn)啦。

到目前為止,項目基本上可以正常運行,在數(shù)據(jù)操作這方面,打算在增加一些內容,比如分析某個游戲在每天隨時間觀眾人數(shù)變化、某個主播直播時段、某個游戲人氣變化情況等等。
下一篇內容主要講后端flask的一些情況以及前后端數(shù)據(jù)傳輸方式等。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,777評論 25 708
  • 距離上次更新又有一段時間了,畢業(yè)答辯之后,確實和同學們一起出去嗨了一段時間,由于還沒入職,在家清凈的環(huán)境中可以好好...
    wangmengcn閱讀 997評論 0 3
  • 在擁有了數(shù)據(jù)獲取和存儲的能力之后,如何利用好這些數(shù)據(jù)成為一個問題。本來也一直打算把之前學習的flask框架用起來,...
    wangmengcn閱讀 735評論 0 1
  • 海岸邊有一座小山,山上有一幢高樓,那樓很薄,背面已經坍塌。海嘯要來了,它的高度正好到高樓的倒數(shù)第二層,如果爬到最高...
    妙宗舶攸閱讀 676評論 0 0
  • 為什么大家都越來越熱衷于紅酒! 現(xiàn)代在都市中生活的人們已經越來越注重養(yǎng)生之道了,葡萄酒作為一種酒精飲料除了在西...
    a容人達己閱讀 1,010評論 0 0