国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng)及方法

      文檔序號(hào):10616378閱讀:299來源:國知局
      基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng)及方法
      【專利摘要】本發(fā)明公開了一種基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng)及方法,涉及視頻直播中活躍用戶集的維護(hù)技術(shù)領(lǐng)域。該方法包括:每個(gè)用戶終端記錄心跳信息并上報(bào)直播平臺(tái)服務(wù)器;直播平臺(tái)服務(wù)器對心跳信息進(jìn)行緩存和預(yù)處理,并將心跳信息以若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊;分布式實(shí)時(shí)計(jì)算模塊對心跳信息進(jìn)行解析、驗(yàn)證,將驗(yàn)證通過的心跳信息所對應(yīng)的用戶添加到與當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片中;活躍用戶集功能模塊以活躍計(jì)算時(shí)間段為周期,定期將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中。本發(fā)明基于播放器心跳和時(shí)間輪盤來對活躍用戶集進(jìn)行更新維護(hù),不但及時(shí)高效,而且不會(huì)對系統(tǒng)造成較大負(fù)荷。
      【專利說明】
      基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng)及方法
      技術(shù)領(lǐng)域
      [0001] 本發(fā)明設(shè)及視頻直播中活躍用戶集的維護(hù)技術(shù)領(lǐng)域,具體來講是一種基于時(shí)間輪 盤和播放器屯、跳的活躍用戶集維護(hù)系統(tǒng)及方法。
      【背景技術(shù)】
      [0002] 隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,越來越多的用戶可W使用電腦、手機(jī)等終端通過網(wǎng) 絡(luò)觀看在線視頻直播。在線視頻直播是指利用互聯(lián)網(wǎng)網(wǎng)絡(luò)資源進(jìn)行的現(xiàn)場視頻直播服務(wù), 通過現(xiàn)場的視頻拍攝同步發(fā)布到網(wǎng)絡(luò)上,用戶可W同一時(shí)間在網(wǎng)絡(luò)上看到實(shí)時(shí)的現(xiàn)場情 況。
      [0003] 在視頻直播網(wǎng)站的業(yè)務(wù)場景中,很多直播間主播在發(fā)起互動(dòng)活動(dòng)或者網(wǎng)站在發(fā)起 專題活動(dòng)時(shí),需要只針對觀看當(dāng)前直播間的活躍用戶或者在網(wǎng)站上活躍的用戶進(jìn)行互動(dòng), 運(yùn)時(shí)就需要通過一個(gè)活躍用戶集來對活躍用戶進(jìn)行實(shí)時(shí)記錄和更新。
      [0004] 目前,在視頻直播領(lǐng)域中,維護(hù)活躍用戶集的通常思路為:當(dāng)服務(wù)器連續(xù)一段時(shí)間 內(nèi)(通常需要自定義該時(shí)間,該時(shí)間即為超時(shí)時(shí)長Timeout)沒有收到用戶行為數(shù)據(jù),就把該 用戶剔除出活躍用戶集。具體來說,通常分為W下兩種方式:
      [0005] (1)針對每個(gè)用戶,保存相應(yīng)的"最后收到行為數(shù)據(jù)的時(shí)間IastReceiveTime";然 后通過一個(gè)定時(shí)器,每秒鐘遍歷一遍所有用戶的用戶會(huì)話,剔除那些滿足W下公式的用戶 會(huì)話:
      [0006] 當(dāng)前時(shí)間now-最后收到行為數(shù)據(jù)的時(shí)間1曰311?6。6;[¥61';[1116>超時(shí)時(shí)長Timeout。
      [0007] 但是,由于運(yùn)種做法全局只設(shè)有一個(gè)重復(fù)定時(shí)器repeated timer,因此每次超時(shí) 都要檢查全部用戶會(huì)話信息,如果用戶會(huì)話數(shù)目比較大(如同時(shí)保持上萬個(gè)用戶),則運(yùn)種 方式的檢查量就會(huì)很大,且整個(gè)檢查過程耗時(shí)嚴(yán)重,降低了實(shí)時(shí)性。
      [000引(2)基本與第一種方式相同,不同的是為每個(gè)用戶會(huì)話設(shè)置一個(gè)一次性定時(shí)器 one-shot timer,在定時(shí)器超時(shí)的時(shí)候就斷開本會(huì)話,且在每次收到用戶行為數(shù)據(jù)的時(shí)候 更新該定時(shí)器。
      [0009] 此方法雖然一定程度上提高了檢查的效率,但是需要設(shè)置很多一次性定時(shí)器,并 需要頻繁地更新定時(shí)器。如果連接數(shù)目較大,則會(huì)對"待更新計(jì)時(shí)器隊(duì)列"造成壓力,嚴(yán)重時(shí) 還會(huì)造成系統(tǒng)擁塞甚至崩潰。

      【發(fā)明內(nèi)容】

      [0010] 本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足,提供一種基于時(shí)間輪盤和播放器 屯、跳的活躍用戶集維護(hù)系統(tǒng)及方法,能基于正常用戶觀看視頻時(shí)的播放器屯、跳數(shù)據(jù)產(chǎn)生活 躍用戶集,同時(shí)利用時(shí)間輪盤來對活躍用戶集保持更新,不但及時(shí)高效,且不會(huì)對系統(tǒng)造成 較大負(fù)荷。
      [0011] 為達(dá)到W上目的,本發(fā)明提供一種基于時(shí)間輪盤和播放器屯、跳的活躍用戶集維護(hù) 系統(tǒng),包括若干用戶終端和一個(gè)直播平臺(tái)服務(wù)器,每個(gè)用戶終端內(nèi)設(shè)置有播放器屯、跳記錄 模塊,直播平臺(tái)服務(wù)器內(nèi)設(shè)置有緩存預(yù)處理模塊、分布式實(shí)時(shí)計(jì)算模塊和活躍用戶集功能 模塊;
      [0012] 所述播放器屯、跳記錄模塊用于:實(shí)時(shí)記錄用戶觀看直播時(shí)播放器的屯、跳信息;并 將記錄的屯、跳信息上報(bào)給直播平臺(tái)服務(wù)器;
      [0013] 所述緩存預(yù)處理模塊用于:對各用戶終端上報(bào)的屯、跳信息進(jìn)行緩存和預(yù)處理;定 時(shí)將緩存和預(yù)處理后的所有屯、跳信息W若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊;
      [0014] 所述分布式實(shí)時(shí)計(jì)算模塊包括若干個(gè)實(shí)時(shí)計(jì)算子模塊,分布式實(shí)時(shí)計(jì)算模塊用于 將收到的每個(gè)數(shù)據(jù)片按照哈希策略分配給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊;每個(gè)實(shí)時(shí)計(jì)算子模 塊對數(shù)據(jù)片中的屯、跳信息進(jìn)行解析并驗(yàn)證,將驗(yàn)證通過的屯、跳信息所對應(yīng)的用戶添加到當(dāng) 前時(shí)間對應(yīng)的活躍用戶集分片中,所述活躍用戶集分片是將活躍用戶集按照指定的活躍計(jì) 算時(shí)間段劃分成的若干分片;
      [0015] 所述活躍用戶集功能模塊用于:W指定的活躍計(jì)算時(shí)間段為周期,將當(dāng)前時(shí)間對 應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中,所述時(shí)間輪盤為一種數(shù)據(jù)結(jié)構(gòu),其主體 是一個(gè)首尾相連的循環(huán)列表,該循環(huán)列表中包含有若干個(gè)稱之為槽的模塊,每個(gè)槽中填充 有一個(gè)活躍用戶集分片,且該循環(huán)列表還具有一個(gè)指向隊(duì)尾的指針。
      [0016] 在上述技術(shù)方案的基礎(chǔ)上,所述播放器的屯、跳信息包括用戶ID和按照特定規(guī)則生 成的識(shí)別碼,所述識(shí)別碼的生成規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備ID+隨機(jī) 數(shù)。
      [0017] 在上述技術(shù)方案的基礎(chǔ)上,識(shí)別碼為固定長度,且經(jīng)加密處理。
      [0018] 在上述技術(shù)方案的基礎(chǔ)上,所述活躍用戶集功能模塊W指定的活躍計(jì)算時(shí)間段為 周期,將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中時(shí),具體操作過程為: 每經(jīng)過指定的活躍計(jì)算時(shí)間段后,時(shí)間輪盤中每個(gè)槽內(nèi)的活躍用戶集分片向隊(duì)首前移一 格;將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到位于隊(duì)尾的槽內(nèi);將時(shí)間輪盤上的指針向隊(duì) 首前移一格。
      [0019] 本發(fā)明還提供一種基于時(shí)間輪盤和播放器屯、跳的活躍用戶集維護(hù)系統(tǒng),包括W下 步驟:A、每個(gè)用戶終端的播放器屯、跳記錄模塊實(shí)時(shí)記錄用戶觀看直播時(shí)播放器的屯、跳信 息;將記錄的屯、跳信息上報(bào)給直播平臺(tái)服務(wù)器;B、直播平臺(tái)服務(wù)器的緩存預(yù)處理模塊對各 個(gè)用戶終端上報(bào)的屯、跳信息進(jìn)行緩存和預(yù)處理;C、緩存預(yù)處理模塊定時(shí)將緩存和預(yù)處理后 的所有屯、跳信息W若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊;分布式實(shí)時(shí)計(jì)算模塊將 每個(gè)數(shù)據(jù)片按照哈希策略分配給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊;D、每個(gè)實(shí)時(shí)計(jì)算子模塊對數(shù) 據(jù)片中的屯、跳信息進(jìn)行解析并驗(yàn)證,將驗(yàn)證通過的屯、跳信息所對應(yīng)的用戶添加到當(dāng)前時(shí)間 對應(yīng)的活躍用戶集分片中;E、活躍用戶集功能模塊W活躍計(jì)算時(shí)間段為周期,定期將當(dāng)前 時(shí)間對應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中。
      [0020] 在上述技術(shù)方案的基礎(chǔ)上,步驟A中所述播放器的屯、跳信息包括用戶ID和按照特 定規(guī)則生成的識(shí)別碼,該識(shí)別碼的生成規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備 ID+隨機(jī)數(shù);步驟B中,所述緩存預(yù)處理模塊進(jìn)行緩存時(shí),會(huì)丟棄不符合要求的屯、跳信息;所 述不符合要求的屯、跳信息包括:用戶ID為空或者用戶ID不符合數(shù)據(jù)字段類型的屯、跳信息、 時(shí)間戳格式錯(cuò)誤的屯、跳信息、W及用戶終端類型標(biāo)識(shí)非法的屯、跳信息。
      [0021] 在上述技術(shù)方案的基礎(chǔ)上,步驟C中,緩存預(yù)處理模塊定時(shí)將緩存和預(yù)處理后的所 有屯、跳信息W若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊,具體包括W下操作:緩存預(yù) 處理模塊每隔1秒鐘將當(dāng)前緩存和預(yù)處理后的所有屯、跳信息發(fā)送至分布式實(shí)時(shí)計(jì)算模塊, 每次發(fā)送時(shí)將屯、跳信息組合成若干小于等于IM的數(shù)據(jù)片進(jìn)行發(fā)送。
      [0022] 在上述技術(shù)方案的基礎(chǔ)上,步驟C中,分布式實(shí)時(shí)計(jì)算模塊將每個(gè)數(shù)據(jù)片按照哈希 策略分配給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊,具體包括W下操作:分布式實(shí)時(shí)計(jì)算模塊為每個(gè) 數(shù)據(jù)片分配一個(gè)唯一的ID號(hào),將該ID號(hào)按照實(shí)時(shí)計(jì)算子模塊的個(gè)數(shù)取模,獲得的余數(shù)則對 應(yīng)指定的實(shí)時(shí)計(jì)算子模塊的ID號(hào);將數(shù)據(jù)片分配給對應(yīng)ID號(hào)的實(shí)時(shí)計(jì)算子模塊。
      [0023] 在上述技術(shù)方案的基礎(chǔ)上,步驟A中所述播放器的屯、跳信息包括用戶ID和按照特 定規(guī)則生成的識(shí)別碼,該識(shí)別碼的生成規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備 ID+隨機(jī)數(shù);步驟D具體包括W下操作:每個(gè)實(shí)時(shí)計(jì)算子模塊對數(shù)據(jù)片中每個(gè)屯、跳信息包含 的識(shí)別碼進(jìn)行解密,然后解析識(shí)別碼,取出時(shí)間戳和終端設(shè)備ID;分別校驗(yàn)時(shí)間戳是否在合 理范圍內(nèi)、終端設(shè)備ID是否符合規(guī)范;若上述校驗(yàn)均通過,則將驗(yàn)證通過的屯、跳信息的用戶 ID添加到當(dāng)前時(shí)間對應(yīng)的一個(gè)活躍用戶集分片中,否則,直接丟棄該識(shí)別碼對應(yīng)的屯、跳信 息,結(jié)束。
      [0024] 在上述技術(shù)方案的基礎(chǔ)上,步驟E具體包括W下操作:每經(jīng)過指定的活躍計(jì)算時(shí)間 段后,時(shí)間輪盤中每個(gè)槽內(nèi)的活躍用戶集分片向隊(duì)首前移一格;將當(dāng)前時(shí)間對應(yīng)的活躍用 戶集分片更新到位于隊(duì)尾的槽內(nèi);將時(shí)間輪盤上的指針向隊(duì)首前移一格。
      [0025] 本發(fā)明的有益效果在于:
      [00%] 1、本發(fā)明基于正常用戶觀看視頻時(shí)的播放器屯、跳數(shù)據(jù)產(chǎn)生相應(yīng)的活躍用戶集分 片,該活躍用戶集分片是將活躍用戶集按照指定的活躍計(jì)算時(shí)間段劃分成的若干分片,只 有播放器屯、跳數(shù)據(jù)正常有效的用戶才作為活躍用戶添加到到與當(dāng)前時(shí)間對應(yīng)的活躍用戶 集分片中。在此基礎(chǔ)上,同時(shí)利用時(shí)間輪盤來對活躍用戶集保持更新,W指定的活躍計(jì)算時(shí) 間段為周期,定期將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中,從而完 成對活躍用戶集的及時(shí)維護(hù)。
      [0027] 與現(xiàn)有技術(shù)相比,本發(fā)明并不是采用重復(fù)定時(shí)器或一次性定時(shí)器,而是基于播放 器屯、跳和時(shí)間輪盤來對活躍用戶集進(jìn)行更新維護(hù),不但及時(shí)高效,而且不會(huì)對系統(tǒng)造成較 大負(fù)荷,能在某些互動(dòng)活動(dòng)中,有效限制非活躍用戶的參與,保證互動(dòng)活動(dòng)的有效進(jìn)行。
      [0028] 2、本發(fā)明中,活躍用戶集分片是按照指定的活躍計(jì)算時(shí)間段進(jìn)行劃分的,并且活 躍用戶集功能模塊也是W指定的活躍計(jì)算時(shí)間段為維護(hù)周期。該活躍計(jì)算時(shí)間段可根據(jù)實(shí) 際使用需要自行設(shè)置和調(diào)整,活躍用戶集分片的個(gè)數(shù)也就可W相應(yīng)調(diào)整,運(yùn)就使得活躍用 戶的統(tǒng)計(jì)顆粒度可根據(jù)需要進(jìn)行設(shè)置和調(diào)整(即可按小時(shí)活躍度、分鐘活躍度或其他活躍 度來統(tǒng)計(jì)計(jì)算),且相應(yīng)的時(shí)間輪盤周期也可對應(yīng)調(diào)整(即可按1小時(shí)維護(hù)、1分鐘維護(hù)或其 他周期來維護(hù)),靈活性強(qiáng),適用性高。
      [0029] 3、本發(fā)明中,直播平臺(tái)服務(wù)器設(shè)置有緩存預(yù)處理模塊,該緩存預(yù)處理模塊不僅能 對各用戶終端上報(bào)的屯、跳信息進(jìn)行緩存和預(yù)處理,還能定時(shí)將緩存和預(yù)處理后的所有屯、跳 信息W若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊;并且,該分布式實(shí)時(shí)計(jì)算模塊由若 干個(gè)實(shí)時(shí)計(jì)算子模塊組成,每個(gè)數(shù)據(jù)片被分配到指定的一個(gè)實(shí)時(shí)計(jì)算子模塊進(jìn)行處理,多 個(gè)實(shí)時(shí)計(jì)算子模塊就能同時(shí)處理多個(gè)數(shù)據(jù)片,處理效率極高,實(shí)時(shí)性更強(qiáng)。
      [0030] 4、本發(fā)明中,對數(shù)據(jù)片是按照哈希策略來選擇所要上報(bào)的實(shí)時(shí)計(jì)算子模塊的,目 的是為了提高分布式實(shí)時(shí)計(jì)算模塊的水平擴(kuò)展能力,使得分布式實(shí)時(shí)計(jì)算模塊可W根據(jù)要 處理的數(shù)據(jù)量的規(guī)模來相應(yīng)增減實(shí)時(shí)計(jì)算子模塊的個(gè)數(shù)。
      【附圖說明】
      [0031] 圖1為本發(fā)明實(shí)施例中基于時(shí)間輪盤和播放器屯、跳的活躍用戶集維護(hù)系統(tǒng)的結(jié)構(gòu) 框圖;
      [0032] 圖2為時(shí)間輪盤的結(jié)構(gòu)示意圖;
      [0033] 圖3為本發(fā)明實(shí)施例中基于時(shí)間輪盤和播放器屯、跳的活躍用戶集維護(hù)方法的流程 圖。
      【具體實(shí)施方式】
      [0034] 下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。
      [0035] 參見圖1所示,本發(fā)明實(shí)施例提供一種基于時(shí)間輪盤和播放器屯、跳的活躍用戶集 維護(hù)系統(tǒng),包括若干用戶終端和一個(gè)直播平臺(tái)服務(wù)器,每個(gè)用戶終端內(nèi)設(shè)置有播放器屯、跳 記錄模塊,直播平臺(tái)服務(wù)器內(nèi)設(shè)有緩存預(yù)處理模塊、分布式實(shí)時(shí)計(jì)算模塊和活躍用戶集功 能模塊。
      [0036] 其中,播放器屯、跳記錄模塊用于:實(shí)時(shí)記錄用戶觀看直播時(shí)播放器的屯、跳信息;將 記錄的屯、跳信息上報(bào)給直播平臺(tái)服務(wù)器。
      [0037] 可W理解的是,播放器的屯、跳信息包括:用戶ID(即用戶唯一性的ID)和按照特定 規(guī)則生成的識(shí)別碼,該識(shí)別碼的生成規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備ID (終端設(shè)備ID是用戶終端設(shè)備的唯一 ID)+隨機(jī)數(shù);該識(shí)別碼為固定長度,且生成后經(jīng)加密處 理。
      [0038] 緩存預(yù)處理模塊用于:對各用戶終端上報(bào)的屯、跳信息進(jìn)行緩存和預(yù)處理;定時(shí)將 緩存和預(yù)處理后的所有屯、跳信息W若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊。
      [0039] 分布式實(shí)時(shí)計(jì)算模塊包括若干個(gè)實(shí)時(shí)計(jì)算子模塊,分布式實(shí)時(shí)計(jì)算模塊用于將收 到的每個(gè)數(shù)據(jù)片按照哈希策略分配給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊;每個(gè)實(shí)時(shí)計(jì)算子模塊對 數(shù)據(jù)片中的屯、跳信息進(jìn)行解析并驗(yàn)證,將驗(yàn)證通過的屯、跳信息的用戶ID添加到當(dāng)前時(shí)間對 應(yīng)的活躍用戶集分片中,該活躍用戶集分片是指:預(yù)先將活躍用戶集按照指定的活躍計(jì)算 時(shí)間段劃分成的若干分片。例如:若指定的活躍計(jì)算時(shí)間段為1小時(shí),則活躍用戶集對應(yīng)一 天24小時(shí),就有24個(gè)相應(yīng)的活躍用戶集分片;若指定的活躍計(jì)算時(shí)間段為1分鐘,則活躍用 戶集對應(yīng)一天24*60 = 1440分鐘,就有1440個(gè)相應(yīng)的活躍用戶集分片。
      [0040] 活躍用戶集功能模塊用于:W指定的活躍計(jì)算時(shí)間段為周期(如Wl小時(shí)或1分鐘 等為周期),將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中;如圖2所示,已 創(chuàng)建的時(shí)間輪盤為一種數(shù)據(jù)結(jié)構(gòu),其主體是一個(gè)首尾相連的循環(huán)列表(circular buffer), 該循環(huán)列表中包含有若干個(gè)稱之為槽(slot)的模塊,每個(gè)槽中填充有一個(gè)活躍用戶集分 片,且該循環(huán)列表還具有一個(gè)指向隊(duì)尾的指針(tail)。
      [0041] 參見圖3所示,本發(fā)明實(shí)施例還提供一種應(yīng)用上述系統(tǒng)的基于時(shí)間輪盤和播放器 屯、跳的活躍用戶集維護(hù)方法,包括W下步驟:
      [0042] 步驟SI:每個(gè)用戶終端的播放器屯、跳記錄模塊實(shí)時(shí)記錄用戶觀看直播時(shí)播放器的 屯、跳信息;將記錄的屯、跳信息組裝成JSON格式,并對JSON字符串進(jìn)行BASE64編碼;將編碼后 的屯、跳信息上報(bào)給直播平臺(tái)服務(wù)器,轉(zhuǎn)入步驟S2。
      [0043] 步驟S2:直播平臺(tái)服務(wù)器的緩存預(yù)處理模塊對各個(gè)用戶終端上報(bào)的屯、跳信息進(jìn)行 緩存并預(yù)處理(統(tǒng)一數(shù)據(jù)格式),轉(zhuǎn)入步驟S3。
      [0044] 具體來說,緩存預(yù)處理模塊進(jìn)行緩存的具體過程為:對各個(gè)用戶終端上報(bào)的屯、跳 信息的JSON字符串進(jìn)行BASE64解碼,丟棄不符合要求的屯、跳信息。其中,不符合要求的屯、跳 信息包括:用戶ID為空或者用戶ID不符合數(shù)據(jù)字段類型的屯、跳信息、時(shí)間戳格式錯(cuò)誤的屯、 跳信息、W及用戶終端類型標(biāo)識(shí)非法的屯、跳信息等。
      [0045] 并且,屯、跳信息經(jīng)預(yù)處理之后的數(shù)據(jù)格式如下:
      [0046;
      [0047;
      [004引步驟S3:緩存預(yù)處理模塊定時(shí)將緩存和預(yù)處理后的所有屯、跳信息W若干數(shù)據(jù)片的 形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊;分布式實(shí)時(shí)計(jì)算模塊將收到的每個(gè)數(shù)據(jù)片按照哈希策略 分配給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊,轉(zhuǎn)入步驟S4。
      [0049] 實(shí)際操作時(shí),步驟S3中緩存預(yù)處理模塊定時(shí)將緩存和預(yù)處理后的所有屯、跳信息W 若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊,具體包括W下操作:緩存預(yù)處理模塊每隔1 秒鐘將當(dāng)前緩存和預(yù)處理后的所有屯、跳信息發(fā)送至分布式實(shí)時(shí)計(jì)算模塊,每次發(fā)送時(shí)將屯、 跳信息組合成若干小于等于IM的數(shù)據(jù)片進(jìn)行發(fā)送,即每個(gè)數(shù)據(jù)片由至少一個(gè)完整的屯、跳信 息組成,且組成的數(shù)據(jù)片大小小于等于1M。例如:當(dāng)前緩存的屯、跳信息一共有=個(gè),其大小 分別為0.3M、0.4M和0.5M,則此次發(fā)送時(shí),可將0.3M、0.4M的兩個(gè)屯、跳信息組成一個(gè)數(shù)據(jù)片, 再將0.5M的屯、跳信息組成另一個(gè)數(shù)據(jù)片;最后將運(yùn)兩個(gè)數(shù)據(jù)片一起發(fā)送至分布式實(shí)時(shí)計(jì)算 模塊。
      [0050] 進(jìn)一步地,步驟S3中分布式實(shí)時(shí)計(jì)算模塊將收到的每個(gè)數(shù)據(jù)片按照哈希策略分配 給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊,具體包括W下操作:分布式實(shí)時(shí)計(jì)算模塊為每個(gè)數(shù)據(jù)片分 配一個(gè)唯一的ID號(hào),將該ID號(hào)按照實(shí)時(shí)計(jì)算子模塊的個(gè)數(shù)取模,獲得的余數(shù)則對應(yīng)指定的 實(shí)時(shí)計(jì)算子模塊的ID號(hào);將數(shù)據(jù)片分配給對應(yīng)ID號(hào)的實(shí)時(shí)計(jì)算子模塊。本發(fā)明中,對數(shù)據(jù)片 按哈希策略來選擇所要上報(bào)的實(shí)時(shí)計(jì)算子模塊,目的是為了提高分布式實(shí)時(shí)計(jì)算模塊的水 平擴(kuò)展能力,使得分布式實(shí)時(shí)計(jì)算模塊可W根據(jù)要處理的數(shù)據(jù)量的規(guī)模來相應(yīng)增減實(shí)時(shí)計(jì) 算子模塊的個(gè)數(shù)。
      [0051] 步驟S4:每個(gè)實(shí)時(shí)計(jì)算子模塊對數(shù)據(jù)片中每個(gè)屯、跳信息包含的識(shí)別碼進(jìn)行解密, 然后解析識(shí)別碼,取出時(shí)間戳和終端設(shè)備ID;分別校驗(yàn)時(shí)間戳是否在合理范圍內(nèi)(即時(shí)間戳 與當(dāng)前服務(wù)器的時(shí)間差是否在一分鐘內(nèi))、終端設(shè)備ID是否符合規(guī)范(即再校驗(yàn)終端設(shè)備ID 是否滿足識(shí)別碼的生成規(guī)則);若上述校驗(yàn)均通過,說明該識(shí)別碼對應(yīng)的屯、跳信息有效,貝U 將驗(yàn)證通過的屯、跳信息的用戶ID添加到當(dāng)前時(shí)間對應(yīng)的一個(gè)活躍用戶集分片中,轉(zhuǎn)入步驟 S5;否則,直接丟棄該識(shí)別碼對應(yīng)的屯、跳信息,結(jié)束。
      [0052] 步驟S5:活躍用戶集功能模塊W指定的活躍計(jì)算時(shí)間段為周期,定期將當(dāng)前時(shí)間 對應(yīng)的活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中,結(jié)束。
      [0053] 具體來說,W指定的活躍計(jì)算時(shí)間段為周期,定期將當(dāng)前時(shí)間對應(yīng)的活躍用戶集 分片更新到已創(chuàng)建的時(shí)間輪盤中,具體操作如下:
      [0054] 步驟S501:每經(jīng)過指定的活躍計(jì)算時(shí)間段后,時(shí)間輪盤中每個(gè)槽內(nèi)的活躍用戶集 分片向隊(duì)首前移一格(本發(fā)明中,定義沿順時(shí)針方向向隊(duì)首移動(dòng)為前移),此時(shí),位于隊(duì)首的 槽內(nèi)的活躍用戶集分片被移出并銷毀,位于隊(duì)尾的槽為空,轉(zhuǎn)入步驟S502;
      [0055] 步驟S502:將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到位于隊(duì)尾的槽內(nèi),轉(zhuǎn)入步驟 S503;
      [0056] 步驟S503:將時(shí)間輪盤上的指針向隊(duì)首前移一格。
      [0057] 本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離 本發(fā)明原理的前提下,還可W做出若干改進(jìn)和潤飾,運(yùn)些改進(jìn)和潤飾也視為本發(fā)明的保護(hù) 范圍之內(nèi)。
      [0058] 本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。
      【主權(quán)項(xiàng)】
      1. 一種基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng),包括若干用戶終端和一個(gè) 直播平臺(tái)服務(wù)器,其特征在于:每個(gè)用戶終端內(nèi)設(shè)置有播放器心跳記錄模塊,直播平臺(tái)服務(wù) 器內(nèi)設(shè)置有緩存預(yù)處理模塊、分布式實(shí)時(shí)計(jì)算模塊和活躍用戶集功能模塊; 所述播放器心跳記錄模塊用于:實(shí)時(shí)記錄用戶觀看直播時(shí)播放器的心跳信息;并將記 錄的心跳信息上報(bào)給直播平臺(tái)服務(wù)器; 所述緩存預(yù)處理模塊用于:對各用戶終端上報(bào)的心跳信息進(jìn)行緩存和預(yù)處理;定時(shí)將 緩存和預(yù)處理后的所有心跳信息以若干數(shù)據(jù)片的形式發(fā)送至分布式實(shí)時(shí)計(jì)算模塊; 所述分布式實(shí)時(shí)計(jì)算模塊包括若干個(gè)實(shí)時(shí)計(jì)算子模塊,分布式實(shí)時(shí)計(jì)算模塊用于將收 到的每個(gè)數(shù)據(jù)片按照哈希策略分配給一個(gè)指定的實(shí)時(shí)計(jì)算子模塊;每個(gè)實(shí)時(shí)計(jì)算子模塊對 數(shù)據(jù)片中的心跳信息進(jìn)行解析并驗(yàn)證,將驗(yàn)證通過的心跳信息所對應(yīng)的用戶添加到當(dāng)前時(shí) 間對應(yīng)的活躍用戶集分片中,所述活躍用戶集分片是將活躍用戶集按照指定的活躍計(jì)算時(shí) 間段劃分成的若干分片; 所述活躍用戶集功能模塊用于:以指定的活躍計(jì)算時(shí)間段為周期,將當(dāng)前時(shí)間對應(yīng)的 活躍用戶集分片更新到已創(chuàng)建的時(shí)間輪盤中,所述時(shí)間輪盤為一種數(shù)據(jù)結(jié)構(gòu),其主體是一 個(gè)首尾相連的循環(huán)列表,該循環(huán)列表中包含有若干個(gè)稱之為槽的單元,每個(gè)槽中填充有一 個(gè)活躍用戶集分片,且該循環(huán)列表還具有一個(gè)指向隊(duì)尾的指針。2. 如權(quán)利要求1所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng),其特征在 于:所述播放器的心跳信息包括用戶ID和按照特定規(guī)則生成的識(shí)別碼,所述識(shí)別碼的生成 規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備ID+隨機(jī)數(shù)。3. 如權(quán)利要求2所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng),其特征在 于:所述識(shí)別碼為固定長度,且經(jīng)加密處理。4. 如權(quán)利要求1所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)系統(tǒng),其特征在 于:所述活躍用戶集功能模塊以指定的活躍計(jì)算時(shí)間段為周期,將當(dāng)前時(shí)間對應(yīng)的活躍用 戶集分片更新到已創(chuàng)建的時(shí)間輪盤中時(shí),具體操作過程為:每經(jīng)過指定的活躍計(jì)算時(shí)間段 后,時(shí)間輪盤中每個(gè)槽內(nèi)的活躍用戶集分片向隊(duì)首前移一格;將當(dāng)前時(shí)間對應(yīng)的活躍用戶 集分片更新到位于隊(duì)尾的槽內(nèi);將時(shí)間輪盤上的指針向隊(duì)首前移一格。5. -種應(yīng)用權(quán)利要求1所述系統(tǒng)的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)方 法,其特征在于,包括以下步驟: A、 每個(gè)用戶終端的播放器心跳記錄模塊實(shí)時(shí)記錄用戶觀看直播時(shí)播放器的心跳信息; 將記錄的心跳信息上報(bào)給直播平臺(tái)服務(wù)器; B、 直播平臺(tái)服務(wù)器的緩存預(yù)處理模塊對各個(gè)用戶終端上報(bào)的心跳信息進(jìn)行緩存和預(yù) 處理; C、 緩存預(yù)處理模塊定時(shí)將緩存和預(yù)處理后的所有心跳信息以若干數(shù)據(jù)片的形式發(fā)送 至分布式實(shí)時(shí)計(jì)算模塊;分布式實(shí)時(shí)計(jì)算模塊將每個(gè)數(shù)據(jù)片按照哈希策略分配給一個(gè)指定 的實(shí)時(shí)計(jì)算子模塊; D、 每個(gè)實(shí)時(shí)計(jì)算子模塊對數(shù)據(jù)片中的心跳信息進(jìn)行解析并驗(yàn)證,將驗(yàn)證通過的心跳信 息所對應(yīng)的用戶添加到當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片中; E、 活躍用戶集功能模塊以活躍計(jì)算時(shí)間段為周期,定期將當(dāng)前時(shí)間對應(yīng)的活躍用戶集 分片更新到已創(chuàng)建的時(shí)間輪盤中。6. 如權(quán)利要求5所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)方法,其特征在 于:步驟A中所述播放器的心跳信息包括用戶ID和按照特定規(guī)則生成的識(shí)別碼,該識(shí)別碼的 生成規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備ID+隨機(jī)數(shù); 步驟B中,所述緩存預(yù)處理模塊進(jìn)行緩存時(shí),會(huì)丟棄不符合要求的心跳信息;所述不符 合要求的心跳信息包括:用戶ID為空或者用戶ID不符合數(shù)據(jù)字段類型的心跳信息、時(shí)間戳 格式錯(cuò)誤的心跳信息、以及用戶終端類型標(biāo)識(shí)非法的心跳信息。7. 如權(quán)利要求5所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)方法,其特征在 于:步驟C中,緩存預(yù)處理模塊定時(shí)將緩存和預(yù)處理后的所有心跳信息以若干數(shù)據(jù)片的形式 發(fā)送至分布式實(shí)時(shí)計(jì)算模塊,具體包括以下操作:緩存預(yù)處理模塊每隔1秒鐘將當(dāng)前緩存和 預(yù)處理后的所有心跳信息發(fā)送至分布式實(shí)時(shí)計(jì)算模塊,每次發(fā)送時(shí)將心跳信息組合成若干 小于等于1M的數(shù)據(jù)片進(jìn)行發(fā)送。8. 如權(quán)利要求5所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)方法,其特征在 于:步驟C中,分布式實(shí)時(shí)計(jì)算模塊將每個(gè)數(shù)據(jù)片按照哈希策略分配給一個(gè)指定的實(shí)時(shí)計(jì)算 子模塊,具體包括以下操作:分布式實(shí)時(shí)計(jì)算模塊為每個(gè)數(shù)據(jù)片分配一個(gè)唯一的ID號(hào),將該 ID號(hào)按照實(shí)時(shí)計(jì)算子模塊的個(gè)數(shù)取模,獲得的余數(shù)則對應(yīng)指定的實(shí)時(shí)計(jì)算子模塊的ID號(hào); 將數(shù)據(jù)片分配給對應(yīng)ID號(hào)的實(shí)時(shí)計(jì)算子模塊。9. 如權(quán)利要求5所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)方法,其特征在 于:步驟A中所述播放器的心跳信息包括用戶ID和按照特定規(guī)則生成的識(shí)別碼,該識(shí)別碼的 生成規(guī)則為:時(shí)間戳+用戶終端設(shè)備API獲取的終端設(shè)備ID+隨機(jī)數(shù); 在此基礎(chǔ)上,步驟D具體包括以下操作:每個(gè)實(shí)時(shí)計(jì)算子模塊對數(shù)據(jù)片中每個(gè)心跳信息 包含的識(shí)別碼進(jìn)行解密,然后解析識(shí)別碼,取出時(shí)間戳和終端設(shè)備ID;分別校驗(yàn)時(shí)間戳是否 在合理范圍內(nèi)、終端設(shè)備ID是否符合規(guī)范;若上述校驗(yàn)均通過,則將驗(yàn)證通過的心跳信息的 用戶ID添加到當(dāng)前時(shí)間對應(yīng)的一個(gè)活躍用戶集分片中,否則,直接丟棄該識(shí)別碼對應(yīng)的心 跳信息,結(jié)束。10. 如權(quán)利要求5所述的基于時(shí)間輪盤和播放器心跳的活躍用戶集維護(hù)方法,其特征在 于,步驟E具體包括以下操作:每經(jīng)過指定的活躍計(jì)算時(shí)間段后,時(shí)間輪盤中每個(gè)槽內(nèi)的活 躍用戶集分片向隊(duì)首前移一格;將當(dāng)前時(shí)間對應(yīng)的活躍用戶集分片更新到位于隊(duì)尾的槽 內(nèi);將時(shí)間輪盤上的指針向隊(duì)首前移一格。
      【文檔編號(hào)】H04N21/258GK105979299SQ201610473739
      【公開日】2016年9月28日
      【申請日】2016年6月24日
      【發(fā)明人】吳瑞誠
      【申請人】武漢斗魚網(wǎng)絡(luò)科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1