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