两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法

文檔序號(hào):10660634閱讀:356來源:國知局
用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法,至少能夠解決傳統(tǒng)的單機(jī)統(tǒng)計(jì)方式因受限于單個(gè)服務(wù)器的處理速度以及內(nèi)存容量而無法滿足互聯(lián)網(wǎng)用戶大規(guī)模增長需求,以及不支持?jǐn)U展、災(zāi)備效果不佳的技術(shù)問題。該用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)包括:服務(wù)器集群,以及與服務(wù)器集群相連的SSDB數(shù)據(jù)庫,其中,服務(wù)器集群包括多個(gè)服務(wù)器節(jié)點(diǎn),各個(gè)服務(wù)器節(jié)點(diǎn)分別用于處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求,并根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息,將用戶狀態(tài)消息提供給SSDB數(shù)據(jù)庫;SSDB數(shù)據(jù)庫用于對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成并存儲(chǔ)用戶狀態(tài)信息。
【專利說明】
用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法?!颈尘凹夹g(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的日趨成熟,網(wǎng)絡(luò)應(yīng)用的種類和數(shù)量也越來越多,出現(xiàn)了多種多樣的網(wǎng)絡(luò)應(yīng)用,例如網(wǎng)絡(luò)游戲、網(wǎng)絡(luò)直播等。為了更好地為用戶提供服務(wù),這些網(wǎng)絡(luò)應(yīng)用的提供商往往需要對(duì)用戶狀態(tài)進(jìn)行統(tǒng)計(jì)。
[0003]目前,在統(tǒng)計(jì)用戶狀態(tài)時(shí),是由一個(gè)單獨(dú)的服務(wù)器節(jié)點(diǎn)接收來自在線用戶終端的打點(diǎn)請求,獲取其中包含的打點(diǎn)數(shù)據(jù),并將根據(jù)打點(diǎn)數(shù)據(jù)得到的用戶狀態(tài)信息保存到內(nèi)存中。當(dāng)需要查詢某用戶的狀態(tài)時(shí),由該服務(wù)器節(jié)點(diǎn)從內(nèi)存中讀取用戶狀態(tài)信息并反饋查詢結(jié)果。[〇〇〇4]由于目前的用戶狀態(tài)信息采用內(nèi)存存儲(chǔ)方式,因此,只能通過單機(jī)實(shí)現(xiàn)用戶在線狀態(tài)的統(tǒng)計(jì)。然而,單機(jī)統(tǒng)計(jì)的方式僅適用于用戶量級(jí)較小的應(yīng)用場景中,隨著互聯(lián)網(wǎng)用戶的增多,一個(gè)網(wǎng)絡(luò)應(yīng)用的在線用戶數(shù)量動(dòng)輒達(dá)到千萬級(jí)甚至億萬級(jí)的量級(jí),受到單個(gè)服務(wù)器的處理速度以及內(nèi)存容量的制約,傳統(tǒng)的單機(jī)統(tǒng)計(jì)方式無法支持如此龐大的用戶量。而且,這種基于內(nèi)存存儲(chǔ)的單機(jī)統(tǒng)計(jì)方式也無法支持?jǐn)U展:如果將用于統(tǒng)計(jì)用戶狀態(tài)的服務(wù)器擴(kuò)展到兩個(gè)或多個(gè),由于各個(gè)服務(wù)器分別通過各自的內(nèi)存來存儲(chǔ)用戶狀態(tài)信息,所以,當(dāng)需要查詢某用戶的狀態(tài)時(shí),無法確定該從哪個(gè)服務(wù)器中進(jìn)行查詢。由此可見,傳統(tǒng)的單機(jī)統(tǒng)計(jì)方式無法滿足互聯(lián)網(wǎng)用戶大規(guī)模增長的需求。不僅如此,在單機(jī)統(tǒng)計(jì)的方式中,如果該服務(wù)器故障,將直接導(dǎo)致統(tǒng)計(jì)過程的中斷。
[0005]由此可見,在傳統(tǒng)的實(shí)現(xiàn)方式中,受到單個(gè)服務(wù)器的內(nèi)存容量的制約,導(dǎo)致無法統(tǒng)計(jì)大量級(jí)的用戶人數(shù),且不支持?jǐn)U展、災(zāi)備效果不佳。
【發(fā)明內(nèi)容】

[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的用戶在線狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法。
[0007]依據(jù)本發(fā)明的一個(gè)方面,提供了一種用戶狀態(tài)統(tǒng)計(jì)系統(tǒng),包括:服務(wù)器集群,以及與服務(wù)器集群相連的SSDB數(shù)據(jù)庫,其中,服務(wù)器集群包括多個(gè)服務(wù)器節(jié)點(diǎn),各個(gè)服務(wù)器節(jié)點(diǎn)分別用于處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求,并根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息,將用戶狀態(tài)消息提供給SSDB數(shù)據(jù)庫;SSDB數(shù)據(jù)庫用于對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成并存儲(chǔ)用戶狀態(tài)信息。
[0008]可選地,用戶狀態(tài)消息包括用戶上線消息和用戶下線消息,且各個(gè)用戶終端在其在線期間,每隔預(yù)設(shè)時(shí)間間隔發(fā)送一次打點(diǎn)請求,則各個(gè)服務(wù)器節(jié)點(diǎn)具體用于:每當(dāng)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ)有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為該用戶終端生成用戶上線消息;其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn)行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。
[0009]可選地,打點(diǎn)請求中包括應(yīng)用信息字段,且應(yīng)用信息字段進(jìn)一步包括多個(gè)分別指示不同維度的應(yīng)用信息的子字段,則對(duì)應(yīng)于一個(gè)用戶終端的定時(shí)器進(jìn)一步包括多個(gè)子定時(shí)器,各個(gè)子定時(shí)器分別對(duì)應(yīng)于不同維度的狀態(tài)信息;并且,用戶上線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶上線消息,且用戶下線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶下線消息。
[0010]可選地,系統(tǒng)進(jìn)一步包括:公共消息隊(duì)列模塊以及后端處理模塊,其中,各個(gè)服務(wù)器節(jié)點(diǎn)用于將生成的用戶狀態(tài)消息存儲(chǔ)到公共消息隊(duì)列模塊中,后端處理模塊用于讀取公共消息隊(duì)列模塊中的用戶狀態(tài)消息,并根據(jù)讀取到的用戶狀態(tài)消息修改SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息。
[0011]可選地,服務(wù)器集群中進(jìn)一步包括:至少一個(gè)反向代理模塊,用于接收各個(gè)用戶終端發(fā)送的打點(diǎn)請求,獲取打點(diǎn)請求中包含的用戶標(biāo)識(shí),通過預(yù)設(shè)的哈希算法對(duì)用戶標(biāo)識(shí)進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果將各個(gè)打點(diǎn)請求分配給各個(gè)服務(wù)器節(jié)點(diǎn)處理。
[0012]可選地,反向代理模塊進(jìn)一步用于:檢測各個(gè)服務(wù)器節(jié)點(diǎn)的工作狀態(tài),當(dāng)檢測到出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)時(shí),停用出現(xiàn)故障的服務(wù)器節(jié)點(diǎn);并在檢測到故障恢復(fù)時(shí),重新啟用出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)。
[0013]可選地,系統(tǒng)進(jìn)一步包括:與SSDB數(shù)據(jù)庫相連的查詢服務(wù)器,用于根據(jù)接收到的查詢請求,查詢SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息,并返回與該查詢請求相對(duì)應(yīng)的查詢結(jié)果; 并且,查詢服務(wù)器進(jìn)一步用于:監(jiān)測各個(gè)應(yīng)用和/或應(yīng)用的各個(gè)維度的用戶在線人數(shù),當(dāng)監(jiān)測到的用戶在線人數(shù)的變化率大于預(yù)設(shè)閾值時(shí),發(fā)出報(bào)警提示信息。
[0014]可選地,打點(diǎn)請求中包括應(yīng)用類型字段,則服務(wù)器節(jié)點(diǎn)進(jìn)一步用于:根據(jù)應(yīng)用類型字段將用戶狀態(tài)消息推送給對(duì)應(yīng)類型的應(yīng)用。
[0015]可選地,打點(diǎn)請求為異步請求消息。
[0016]依據(jù)本發(fā)明的另一方面,提供了一種用戶狀態(tài)統(tǒng)計(jì)方法,包括:通過服務(wù)器集群中的多個(gè)服務(wù)器節(jié)點(diǎn)處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求;根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息, 將用戶狀態(tài)消息發(fā)送給SSDB數(shù)據(jù)庫;通過SSDB數(shù)據(jù)庫對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成并存儲(chǔ)用戶狀態(tài)信息。
[0017]可選地,用戶狀態(tài)消息包括用戶上線消息和用戶下線消息,且各個(gè)用戶終端在其在線期間,每隔預(yù)設(shè)時(shí)間間隔發(fā)送一次打點(diǎn)請求,則根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息的步驟具體包括:每當(dāng)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ)有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為該用戶終端生成用戶上線消息;其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn)行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。
[0018]可選地,打點(diǎn)請求中包括應(yīng)用信息字段,且應(yīng)用信息字段進(jìn)一步包括多個(gè)分別指示不同維度的應(yīng)用信息的子字段,則對(duì)應(yīng)于一個(gè)用戶終端的定時(shí)器進(jìn)一步包括多個(gè)子定時(shí)器,各個(gè)子定時(shí)器分別對(duì)應(yīng)于不同維度的狀態(tài)信息;并且,用戶上線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶上線消息,且用戶下線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶下線消息。
[0019]可選地,將用戶狀態(tài)消息發(fā)送給SSDB數(shù)據(jù)庫的步驟具體包括:各個(gè)服務(wù)器節(jié)點(diǎn)將生成的用戶狀態(tài)消息存儲(chǔ)到預(yù)設(shè)的公共消息隊(duì)列模塊中,由預(yù)設(shè)的后端處理模塊將公共消息隊(duì)列模塊中的用戶狀態(tài)消息提供給SSDB數(shù)據(jù)庫。
[0020]可選地,通過服務(wù)器集群中的多個(gè)服務(wù)器節(jié)點(diǎn)處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求的步驟具體包括:通過至少一個(gè)反向代理模塊接收各個(gè)用戶終端發(fā)送的打點(diǎn)請求,獲取打點(diǎn)請求中包含的用戶標(biāo)識(shí),通過預(yù)設(shè)的哈希算法對(duì)用戶標(biāo)識(shí)進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果將各個(gè)打點(diǎn)請求分配給各個(gè)服務(wù)器節(jié)點(diǎn)處理。
[0021]可選地,方法進(jìn)一步包括步驟:通過反向代理模塊檢測各個(gè)服務(wù)器節(jié)點(diǎn)的工作狀態(tài),當(dāng)檢測到出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)時(shí),停用出現(xiàn)故障的服務(wù)器節(jié)點(diǎn);并在檢測到故障恢復(fù)時(shí),重新啟用出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)。
[0022]可選地,方法包括:根據(jù)接收到的查詢請求,查詢SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息,并返回與該查詢請求相對(duì)應(yīng)的查詢結(jié)果;并且,方法進(jìn)一步包括:監(jiān)測各個(gè)應(yīng)用和/或應(yīng)用的各個(gè)維度的用戶在線人數(shù),當(dāng)監(jiān)測到的用戶在線人數(shù)的變化率大于預(yù)設(shè)閾值時(shí),發(fā)出報(bào)警提示信息。
[0023]可選地,打點(diǎn)請求中包括應(yīng)用類型字段,則方法進(jìn)一步包括步驟:根據(jù)應(yīng)用類型字段將用戶狀態(tài)消息推送給對(duì)應(yīng)類型的應(yīng)用。
[0024]可選地,打點(diǎn)請求為異步請求消息。
[0025]在本發(fā)明提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法中,通過包含多個(gè)服務(wù)器節(jié)點(diǎn)的服務(wù)器集群接收來自各個(gè)用戶終端的打點(diǎn)請求,并根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息,將該用戶狀態(tài)消息提供給SSDB數(shù)據(jù)庫,以供SSDB數(shù)據(jù)庫根據(jù)用戶狀態(tài)消息維護(hù)用戶狀態(tài)信息。由此可見,在本發(fā)明中,服務(wù)器節(jié)點(diǎn)通過集群形式實(shí)現(xiàn),且數(shù)量為多個(gè),因而能夠并行處理各個(gè)用戶終端發(fā)來的打點(diǎn)請求,大幅提高了服務(wù)器節(jié)點(diǎn)的處理速度,縮短了響應(yīng)時(shí)間,能夠同時(shí)服務(wù)于更多的用戶終端。另外,由于用戶狀態(tài)信息存儲(chǔ)在SSDB數(shù)據(jù)庫內(nèi),而非存儲(chǔ)在服務(wù)器節(jié)點(diǎn)的內(nèi)存中,因此,上述服務(wù)器集群中所包含的服務(wù)器節(jié)點(diǎn)的數(shù)量可以靈活調(diào)整:當(dāng)用戶數(shù)量多時(shí),可以通過掛接一個(gè)服務(wù)器節(jié)點(diǎn)來服務(wù)于更多的用戶;當(dāng)用戶數(shù)量少時(shí),可以摘除一個(gè)服務(wù)器節(jié)點(diǎn)以節(jié)約成本。由此可見,本申請?zhí)峁┑姆绞骄哂休^強(qiáng)的可擴(kuò)展性,系統(tǒng)設(shè)計(jì)較為靈活。除此之外,當(dāng)某一個(gè)服務(wù)器節(jié)點(diǎn)故障時(shí),其他服務(wù)器節(jié)點(diǎn)依然能夠確保整個(gè)系統(tǒng)的正常運(yùn)行,因此,本申請?zhí)峁┑姆绞骄哂休^強(qiáng)的災(zāi)備功能。
[0026]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。【附圖說明】
[0027]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0028]圖1示出了本發(fā)明一個(gè)實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)圖;
[0029]圖2示出了本發(fā)明另一具體實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)圖;
[0030]圖3示出了本發(fā)明一個(gè)實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)方法的流程圖;[〇〇31 ]圖4示出了本發(fā)明一個(gè)具體實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)方法的流程圖?!揪唧w實(shí)施方式】
[0032]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0033]本發(fā)明實(shí)施例提供了一種用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法,至少能夠解決傳統(tǒng)的單機(jī)統(tǒng)計(jì)方式因受限于單個(gè)服務(wù)器的處理速度以及內(nèi)存容量而無法滿足互聯(lián)網(wǎng)用戶大規(guī)模增長需求,以及不支持?jǐn)U展、災(zāi)備效果不佳的技術(shù)問題。
[0034]圖1示出了本發(fā)明一個(gè)實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)的功能框圖。如圖1所示, 該用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)包括:服務(wù)器集群11,以及與服務(wù)器集群11相連的SSDB數(shù)據(jù)庫12。其中,服務(wù)器集群11包括多個(gè)服務(wù)器節(jié)點(diǎn)10,各個(gè)服務(wù)器節(jié)點(diǎn)10分別用于處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求,并根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息,將用戶狀態(tài)消息提供給SSDB數(shù)據(jù)庫 12;SSDB數(shù)據(jù)庫12用于對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)10提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成并存儲(chǔ)用戶狀態(tài)信息。
[0035]由此可見,在本發(fā)明中,服務(wù)器節(jié)點(diǎn)通過集群形式實(shí)現(xiàn),且數(shù)量為多個(gè),因而能夠并行處理各個(gè)用戶終端發(fā)來的打點(diǎn)請求,大幅提高了服務(wù)器節(jié)點(diǎn)的處理速度,縮短了響應(yīng)時(shí)間,能夠同時(shí)服務(wù)于更多的用戶終端。另外,由于用戶狀態(tài)信息存儲(chǔ)在SSDB數(shù)據(jù)庫內(nèi),而非存儲(chǔ)在服務(wù)器節(jié)點(diǎn)的內(nèi)存中,因此,上述服務(wù)器集群中所包含的服務(wù)器節(jié)點(diǎn)的數(shù)量可以靈活調(diào)整:當(dāng)用戶數(shù)量多時(shí),可以通過掛接一個(gè)服務(wù)器節(jié)點(diǎn)來服務(wù)于更多的用戶;當(dāng)用戶數(shù)量少時(shí),可以摘除一個(gè)服務(wù)器節(jié)點(diǎn)以節(jié)約成本。由此可見,本申請?zhí)峁┑姆绞骄哂休^強(qiáng)的可擴(kuò)展性,系統(tǒng)設(shè)計(jì)較為靈活。除此之外,當(dāng)某一個(gè)服務(wù)器節(jié)點(diǎn)故障時(shí),其他服務(wù)器節(jié)點(diǎn)依然能夠確保整個(gè)系統(tǒng)的正常運(yùn)行,因此,本申請?zhí)峁┑姆绞骄哂休^強(qiáng)的災(zāi)備功能。
[0036]圖2示出了本發(fā)明一個(gè)具體實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)示意圖。如圖2 所示,該系統(tǒng)包括:服務(wù)器集群20、公共消息隊(duì)列模塊21、后端處理模塊22、SSDB數(shù)據(jù)庫23以及查詢服務(wù)器24。其中,服務(wù)器集群20又進(jìn)一步包括:第一反向代理模塊201、第二反向代理模塊202、第一服務(wù)器節(jié)點(diǎn)203、第二服務(wù)器節(jié)點(diǎn)204以及第三服務(wù)器節(jié)點(diǎn)205。下面結(jié)合圖2 詳細(xì)介紹該系統(tǒng)的各個(gè)部件/模塊的具體結(jié)構(gòu)和功能:[〇〇37]服務(wù)器集群20能夠通過多個(gè)服務(wù)器節(jié)點(diǎn)并行處理大量用戶終端發(fā)來的打點(diǎn)請求, 并根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息。具體地,在本實(shí)施例中,由第一反向代理模塊201和第二反向代理模塊202來接收大量用戶終端發(fā)送的打點(diǎn)請求。其中,每個(gè)用戶終端在其在線期間,每隔預(yù)設(shè)時(shí)間間隔發(fā)送一次打點(diǎn)請求,以表明其當(dāng)前處于在線狀態(tài)。第一反向代理模塊 201和第二反向代理模塊202可以通過兩臺(tái)單獨(dú)的Nginx反向代理服務(wù)器來實(shí)現(xiàn)。反向代理模塊的功能主要是接收來自前端的用戶終端的打點(diǎn)請求,并將打點(diǎn)請求發(fā)送給服務(wù)器集群中的各個(gè)服務(wù)器節(jié)點(diǎn)。另外,本領(lǐng)域技術(shù)人員也可以對(duì)反向代理模塊的數(shù)量和具體形式進(jìn)行靈活更改,例如,可以設(shè)置一個(gè)或更多個(gè)反向代理模塊,另外,反向代理模塊也可以采用其他形式的網(wǎng)絡(luò)服務(wù)器來實(shí)現(xiàn)。而且,反向代理模塊除了采用單獨(dú)的網(wǎng)絡(luò)服務(wù)器來實(shí)現(xiàn)之夕卜,也可以直接集成在各個(gè)服務(wù)器節(jié)點(diǎn)上,例如,將第一反向代理模塊201直接集成在第一服務(wù)器節(jié)點(diǎn)203上,將第二反向代理模塊202直接集成在第二服務(wù)器節(jié)點(diǎn)204上。另外,在本發(fā)明其他的實(shí)施例中,本領(lǐng)域技術(shù)人員也可以省略第一反向代理模塊201和第二反向代理模塊202,直接由各個(gè)服務(wù)器節(jié)點(diǎn)來接收用戶終端的打點(diǎn)請求。[〇〇38]反向代理模塊的功能至少包括如下兩點(diǎn):第一,反向代理模塊可以將多個(gè)用戶終端發(fā)來的打點(diǎn)請求按照一定的規(guī)則分配給各個(gè)服務(wù)器節(jié)點(diǎn),以使各個(gè)服務(wù)器節(jié)點(diǎn)相互并行工作,從而能夠同時(shí)處理海量用戶終端的請求,提高系統(tǒng)吞吐量,降低處理時(shí)延,并近似實(shí)現(xiàn)負(fù)載均衡的效果。為此,各個(gè)反向代理模塊接收到用戶終端發(fā)送的打點(diǎn)請求后,獲取本次打點(diǎn)請求中包含的用戶標(biāo)識(shí),通過預(yù)設(shè)的哈希算法對(duì)該用戶標(biāo)識(shí)進(jìn)行計(jì)算,并根據(jù)計(jì)算結(jié)果將各個(gè)打點(diǎn)請求分配給各個(gè)服務(wù)器節(jié)點(diǎn)處理。除了采用哈希算法外,也可以采用隨機(jī)算法來分配打點(diǎn)請求,或者,也可以將各次接收到的打點(diǎn)請求依次發(fā)給各個(gè)服務(wù)器節(jié)點(diǎn)處理。 另外,由于各個(gè)服務(wù)器節(jié)點(diǎn)需要對(duì)用戶終端的狀態(tài)進(jìn)行持續(xù)維護(hù),因此,優(yōu)選地,同一用戶終端發(fā)送的各次打點(diǎn)請求應(yīng)分配給同一服務(wù)器節(jié)點(diǎn)處理,例如,假設(shè)用戶終端A首次發(fā)送的打點(diǎn)請求由第一服務(wù)器節(jié)點(diǎn)203處理,則該用戶終端A后續(xù)發(fā)送的打點(diǎn)請求都應(yīng)由第一服務(wù)器節(jié)點(diǎn)203處理,如果由于分發(fā)錯(cuò)誤或網(wǎng)絡(luò)傳輸錯(cuò)誤等各類原因?qū)е掠脩艚K端A后續(xù)發(fā)送的某一次打點(diǎn)請求分配給了第二服務(wù)器節(jié)點(diǎn)204,則第二服務(wù)器節(jié)點(diǎn)204通過預(yù)設(shè)的哈希算法對(duì)該用戶標(biāo)識(shí)進(jìn)行計(jì)算后,確認(rèn)該打點(diǎn)請求應(yīng)由第一服務(wù)器節(jié)點(diǎn)203處理,則第二服務(wù)器節(jié)點(diǎn)204將本次打點(diǎn)請求轉(zhuǎn)發(fā)給第一服務(wù)器節(jié)點(diǎn)203。由此可見,在本實(shí)施例中,各個(gè)服務(wù)器節(jié)點(diǎn)本身還具備對(duì)打點(diǎn)請求中的用戶標(biāo)識(shí)進(jìn)行計(jì)算的能力,因此能夠確保同一用戶終端發(fā)送的各次打點(diǎn)請求均由同一服務(wù)器節(jié)點(diǎn)處理,從而便于服務(wù)器節(jié)點(diǎn)對(duì)用戶終端的狀態(tài)進(jìn)行持續(xù)維護(hù)。[〇〇39]第二,反向代理模塊還可以檢測各個(gè)服務(wù)器節(jié)點(diǎn)的工作狀態(tài),當(dāng)檢測到出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)時(shí),停用出現(xiàn)故障的服務(wù)器節(jié)點(diǎn);并在檢測到該故障恢復(fù)時(shí),重新啟用之前出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)。由此,能夠提高系統(tǒng)的魯棒性,防止因某一服務(wù)器節(jié)點(diǎn)出現(xiàn)故障而影響整個(gè)系統(tǒng)的正常運(yùn)行,使系統(tǒng)具備較好的災(zāi)備效果。例如,反向代理模塊201向服務(wù)器節(jié)點(diǎn)發(fā)送打點(diǎn)請求后,要求服務(wù)器節(jié)點(diǎn)返回確認(rèn)數(shù)據(jù)包,若某一服務(wù)器節(jié)點(diǎn)在規(guī)定時(shí)間內(nèi)未返回確認(rèn)數(shù)據(jù)包,則反向代理模塊確定相應(yīng)的服務(wù)器節(jié)點(diǎn)出現(xiàn)故障,從而暫時(shí)停用該服務(wù)器節(jié)點(diǎn),將原本由該服務(wù)器節(jié)點(diǎn)處理的打點(diǎn)請求切換到其他的服務(wù)器節(jié)點(diǎn)處理。另外,也可以通過服務(wù)器節(jié)點(diǎn)定期向反向代理模塊發(fā)送心跳包的方式來檢測各個(gè)服務(wù)器節(jié)點(diǎn)是否出現(xiàn)故障。
[0040]各個(gè)服務(wù)器節(jié)點(diǎn)接收到打點(diǎn)請求后,根據(jù)打點(diǎn)請求對(duì)相應(yīng)的用戶終端的狀態(tài)進(jìn)行維護(hù),并根據(jù)用戶終端的狀態(tài)生成用戶狀態(tài)消息。具體地,服務(wù)器節(jié)點(diǎn)可以根據(jù)用戶狀態(tài)文件來維護(hù)各個(gè)用戶終端的狀態(tài)。其中,用戶狀態(tài)文件可以通過字典、日志等多種形式實(shí)現(xiàn), 其中記錄了所有處于在線狀態(tài)的用戶終端所對(duì)應(yīng)的狀態(tài)記錄。當(dāng)服務(wù)器節(jié)點(diǎn)接收到用戶終端發(fā)送的打點(diǎn)請求后,獲取打點(diǎn)請求中包含的用戶標(biāo)識(shí),并在預(yù)設(shè)的用戶狀態(tài)文件中查詢是否包含該用戶標(biāo)識(shí)所對(duì)應(yīng)的狀態(tài)記錄。如果在預(yù)設(shè)的用戶狀態(tài)文件中查詢到了該用戶標(biāo)識(shí)所對(duì)應(yīng)的狀態(tài)記錄,說明該用戶終端已經(jīng)上線并處于在線狀態(tài);如果在預(yù)設(shè)的用戶狀態(tài)文件中未查詢到該用戶標(biāo)識(shí)所對(duì)應(yīng)的狀態(tài)記錄,說明該用戶終端剛剛上線,相應(yīng)地,為該用戶終端生成的用戶狀態(tài)消息為用戶上線消息。
[0041]除了通過用戶狀態(tài)文件來維護(hù)各個(gè)用戶終端的狀態(tài)之外,為了更加有效地監(jiān)測各個(gè)用戶終端的上線動(dòng)作和下線動(dòng)作,在本實(shí)施例中,也可以通過定時(shí)器來記錄各個(gè)用戶終端的狀態(tài)。相應(yīng)地,每當(dāng)服務(wù)器節(jié)點(diǎn)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ)有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,說明該用戶終端已經(jīng)處于在線狀態(tài),則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,說明該用戶終端剛剛上線,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為該用戶終端生成用戶上線消息; 其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn)行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。由此可見,通過定時(shí)器能夠監(jiān)測到各個(gè)用戶終端的上線動(dòng)作和下線動(dòng)作,并在用戶終端上線時(shí)生成用戶上線消息,在用戶終端下線時(shí)生成用戶下線消息。 用戶狀態(tài)消息除包含上述的用戶上線消息和用戶下線消息外,還可以進(jìn)一步包含用于指示用戶終端目前處于在線狀態(tài)的用戶在線消息等。
[0042]在本實(shí)施例中,各個(gè)服務(wù)器節(jié)點(diǎn)將生成的用戶狀態(tài)消息存儲(chǔ)到公共消息隊(duì)列模塊 21中。其中,公共消息隊(duì)列模塊用于通過公共消息隊(duì)列對(duì)用戶狀態(tài)消息進(jìn)行有序存儲(chǔ),其可以通過一臺(tái)單獨(dú)的服務(wù)器實(shí)現(xiàn),也可以集成在SSDB數(shù)據(jù)庫上。公共消息隊(duì)列是一種先進(jìn)先出的分布式消息隊(duì)列,能夠在消息傳輸過程中作為保存消息的容器,從而為程序或組件提供異步的通信機(jī)制,使發(fā)送方和接收方不必同時(shí)在線,也不必了解對(duì)方,就可以相互傳輸消息。在本實(shí)施例中,通過公共消息隊(duì)列模塊21對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)生成的用戶狀態(tài)消息進(jìn)行統(tǒng)一存儲(chǔ)。存儲(chǔ)在公共消息隊(duì)列模塊21中的用戶狀態(tài)消息由后端處理模塊22負(fù)責(zé)處理。具體地,后端處理模塊22可以通過服務(wù)器上的一個(gè)進(jìn)程來實(shí)現(xiàn)。后端處理模塊22與公共消息隊(duì)列模塊21之間可以通過訂閱模式或點(diǎn)對(duì)點(diǎn)模式等多種方式進(jìn)行通信。每當(dāng)公共消息隊(duì)列模塊21中存儲(chǔ)了新的用戶狀態(tài)消息時(shí),后端處理模塊22負(fù)責(zé)讀取該用戶狀態(tài)消息,并根據(jù)該用戶狀態(tài)消息修改SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息。例如,當(dāng)后端處理模塊讀取到的用戶狀態(tài)消息為用戶上線消息時(shí),則在SSDB數(shù)據(jù)庫中增加相應(yīng)用戶終端的上線狀態(tài)信息; 當(dāng)后端處理模塊讀取到的用戶狀態(tài)消息為用戶下線消息時(shí),則在SSDB數(shù)據(jù)庫中刪除相應(yīng)用戶終端的上線狀態(tài)信息。[〇〇43] SSDB數(shù)據(jù)庫23負(fù)責(zé)根據(jù)后端處理模塊發(fā)送的指令對(duì)用戶狀態(tài)信息進(jìn)行存儲(chǔ)及維護(hù)。在SSDB數(shù)據(jù)庫中記錄了各個(gè)用戶終端的上線時(shí)間、下線時(shí)間、在線時(shí)長等具體信息。由于SSDB服務(wù)器為高性能數(shù)據(jù)庫服務(wù)器,其能夠提供內(nèi)存式存儲(chǔ)服務(wù),且支持?jǐn)U容,能夠在存儲(chǔ)容量不足時(shí)通過掛接一個(gè)SSDB服務(wù)器來實(shí)現(xiàn)擴(kuò)容存儲(chǔ)方案,從而實(shí)現(xiàn)存儲(chǔ)容量的自由擴(kuò)展。因此,通過SSDB數(shù)據(jù)庫能夠存儲(chǔ)海量的用戶狀態(tài)信息。[〇〇44]查詢服務(wù)器24能夠根據(jù)接收到的查詢請求,查詢SSDB數(shù)據(jù)庫23中存儲(chǔ)的用戶狀態(tài)信息,并返回與該查詢請求相對(duì)應(yīng)的查詢結(jié)果。其中,查詢服務(wù)器不僅能夠查詢各個(gè)用戶終端的當(dāng)前狀態(tài)、在線時(shí)長等信息,還能夠進(jìn)行多維度、多類型的查詢。
[0045]所謂多維度的查詢,是指能夠查詢某一具體應(yīng)用的各個(gè)維度的信息。例如,以游戲應(yīng)用為例來說,該應(yīng)用至少包含平臺(tái)、游戲和區(qū)服這三個(gè)不同維度的應(yīng)用信息;又如,以熊貓直播應(yīng)用為例來說,該應(yīng)用至少包含終端類型(如PC web端和安卓端)、房間號(hào)這兩個(gè)不同維度的應(yīng)用信息。為了能夠提供多個(gè)維度的查詢,首先,需要在上文提到的用戶終端發(fā)送的打點(diǎn)請求中包含多個(gè)維度的信息,例如,打點(diǎn)請求為“/Hit/Proc?uid = &loc = &prj = &sec = &0ther=”,其中,“l(fā)oc”字段為應(yīng)用信息字段,該字段進(jìn)一步包括多個(gè)分別指示不同維度的應(yīng)用信息的子字段。
[0046]假設(shè)某用戶終端A在上午10:00發(fā)送的打點(diǎn)請求中的應(yīng)用信息字段為l〇C = y〇Uxi dzz| si,該字段內(nèi)包含三個(gè)子字段,各個(gè)子字段之間用豎線分隔,第一個(gè)子字段“youxi”用于表示發(fā)送本次打點(diǎn)請求的用戶終端A目前處于游戲平臺(tái)在線狀態(tài),第二個(gè)子字段“dzz”用于表示發(fā)送本次打點(diǎn)請求的用戶終端目前在線的游戲名稱為“大主宰”,第三個(gè)子字段“si” 用于表示發(fā)送本次打點(diǎn)請求的用戶終端目前在線的區(qū)服為“si區(qū)服”。服務(wù)器節(jié)點(diǎn)接收到本次打點(diǎn)請求后,需要為用戶終端A創(chuàng)建對(duì)應(yīng)的定時(shí)器A,以指示用戶終端A處于在線狀態(tài),為了清楚地顯示出用戶終端A在應(yīng)用的各個(gè)維度的在線情況,服務(wù)器節(jié)點(diǎn)所創(chuàng)建的定時(shí)器A還需要進(jìn)一步包括三個(gè)子定時(shí)器,其中,子定時(shí)器A1用于記錄用戶終端A在上午10:00時(shí)處于游戲平臺(tái)在線狀態(tài),子定時(shí)器A2用于記錄用戶終端A在上午10:00時(shí)處于游戲平臺(tái)中的“大主宰”游戲在線狀態(tài),子定時(shí)器A3用于記錄用戶終端A在上午10:00時(shí)處于游戲平臺(tái)的“大主宰”游戲中的“s 1”區(qū)服在線狀態(tài)。
[0047]假設(shè)該用戶終端A在上午10:10發(fā)送的打點(diǎn)請求中的應(yīng)用信息字段為l〇C = y〇Uxi dzz|S2,由此可以看出,用戶終端A處于游戲平臺(tái)中的大主宰游戲的s2區(qū)服在線狀態(tài)。服務(wù)器節(jié)點(diǎn)接收到本次打點(diǎn)請求后,為用戶終端A對(duì)應(yīng)的定時(shí)器A發(fā)送延續(xù)指令,以延續(xù)定時(shí)器A 的生命周期,從而指示用戶終端A仍然處于在線狀態(tài)。另外,由于用戶終端A依然處于游戲平臺(tái)在線狀態(tài),因此,為子定時(shí)器A1發(fā)送延續(xù)指令,從而指示用戶終端A仍然處于游戲平臺(tái)在線狀態(tài)。由于用戶終端A依然處于游戲“大主宰”在線狀態(tài),因此,為子定時(shí)器A2發(fā)送延續(xù)指令,從而指示用戶終端A仍然處于游戲平臺(tái)中的“大主宰”游戲的在線狀態(tài)。但是,由于用戶終端A從si區(qū)服換到了 s2區(qū)服,因此,將子定時(shí)器A3銷毀,以表明用戶終端A已不在si區(qū)服, 并重新創(chuàng)建子定時(shí)器A3’,子定時(shí)器A3’用于記錄用戶終端A在上午10:10時(shí)處于游戲平臺(tái)的 “大主宰”游戲中的“s2”區(qū)服在線狀態(tài)。
[0048]又假設(shè)該用戶終端A在上午10: 20發(fā)送的打點(diǎn)請求中的應(yīng)用信息字段為loc = youxi | hazg | si,由此可以看出,用戶終端A處于游戲平臺(tái)中的“黑暗之光”游戲的si區(qū)服在線狀態(tài)。服務(wù)器節(jié)點(diǎn)接收到本次打點(diǎn)請求后,為用戶終端A對(duì)應(yīng)的定時(shí)器A發(fā)送延續(xù)指令,以延續(xù)定時(shí)器A的生命周期,從而指示用戶終端A仍然處于在線狀態(tài)。另外,由于用戶終端A依然處于游戲平臺(tái)在線狀態(tài),因此,為子定時(shí)器A1繼續(xù)發(fā)送延續(xù)指令,從而指示用戶終端A仍然處于游戲平臺(tái)在線狀態(tài)。由于用戶終端A已退出游戲“大主宰”,因此,將子定時(shí)器A2銷毀, 并重新創(chuàng)建子定時(shí)器A2’,子定時(shí)器A2’用于記錄用戶終端A處于游戲平臺(tái)中的“黑暗之光” 游戲的在線狀態(tài)。同理,由于用戶終端A已退出大主宰游戲的s2區(qū)服,因此,將子定時(shí)器A3’ 銷毀,并重新創(chuàng)建子定時(shí)器A3”,子定時(shí)器A3”用于記錄用戶終端A在上午10:20時(shí)處于游戲平臺(tái)的“黑暗之光”游戲中的“s2”區(qū)服在線狀態(tài)。
[0049]相應(yīng)地,在上述過程中,服務(wù)器節(jié)點(diǎn)生成的用戶狀態(tài)消息也進(jìn)一步包括多個(gè)維度的狀態(tài)消息。例如,當(dāng)接收到用戶終端A在上午10:00發(fā)送的打點(diǎn)請求后,服務(wù)器節(jié)點(diǎn)生成用于指示用戶終端A上線的用戶上線消息,同時(shí),在該用戶上線消息中進(jìn)一步包括多個(gè)維度的子消息,例如,第一子消息用于指示用戶終端A在游戲平臺(tái)上線,第二子消息用于指示用戶終端A在游戲平臺(tái)的大主宰游戲上線,第三子消息用于指示用戶終端A在游戲平臺(tái)的大主宰游戲的si區(qū)服上線。當(dāng)接收到用戶終端A在上午10:10發(fā)送的打點(diǎn)請求后,服務(wù)器節(jié)點(diǎn)進(jìn)一步生成用于指示用戶終端A在游戲平臺(tái)的大主宰游戲的si區(qū)服下線的子消息,以及用于指示用戶終端A在游戲平臺(tái)的大主宰游戲的s2區(qū)服上線的子消息。同理,當(dāng)接收到用戶終端A 在上午10:20發(fā)送的打點(diǎn)請求后,服務(wù)器節(jié)點(diǎn)進(jìn)一步生成用于指示用戶終端A在游戲平臺(tái)的大主宰游戲下線的子消息以及在游戲平臺(tái)的大主宰游戲的s2區(qū)服下線的子消息,以及用于指示用戶終端A在游戲平臺(tái)的黑暗之光游戲上線的子消息以及用于指示用戶終端A在游戲平臺(tái)的黑暗之光游戲的si區(qū)服上線的子消息。由此可見,SSDB數(shù)據(jù)庫中存儲(chǔ)了應(yīng)用的各個(gè)維度的上下線狀態(tài)信息,因此,查詢服務(wù)器可以查詢某一具體維度所對(duì)應(yīng)的用戶狀態(tài)信息, 例如,可以查詢某用戶終端在游戲平臺(tái)的在線時(shí)間、在大主宰游戲(或黑暗之光等其他游戲)的在線時(shí)間、以及在某一游戲的si區(qū)服或s2區(qū)服的在線時(shí)間等。
[0050]所謂多類型的查詢,是指本系統(tǒng)支持對(duì)多種應(yīng)用類型所對(duì)應(yīng)的用戶狀態(tài)進(jìn)行統(tǒng)計(jì)和查詢,為此,需要在打點(diǎn)請求中進(jìn)一步包含應(yīng)用類型字段。例如,本系統(tǒng)支持游戲應(yīng)用、熊貓直播應(yīng)用、聊天應(yīng)用等多種應(yīng)用類型,當(dāng)打點(diǎn)請求為“/Hit/Proc?uid = &loc = &prj = & sec = &other = ”時(shí),通過其中的“pr j”字段來表示具體應(yīng)用的類型。服務(wù)器節(jié)點(diǎn)可以通過 uhttp: //hulk.corp.qiho0.net: 8360/console/service/qconf,;地址中的 “qconf” 字段來設(shè)置應(yīng)用類型所對(duì)應(yīng)的配置信息,例如,當(dāng)“qconf”字段的值為1時(shí),表示需要向?qū)?yīng)類型的應(yīng)用推送用戶狀態(tài)消息;當(dāng)“qconf”字段的值為0時(shí),表示不需要向?qū)?yīng)類型的應(yīng)用推送用戶狀態(tài)消息。具體地,可以根據(jù)應(yīng)用提供商的具體需求來配置“qconf”字段的值,例如,假設(shè)游戲應(yīng)用提供商希望了解用戶的實(shí)時(shí)狀態(tài),則可以通過服務(wù)器節(jié)點(diǎn)向游戲應(yīng)用實(shí)時(shí)推送用戶上/下線消息。
[0051]另外,本系統(tǒng)中的查詢服務(wù)器除了支持多維度、多類型的查詢之外,還可以進(jìn)一步監(jiān)測系統(tǒng)中其他模塊的工作狀態(tài),例如,查詢服務(wù)器持續(xù)監(jiān)測各個(gè)應(yīng)用和/或應(yīng)用的各個(gè)維度的用戶在線人數(shù),當(dāng)監(jiān)測到某一應(yīng)用或某一應(yīng)用的某一維度的用戶在線人數(shù)的變化率大于預(yù)設(shè)閾值時(shí),則發(fā)出報(bào)警提示信息。例如,當(dāng)大主宰游戲的用戶在線人數(shù)在常規(guī)時(shí)段(如白天)內(nèi)突然發(fā)生較大的波動(dòng)時(shí),例如,從1萬人在線突然跌至1〇〇人在線,則可以推測該系統(tǒng)中的某一模塊,例如某一臺(tái)服務(wù)器節(jié)點(diǎn)出現(xiàn)了故障,因此,通過監(jiān)測在線人數(shù)的實(shí)時(shí)變化率還能夠起到報(bào)警提示的作用。[〇〇52]綜上所述,在本實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)中,能夠?qū)崟r(shí)統(tǒng)計(jì)大量用戶終端的在線狀態(tài),并且,能夠進(jìn)行多維度、多類型的狀態(tài)統(tǒng)計(jì)和查詢。另外,在本系統(tǒng)中,用戶狀態(tài)信息并非存儲(chǔ)在服務(wù)器節(jié)點(diǎn)的內(nèi)存中,而是存儲(chǔ)在后端的SSDB數(shù)據(jù)庫中,因此,系統(tǒng)容量不必受限于單臺(tái)服務(wù)器節(jié)點(diǎn)的內(nèi)容,且服務(wù)器節(jié)點(diǎn)的數(shù)量可以根據(jù)實(shí)際需要進(jìn)行靈活地增加或刪減,使系統(tǒng)設(shè)計(jì)更為靈活。另外,在本系統(tǒng)中,通過公共消息隊(duì)列模塊實(shí)現(xiàn)了前端的用戶終端和服務(wù)器節(jié)點(diǎn)與后端的SSDB數(shù)據(jù)庫之間的異步處理,用戶終端可以通過異步方式發(fā)送打點(diǎn)請求,后端SSDB數(shù)據(jù)庫通過異步方式進(jìn)行處理,從而使用戶終端及服務(wù)器節(jié)點(diǎn)能夠更加高效地運(yùn)行。
[0053]圖3示出了本發(fā)明另一實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)方法的流程圖。如圖3所示,該方法具體包括如下步驟:[〇〇54]步驟S310:通過服務(wù)器集群中的多個(gè)服務(wù)器節(jié)點(diǎn)處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求。
[0055]具體實(shí)現(xiàn)時(shí),可以由各個(gè)服務(wù)器節(jié)點(diǎn)直接接收并處理各個(gè)用戶終端的打點(diǎn)請求。也可以通過至少一個(gè)反向代理模塊接收各個(gè)用戶終端發(fā)送的打點(diǎn)請求,反向代理模塊獲取打點(diǎn)請求中包含的用戶標(biāo)識(shí),通過預(yù)設(shè)的哈希算法對(duì)用戶標(biāo)識(shí)進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果將各個(gè)打點(diǎn)請求分配給各個(gè)服務(wù)器節(jié)點(diǎn)處理??傊?,通過多個(gè)服務(wù)器節(jié)點(diǎn)能夠?qū)崿F(xiàn)并行處理、 冗余備份等多重效果。
[0056]步驟S320:根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息,將用戶狀態(tài)消息發(fā)送給SSDB數(shù)據(jù)庫。 [〇〇57]其中,用戶狀態(tài)消息包括用戶上線消息和用戶下線消息,且各個(gè)用戶終端在其在線期間,每隔預(yù)設(shè)時(shí)間間隔發(fā)送一次打點(diǎn)請求。具體地,該步驟可以通過如下方式實(shí)現(xiàn):每當(dāng)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ)有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為該用戶終端生成用戶上線消息;其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn)行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。除采用定時(shí)器的實(shí)現(xiàn)方式外,還可以靈活采用日志、字典等多種方式來維護(hù)用戶狀態(tài)信息。[〇〇58]步驟S330:通過SSDB數(shù)據(jù)庫對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成并存儲(chǔ)用戶狀態(tài)信息。
[0059]具體地,可以由SSDB數(shù)據(jù)庫直接接收各個(gè)服務(wù)器節(jié)點(diǎn)發(fā)送的用戶狀態(tài)消息,也可以由各個(gè)服務(wù)器節(jié)點(diǎn)將生成的用戶狀態(tài)消息存儲(chǔ)到預(yù)設(shè)的公共消息隊(duì)列模塊中,然后由預(yù)設(shè)的后端處理模塊將公共消息隊(duì)列模塊中的用戶狀態(tài)消息提供給所述SSDB數(shù)據(jù)庫。總之, 本領(lǐng)域技術(shù)人員可以靈活采用多種方式實(shí)現(xiàn)本步驟。
[0060]上述步驟的具體實(shí)現(xiàn)細(xì)節(jié)可參照上一實(shí)施例中相應(yīng)部分的描述,此處不再贅述。
[0061]圖4示出了本發(fā)明另一具體實(shí)施例提供的用戶狀態(tài)統(tǒng)計(jì)方法的流程圖。如圖4所示,該方法具體包括如下步驟:[〇〇62]步驟S410:反向代理模塊接收到用戶終端發(fā)送的打點(diǎn)請求后,將打點(diǎn)請求分配給一臺(tái)服務(wù)器節(jié)點(diǎn)中的框架接口模塊。
[0063]其中,用戶終端的數(shù)量為多個(gè),各個(gè)用戶終端可以通過異步通信的方式向反向代理模塊發(fā)送打點(diǎn)請求。其中,用戶終端發(fā)送的打點(diǎn)請求的形式可以是“online:80(rid)”。 [〇〇64]具體地,可以參照圖2所示的系統(tǒng)框圖來理解本實(shí)施例中的方法。反向代理模塊根據(jù)打點(diǎn)請求中包含的用戶標(biāo)識(shí)將各個(gè)打點(diǎn)請求分配給各個(gè)服務(wù)器節(jié)點(diǎn)。例如,假設(shè)本次打點(diǎn)請求分配給第一服務(wù)器節(jié)點(diǎn),則反向代理模塊將本次打點(diǎn)請求發(fā)送給第一服務(wù)器節(jié)點(diǎn)中的框架接口模塊(例如hero框架接口接口),該框架接口模塊通過預(yù)設(shè)的端口,例如“9010” 端口來接收反向代理模塊發(fā)來的打點(diǎn)請求,例如,反向代理模塊發(fā)來的打點(diǎn)請求的形式為 “9010(rid)”,表示該打點(diǎn)請求的目的地址為9010端口。另外,框架接口模塊還可以向反向代理模塊返回響應(yīng)消息或心跳包,以表明其所在的服務(wù)器節(jié)點(diǎn)處于正常工作狀態(tài)。[〇〇65]步驟S420:框架接口模塊將打點(diǎn)請求發(fā)送給該框架接口模塊所在的服務(wù)器節(jié)點(diǎn)。 [〇〇66]具體地,第一服務(wù)器節(jié)點(diǎn)上的框架接口模塊通過9010端口接收到來自反向代理模塊的打點(diǎn)請求“9010(rid)”后,將其發(fā)送給該框架接口模塊所在的第一服務(wù)器節(jié)點(diǎn)進(jìn)行處理,框架接口模塊發(fā)送的打點(diǎn)請求的形式可以是hit(rid)。其中,框架接口模塊的主要作用在于向反向代理模塊提供統(tǒng)一的通信接口,因此,各臺(tái)服務(wù)器節(jié)點(diǎn)通過框架接口模塊來接收打點(diǎn)請求能夠顯著節(jié)約開發(fā)人員的開發(fā)成本。
[0067]步驟S430:服務(wù)器節(jié)點(diǎn)對(duì)接收到的打點(diǎn)請求進(jìn)行處理,以生成用戶狀態(tài)消息,并將用戶狀態(tài)消息發(fā)送給公共消息隊(duì)列模塊。
[0068]具體地,服務(wù)器節(jié)點(diǎn)接收到打點(diǎn)請求后,可以通過字典、日志、定時(shí)器等多種方式來維護(hù)用戶狀態(tài)。例如,每當(dāng)服務(wù)器節(jié)點(diǎn)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ)有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,說明該用戶終端已經(jīng)處于在線狀態(tài),則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,說明該用戶終端剛剛上線,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為該用戶終端生成用戶上線消息;其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn)行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。由此可見,通過定時(shí)器能夠監(jiān)測到各個(gè)用戶終端的上線動(dòng)作和下線動(dòng)作,并在用戶終端上線時(shí)生成用戶上線消息,在用戶終端下線時(shí)生成用戶下線消息。用戶狀態(tài)消息除包含上述的用戶上線消息和用戶下線消息外,還可以進(jìn)一步包含用于指示用戶終端目前處于在線狀態(tài)的用戶在線消息等。[〇〇69]步驟S440:公共消息隊(duì)列模塊將存儲(chǔ)的用戶狀態(tài)消息提供給后端處理模塊。
[0070]其中,公共消息隊(duì)列模塊用于對(duì)用戶狀態(tài)消息進(jìn)行有序存儲(chǔ)。公共消息隊(duì)列是一種先進(jìn)先出的分布式消息隊(duì)列,能夠在消息傳輸過程中作為保存消息的容器,從而為程序或組件提供異步的通信機(jī)制,使發(fā)送方和接收方不必同時(shí)在線,也不必了解對(duì)方,就可以相互傳輸消息。后端處理模塊與公共消息隊(duì)列模塊之間可以通過訂閱模式或點(diǎn)對(duì)點(diǎn)模式等多種方式進(jìn)行通信。具體地,可以由后端處理模塊訂閱公共消息隊(duì)列中的內(nèi)容,相應(yīng)地,每當(dāng)公共消息隊(duì)列進(jìn)行更新后,后端處理模塊自動(dòng)獲取到更新消息,并根據(jù)更新消息來讀取公共消息隊(duì)列中的內(nèi)容。
[0071]步驟S450:后端處理模塊根據(jù)讀取到的用戶狀態(tài)消息更新SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息。[〇〇72]具體地,當(dāng)后端處理模塊讀取到的用戶狀態(tài)消息為用戶上線消息時(shí),則在SSDB數(shù)據(jù)庫中增加相應(yīng)用戶終端的上線狀態(tài)信息;當(dāng)后端處理模塊讀取到的用戶狀態(tài)消息為用戶下線消息時(shí),則在SSDB數(shù)據(jù)庫中刪除相應(yīng)用戶終端的上線狀態(tài)信息。[〇〇73]步驟S460:查詢服務(wù)器根據(jù)接收到的查詢請求,查詢SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息,并返回與該查詢請求相對(duì)應(yīng)的查詢結(jié)果。
[0074]其中,查詢服務(wù)器不僅能夠查詢各個(gè)用戶終端的當(dāng)前狀態(tài)、在線時(shí)長等信息,還能夠進(jìn)行多維度、多類型的查詢。具體的查詢過程可以參照上一實(shí)施例中相應(yīng)部分的描述,此處不再贅述。
[0075]在本發(fā)明提供的用戶狀態(tài)統(tǒng)計(jì)系統(tǒng)及方法中,通過包含多個(gè)服務(wù)器節(jié)點(diǎn)的服務(wù)器集群接收來自各個(gè)用戶終端的打點(diǎn)請求,并根據(jù)打點(diǎn)請求生成用戶狀態(tài)消息,將該用戶狀態(tài)消息提供給SSDB數(shù)據(jù)庫,以供SSDB數(shù)據(jù)庫根據(jù)用戶狀態(tài)消息維護(hù)用戶狀態(tài)信息。由此可見,在本發(fā)明中,服務(wù)器節(jié)點(diǎn)通過集群形式實(shí)現(xiàn),且數(shù)量為多個(gè),因而能夠并行處理各個(gè)用戶終端發(fā)來的打點(diǎn)請求,大幅提高了服務(wù)器節(jié)點(diǎn)的處理速度,縮短了響應(yīng)時(shí)間,能夠同時(shí)服務(wù)于更多的用戶終端。另外,由于用戶狀態(tài)信息存儲(chǔ)在SSDB數(shù)據(jù)庫內(nèi),而非存儲(chǔ)在服務(wù)器節(jié)點(diǎn)的內(nèi)存中,因此,上述服務(wù)器集群中所包含的服務(wù)器節(jié)點(diǎn)的數(shù)量可以靈活調(diào)整:當(dāng)用戶數(shù)量多時(shí),可以通過掛接一個(gè)服務(wù)器節(jié)點(diǎn)來服務(wù)于更多的用戶;當(dāng)用戶數(shù)量少時(shí),可以摘除一個(gè)服務(wù)器節(jié)點(diǎn)以節(jié)約成本。由此可見,本申請?zhí)峁┑姆绞骄哂休^強(qiáng)的可擴(kuò)展性,系統(tǒng)設(shè)計(jì)較為靈活。除此之外,當(dāng)某一個(gè)服務(wù)器節(jié)點(diǎn)故障時(shí),其他服務(wù)器節(jié)點(diǎn)依然能夠確保整個(gè)系統(tǒng)的正常運(yùn)行,因此,本申請?zhí)峁┑姆绞骄哂休^強(qiáng)的災(zāi)備功能。
[0076]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。 各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。[〇〇77]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。[〇〇78]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此, 遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。[〇〇79]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
[0080]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
[0081]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0082]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中, 不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
[0083]本發(fā)明還公開了 B10、一種用戶狀態(tài)統(tǒng)計(jì)方法,包括:
[0084]通過服務(wù)器集群中的多個(gè)服務(wù)器節(jié)點(diǎn)處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求;[〇〇85]根據(jù)所述打點(diǎn)請求生成用戶狀態(tài)消息,將所述用戶狀態(tài)消息發(fā)送給SSDB數(shù)據(jù)庫;
[0086]通過SSDB數(shù)據(jù)庫對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成并存儲(chǔ)用戶狀態(tài)信息。
[0087]B11、根據(jù)B10所述的方法,其中,所述用戶狀態(tài)消息包括用戶上線消息和用戶下線消息,且各個(gè)用戶終端在其在線期間,每隔預(yù)設(shè)時(shí)間間隔發(fā)送一次打點(diǎn)請求,
[0088]則所述根據(jù)所述打點(diǎn)請求生成用戶狀態(tài)消息的步驟具體包括:每當(dāng)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ)有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為該用戶終端生成用戶上線消息;其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn)行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。
[0089]B12、根據(jù)B11所述的方法,其中,所述打點(diǎn)請求中包括應(yīng)用信息字段,且所述應(yīng)用信息字段進(jìn)一步包括多個(gè)分別指示不同維度的應(yīng)用信息的子字段,則對(duì)應(yīng)于一個(gè)用戶終端的定時(shí)器進(jìn)一步包括多個(gè)子定時(shí)器,各個(gè)子定時(shí)器分別對(duì)應(yīng)于不同維度的狀態(tài)信息;并且, 所述用戶上線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶上線消息,且所述用戶下線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶下線消息。
[0090]B13、根據(jù)B10-12任一所述的方法,其中,所述將所述用戶狀態(tài)消息發(fā)送給SSDB數(shù)據(jù)庫的步驟具體包括:
[0091]各個(gè)服務(wù)器節(jié)點(diǎn)將生成的用戶狀態(tài)消息存儲(chǔ)到預(yù)設(shè)的公共消息隊(duì)列模塊中,由預(yù)設(shè)的后端處理模塊將所述公共消息隊(duì)列模塊中的用戶狀態(tài)消息提供給所述SSDB數(shù)據(jù)庫。 [〇〇92]B14、根據(jù)B10-13任一所述的方法,其中,所述通過服務(wù)器集群中的多個(gè)服務(wù)器節(jié)點(diǎn)處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求的步驟具體包括:
[0093]通過至少一個(gè)反向代理模塊接收各個(gè)用戶終端發(fā)送的打點(diǎn)請求,獲取所述打點(diǎn)請求中包含的用戶標(biāo)識(shí),通過預(yù)設(shè)的哈希算法對(duì)所述用戶標(biāo)識(shí)進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果將各個(gè)打點(diǎn)請求分配給各個(gè)服務(wù)器節(jié)點(diǎn)處理。[〇〇94]B15、根據(jù)B14所述的方法,其中,所述方法進(jìn)一步包括步驟:通過反向代理模塊檢測各個(gè)服務(wù)器節(jié)點(diǎn)的工作狀態(tài),當(dāng)檢測到出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)時(shí),停用所述出現(xiàn)故障的服務(wù)器節(jié)點(diǎn);并在檢測到所述故障恢復(fù)時(shí),重新啟用所述出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)。[〇〇95]B16、根據(jù)B10-15任一所述的方法,其中,所述方法包括:根據(jù)接收到的查詢請求,查詢所述SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息,并返回與該查詢請求相對(duì)應(yīng)的查詢結(jié)果;
[0096]并且,所述方法進(jìn)一步包括:監(jiān)測各個(gè)應(yīng)用和/或應(yīng)用的各個(gè)維度的用戶在線人數(shù),當(dāng)監(jiān)測到的用戶在線人數(shù)的變化率大于預(yù)設(shè)閾值時(shí),發(fā)出報(bào)警提示信息。[〇〇97]B17、根據(jù)B10-16任一所述的方法,其中,所述打點(diǎn)請求中包括應(yīng)用類型字段,則所述方法進(jìn)一步包括步驟:根據(jù)所述應(yīng)用類型字段將用戶狀態(tài)消息推送給對(duì)應(yīng)類型的應(yīng)用。 [0〇98]B18、根據(jù)B10-17任一所述的方法,其中,所述打點(diǎn)請求為異步請求消息。
【主權(quán)項(xiàng)】
1.一種用戶狀態(tài)統(tǒng)計(jì)系統(tǒng),包括:服務(wù)器集群,以及與所述服務(wù)器集群相連的SSDB數(shù)據(jù) 庫,其中,所述服務(wù)器集群包括多個(gè)服務(wù)器節(jié)點(diǎn),各個(gè)服務(wù)器節(jié)點(diǎn)分別用于處理各個(gè)用戶終端發(fā) 送的打點(diǎn)請求,并根據(jù)所述打點(diǎn)請求生成用戶狀態(tài)消息,將所述用戶狀態(tài)消息提供給所述 SSDB數(shù)據(jù)庫;所述SSDB數(shù)據(jù)庫用于對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果 生成并存儲(chǔ)用戶狀態(tài)信息。2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述用戶狀態(tài)消息包括用戶上線消息和用戶下線 消息,且各個(gè)用戶終端在其在線期間,每隔預(yù)設(shè)時(shí)間間隔發(fā)送一次打點(diǎn)請求,則各個(gè)服務(wù)器節(jié)點(diǎn)具體用于:每當(dāng)接收到用戶終端發(fā)送的打點(diǎn)請求后,判斷是否存儲(chǔ) 有對(duì)應(yīng)于該用戶終端的定時(shí)器,如果判斷結(jié)果為是,則根據(jù)本次打點(diǎn)請求向?qū)?yīng)于該用戶 終端的定時(shí)器發(fā)送延續(xù)指令;如果判斷結(jié)果為否,則創(chuàng)建對(duì)應(yīng)于該用戶終端的定時(shí)器,并為 該用戶終端生成用戶上線消息;其中,各個(gè)服務(wù)器節(jié)點(diǎn)持續(xù)地對(duì)本地存儲(chǔ)的各個(gè)定時(shí)器進(jìn) 行監(jiān)測,每當(dāng)監(jiān)測到在預(yù)設(shè)的超時(shí)時(shí)間閾值內(nèi)未接收到延續(xù)指令的定時(shí)器時(shí),將該定時(shí)器 銷毀,并為該定時(shí)器所對(duì)應(yīng)的用戶終端生成用戶下線消息。3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中,所述打點(diǎn)請求中包括應(yīng)用信息字段,且所述應(yīng)用 信息字段進(jìn)一步包括多個(gè)分別指示不同維度的應(yīng)用信息的子字段,則對(duì)應(yīng)于一個(gè)用戶終端 的定時(shí)器進(jìn)一步包括多個(gè)子定時(shí)器,各個(gè)子定時(shí)器分別對(duì)應(yīng)于不同維度的狀態(tài)信息;并且, 所述用戶上線消息進(jìn)一步包括各個(gè)維度所對(duì)應(yīng)的用戶上線消息,且所述用戶下線消息進(jìn)一 步包括各個(gè)維度所對(duì)應(yīng)的用戶下線消息。4.根據(jù)權(quán)利要求1-3任一所述的系統(tǒng),其中,所述系統(tǒng)進(jìn)一步包括:公共消息隊(duì)列模塊 以及后端處理模塊,其中,各個(gè)服務(wù)器節(jié)點(diǎn)用于將生成的用戶狀態(tài)消息存儲(chǔ)到所述公共消 息隊(duì)列模塊中,所述后端處理模塊用于讀取所述公共消息隊(duì)列模塊中的用戶狀態(tài)消息,并 根據(jù)讀取到的用戶狀態(tài)消息修改所述SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài)信息。5.根據(jù)權(quán)利要求1-4任一所述的系統(tǒng),其中,所述服務(wù)器集群中進(jìn)一步包括:至少一個(gè) 反向代理模塊,用于接收各個(gè)用戶終端發(fā)送的打點(diǎn)請求,獲取所述打點(diǎn)請求中包含的用戶 標(biāo)識(shí),通過預(yù)設(shè)的哈希算法對(duì)所述用戶標(biāo)識(shí)進(jìn)行計(jì)算,根據(jù)計(jì)算結(jié)果將各個(gè)打點(diǎn)請求分配 給各個(gè)服務(wù)器節(jié)點(diǎn)處理。6.根據(jù)權(quán)利要求5所述的系統(tǒng),其中,所述反向代理模塊進(jìn)一步用于:檢測各個(gè)服務(wù)器 節(jié)點(diǎn)的工作狀態(tài),當(dāng)檢測到出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)時(shí),停用所述出現(xiàn)故障的服務(wù)器節(jié)點(diǎn);并 在檢測到所述故障恢復(fù)時(shí),重新啟用所述出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)。7.根據(jù)權(quán)利要求1-6任一所述的系統(tǒng),其中,所述系統(tǒng)進(jìn)一步包括:與所述SSDB數(shù)據(jù)庫 相連的查詢服務(wù)器,用于根據(jù)接收到的查詢請求,查詢所述SSDB數(shù)據(jù)庫中存儲(chǔ)的用戶狀態(tài) 信息,并返回與該查詢請求相對(duì)應(yīng)的查詢結(jié)果;并且,所述查詢服務(wù)器進(jìn)一步用于:監(jiān)測各個(gè)應(yīng)用和/或應(yīng)用的各個(gè)維度的用戶在線人 數(shù),當(dāng)監(jiān)測到的用戶在線人數(shù)的變化率大于預(yù)設(shè)閾值時(shí),發(fā)出報(bào)警提示信息。8.根據(jù)權(quán)利要求1-7任一所述的系統(tǒng),其中,所述打點(diǎn)請求中包括應(yīng)用類型字段,則所 述服務(wù)器節(jié)點(diǎn)進(jìn)一步用于:根據(jù)所述應(yīng)用類型字段將用戶狀態(tài)消息推送給對(duì)應(yīng)類型的應(yīng) 用。9.根據(jù)權(quán)利要求1-8任一所述的系統(tǒng),其中,所述打點(diǎn)請求為異步請求消息。10.—種用戶狀態(tài)統(tǒng)計(jì)方法,包括:通過服務(wù)器集群中的多個(gè)服務(wù)器節(jié)點(diǎn)處理各個(gè)用戶終端發(fā)送的打點(diǎn)請求;根據(jù)所述打點(diǎn)請求生成用戶狀態(tài)消息,將所述用戶狀態(tài)消息發(fā)送給SSDB數(shù)據(jù)庫;通過SSDB數(shù)據(jù)庫對(duì)各個(gè)服務(wù)器節(jié)點(diǎn)提供的用戶狀態(tài)消息進(jìn)行統(tǒng)計(jì),根據(jù)統(tǒng)計(jì)結(jié)果生成 并存儲(chǔ)用戶狀態(tài)信息。
【文檔編號(hào)】H04L12/24GK106027289SQ201610304635
【公開日】2016年10月12日
【申請日】2016年5月9日
【發(fā)明人】段兵營
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
调兵山市| 新乡市| 隆林| 大理市| 北安市| 囊谦县| 册亨县| 常山县| 滨州市| 聂拉木县| 慈利县| 绥江县| 句容市| 仲巴县| 滨州市| 河北区| 北京市| 远安县| 景宁| 梁山县| 承德县| 玉溪市| 屏山县| 峨山| 册亨县| 普兰店市| 金寨县| 增城市| 孝义市| 陆丰市| 灵山县| 旌德县| 峨山| 茂名市| 古蔺县| 郎溪县| 奉新县| 隆昌县| 鄂州市| 屯门区| 武夷山市|