本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種通知用戶上下線的方法和一種通知用戶上下線的裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,各類網(wǎng)站不斷涌現(xiàn),為了便于網(wǎng)站的維護(hù),通常需要對(duì)網(wǎng)站用戶的在線情況進(jìn)行監(jiān)控,并觸發(fā)用戶上線、下線的通知。但同時(shí)在線用戶數(shù)達(dá)到萬(wàn)級(jí)時(shí),對(duì)網(wǎng)站用戶在線情況的監(jiān)控將變得是一件困難的事情。例如,在線用戶向服務(wù)器發(fā)送心跳信息,當(dāng)?shù)谝淮伟l(fā)送心跳信息時(shí),表示用戶上線,當(dāng)超過3次心跳間隔未收到該用戶的心跳信息時(shí)即判定用戶下線。如果網(wǎng)站平臺(tái)當(dāng)前有120萬(wàn)用戶在線,每10秒發(fā)送一次心跳,那么服務(wù)器要求達(dá)到12萬(wàn)QPS(QueryPer Second,每秒查詢率),如果是普通的Web服務(wù)器(1000QPS)將需要120組服務(wù)才可以承接。
現(xiàn)有技術(shù)中,將在線用戶的心跳信息以session(會(huì)話)的方式記錄到數(shù)據(jù)庫(kù)中,當(dāng)用戶上線時(shí)創(chuàng)建該用戶對(duì)應(yīng)的session,該用戶再次發(fā)送心跳信息時(shí)延長(zhǎng)對(duì)應(yīng)session的生命周期,當(dāng)無(wú)該用戶的心跳信息并且經(jīng)過一定時(shí)間后,確定該用戶已下線,并自動(dòng)刪除該用戶對(duì)應(yīng)的session。但是,上述方法中需要逐個(gè)查詢數(shù)據(jù)庫(kù)中的各用戶對(duì)應(yīng)session的生命周期,查詢量非常大,導(dǎo)致對(duì)用戶的上下線通知不及時(shí)。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的通知用戶上下線的方法和相應(yīng)的通知用戶上下線的裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種通知用戶上下線的方法,包括:
接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間 設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;
依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序;
對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定;
針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
可選地,所述對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定的步驟,包括:
對(duì)于排序后的所有用戶標(biāo)識(shí),從最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始,按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值是否大于設(shè)定閾值,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于所述設(shè)定閾值時(shí)停止判定。
可選地,在所述接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的步驟之前,還包括:
將用戶標(biāo)識(shí)劃分為多個(gè)組,并為每組用戶標(biāo)識(shí)創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程。
可選地,所述接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的步驟,包括:接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),將所述打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程,由該獨(dú)立處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
所述依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序的步驟,包括:針對(duì)每組用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)對(duì)應(yīng)的 最新活躍時(shí)間對(duì)該組用戶標(biāo)識(shí)進(jìn)行排序;
所述對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件的步驟,包括:針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件。
可選地,所述依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的步驟,包括:
確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);
若是,則將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為所述打點(diǎn)時(shí)間;
若否,則保存所述打點(diǎn)用戶標(biāo)識(shí),并將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為所述打點(diǎn)時(shí)間。
可選地,所述若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知的步驟,包括:
確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);
若是,則判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,并發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
依據(jù)本發(fā)明的另一方面,提供了一種通知用戶上下線的裝置,包括:
設(shè)置模塊,適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
上線通知模塊,適于若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;
排序模塊,適于依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序;
判定模塊,適于對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定;
下線通知模塊,適于針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
可選地,所述判定模塊,具體適于對(duì)于排序后的所有用戶標(biāo)識(shí),從最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始,按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值是否大于設(shè)定閾值,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于所述設(shè)定閾值時(shí)停止判定。
可選地,所述裝置還包括:分組模塊,適于將用戶標(biāo)識(shí)劃分為多個(gè)組,并為每組用戶標(biāo)識(shí)創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程。
可選地,所述設(shè)置模塊,具體適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),將所述打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程,由該獨(dú)立處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
所述排序模塊,具體適于針對(duì)每組用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)該組用戶標(biāo)識(shí)進(jìn)行排序;
所述判定模塊,具體適于針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件。
可選地,所述設(shè)置模塊,具體適于確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為所述打點(diǎn)時(shí)間;若否,則保存所述打點(diǎn)用戶標(biāo)識(shí),并將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為所述打點(diǎn)時(shí)間。
可選地,所述上線通知模塊,具體適于確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,并發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
根據(jù)本發(fā)明的通知用戶上下線的方法和裝置,在接收到打點(diǎn)用戶的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)打點(diǎn)數(shù)據(jù)中的打點(diǎn)時(shí)間設(shè)置打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間,判定該打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶是否為首次上線,若是則發(fā)送該打點(diǎn)用戶 標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序,對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足下線條件時(shí)停止判定,最后針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。由此可知,本發(fā)明無(wú)需對(duì)全部用戶標(biāo)識(shí)進(jìn)行逐個(gè)查詢,僅需對(duì)排序后的部分用戶標(biāo)識(shí)進(jìn)行判定即可,因此查詢量較小,能夠更加及時(shí)地對(duì)用戶的上下線情況進(jìn)行通知。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明實(shí)施例一的一種通知用戶上下線的方法的步驟流程圖;
圖2示出了根據(jù)本發(fā)明實(shí)施例二的一種通知用戶上下線的方法的步驟流程圖;
圖3示出了根據(jù)本發(fā)明實(shí)施例三的一種通知用戶上下線的方法的步驟流程圖;
圖4示出了根據(jù)本發(fā)明實(shí)施例四的一種通知用戶上下線的裝置的結(jié)構(gòu)框圖;
圖5示出了根據(jù)本發(fā)明實(shí)施例五的一種通知用戶上下線的裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
實(shí)施例一
參照?qǐng)D1,示出了根據(jù)本發(fā)明實(shí)施例一的一種通知用戶上下線的方法的步驟流程圖。本實(shí)施例的方法可以包括如下步驟:
步驟101,接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間。
目前大部分的業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)都依賴瀏覽器端的打點(diǎn)來(lái)完成,即瀏覽器通過發(fā)起打點(diǎn)請(qǐng)求將打點(diǎn)數(shù)據(jù)發(fā)送給服務(wù)器,由服務(wù)器記錄打點(diǎn)數(shù)據(jù)。所謂打點(diǎn)數(shù)據(jù)就是功能點(diǎn)的業(yè)務(wù)數(shù)據(jù),例如當(dāng)用戶點(diǎn)擊網(wǎng)頁(yè)上的某鏈接,對(duì)該鏈接的點(diǎn)擊信息就是打點(diǎn)數(shù)據(jù)。
本實(shí)施例中,打點(diǎn)數(shù)據(jù)可以為用戶發(fā)送的心跳信息,其中對(duì)于每個(gè)在線用戶每隔預(yù)設(shè)時(shí)間(例如10s等)發(fā)送一次該用戶的心跳信息。打點(diǎn)數(shù)據(jù)中可以包括發(fā)送該打點(diǎn)數(shù)據(jù)的用戶的打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間(也即打點(diǎn)數(shù)據(jù)的發(fā)送時(shí)間),依據(jù)其中的打點(diǎn)時(shí)間即可設(shè)置打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間。
步驟102,若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
在接收到打點(diǎn)數(shù)據(jù)時(shí),還可以對(duì)打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶是否為首次上線進(jìn)行判定,以確定是否需要發(fā)送打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知,若為首次上線,則將發(fā)送打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
需要說明的是,上述步驟101中依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的過程,與步驟102中若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng) 用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知的過程沒有嚴(yán)格的先后順序之分,兩個(gè)過程都是在接收到打點(diǎn)數(shù)據(jù)時(shí)執(zhí)行,兩個(gè)過程可以先后執(zhí)行,也可以同時(shí)執(zhí)行。
步驟103,依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序。
已保存的每個(gè)用戶標(biāo)識(shí)均對(duì)應(yīng)一個(gè)最新活躍時(shí)間,依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序。其中,排序可以為升序排序,也可以為降序排序,本實(shí)施例對(duì)此并不加以限制。
需要說明的是,上述步驟101、步驟102和步驟103之間沒有嚴(yán)格的先后順序之分,都是在滿足條件時(shí)執(zhí)行。例如,步驟101和步驟102是在接收到打點(diǎn)數(shù)據(jù)時(shí)執(zhí)行,步驟103可以是在步驟101之后執(zhí)行,也可以是在步驟102之后執(zhí)行,也可以是按照設(shè)定條件執(zhí)行,如實(shí)時(shí)執(zhí)行,或者按照設(shè)定時(shí)間間隔執(zhí)行(如每隔30s執(zhí)行一次步驟102等),等等,本發(fā)明實(shí)施例對(duì)此并不加以限制。
步驟104,對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定。
上述過程中僅需對(duì)滿足設(shè)定的下線條件的用戶標(biāo)識(shí)進(jìn)行判定即可,對(duì)于剩余不滿足下線條件的用戶標(biāo)識(shí)無(wú)需再繼續(xù)進(jìn)行判定,因此無(wú)需對(duì)所有用戶標(biāo)識(shí)進(jìn)行查詢,而只是對(duì)其中的部分用戶標(biāo)識(shí)進(jìn)行判定即可,查詢量大大降低。
步驟105,針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
依據(jù)步驟104的判定結(jié)果,針對(duì)其中對(duì)應(yīng)的最新活躍時(shí)間滿足下線條件的用戶標(biāo)識(shí),可以確定該用戶標(biāo)識(shí)對(duì)應(yīng)的用戶已下線,因此可以針對(duì)已下線的用戶發(fā)送其下線通知。
本發(fā)明實(shí)施例無(wú)需對(duì)全部用戶標(biāo)識(shí)進(jìn)行逐個(gè)查詢,僅需對(duì)排序后的部分用戶標(biāo)識(shí)進(jìn)行判定即可,因此查詢量較小,能夠更加及時(shí)地對(duì)用戶的上下線情況進(jìn)行通知。
實(shí)施例二
參照?qǐng)D2,示出了根據(jù)本發(fā)明實(shí)施例二的一種通知用戶上下線的方法的步驟流程圖。本實(shí)施例的方法可以包括如下步驟:
步驟201,接收線程接收包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù),并在接收到打點(diǎn)數(shù)據(jù)時(shí),將打點(diǎn)數(shù)據(jù)發(fā)送給處理線程。
本實(shí)施例中,設(shè)置接收線程用于接收用戶發(fā)送的打點(diǎn)數(shù)據(jù),并設(shè)置處理線程用于執(zhí)行后續(xù)處理,接收線程和處理線程之間能夠相互通信,接收線程在接收到打點(diǎn)數(shù)據(jù)時(shí),將打點(diǎn)數(shù)據(jù)發(fā)送給處理線程。
優(yōu)選地,該步驟201中接收線程在接收到打點(diǎn)數(shù)據(jù)時(shí),將打點(diǎn)數(shù)據(jù)發(fā)送給處理線程的過程可以包括:接收線程在接收到打點(diǎn)數(shù)據(jù)時(shí),根據(jù)UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)將打點(diǎn)數(shù)據(jù)發(fā)送給處理線程。根據(jù)UDP進(jìn)行數(shù)據(jù)的傳輸,能夠有效提高內(nèi)部的數(shù)據(jù)傳輸效率。
優(yōu)選地,該步驟201中接收線程在接收到打點(diǎn)數(shù)據(jù)時(shí),將打點(diǎn)數(shù)據(jù)發(fā)送給處理線程的過程可以由Nginx服務(wù)器完成。Nginx是一款輕量級(jí)的Web服務(wù)器、反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,Nginx服務(wù)器的性能高,可以提高處理效率。
步驟202,處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間。
打點(diǎn)數(shù)據(jù)中包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間,處理線程在接收到打點(diǎn)數(shù)據(jù)后,依據(jù)其中的打點(diǎn)時(shí)間設(shè)置打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間。
優(yōu)選地,該步驟202可以包括以下子步驟:
子步驟a1,確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí)。若是,則執(zhí)行子步驟a2,若否,則執(zhí)行子步驟a3。
子步驟a2,將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為所述打點(diǎn)時(shí)間。
子步驟a3,保存所述打點(diǎn)用戶標(biāo)識(shí),并將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為所述打點(diǎn)時(shí)間。
服務(wù)器中保存有多個(gè)用戶標(biāo)識(shí),當(dāng)某個(gè)用戶上線時(shí)將在服務(wù)器中保存該用戶的用戶標(biāo)識(shí),也即服務(wù)器中保存的為之前已上線用戶的用戶標(biāo)識(shí)。各用戶標(biāo)識(shí)各自對(duì)應(yīng)有最新活躍時(shí)間,最新活躍時(shí)間表明對(duì)應(yīng)用戶標(biāo)識(shí)的用戶在該最新活躍時(shí)間時(shí)處于活躍狀態(tài),也即在該最新活躍時(shí)間時(shí)對(duì)應(yīng)用戶標(biāo)識(shí)的用戶在線。優(yōu)選地,本實(shí)施例中可以利用哈希表建立用戶標(biāo)識(shí)和最新活躍時(shí)間之間的對(duì)應(yīng)關(guān)系,這樣能夠?qū)崿F(xiàn)更加快速的查詢。
處理線程在接收到打點(diǎn)數(shù)據(jù)后,確定是否已保存其中的打點(diǎn)用戶標(biāo)識(shí),以確定該打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶是否為首次發(fā)送打點(diǎn)數(shù)據(jù)(也即是否之前未上線),如果已保存該打點(diǎn)用戶標(biāo)識(shí),則可以直接將該打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為打點(diǎn)數(shù)據(jù)中的打點(diǎn)時(shí)間;如果未保存該打點(diǎn)用戶標(biāo)識(shí),則先保存該打點(diǎn)用戶標(biāo)識(shí)(也即在服務(wù)器中增加該打點(diǎn)用戶標(biāo)識(shí),表明該用戶上線),并將該打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為打點(diǎn)數(shù)據(jù)中的打點(diǎn)時(shí)間。
步驟203,處理線程若判定打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
處理線程對(duì)打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶是否為首次上線進(jìn)行判定,若判定為首次上線,則處理線程可以向用戶上下線事件接口發(fā)送該打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知,通過發(fā)送用戶的上線通知,可以及時(shí)了解用戶的上線情況。
優(yōu)選地,該步驟203可以包括:確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,并發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知,否則不進(jìn)行處理,也即無(wú)需發(fā)送打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
需要說明的是,本實(shí)施例中并不限定步驟202與步驟203執(zhí)行的先后順序,可以先執(zhí)行步驟202再執(zhí)行步驟203,也可以先執(zhí)行步驟203再執(zhí)行步驟202,還可以同時(shí)并列執(zhí)行步驟202和步驟203。
步驟204,處理線程依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序。
其中,排序可以為按照最新活躍時(shí)間進(jìn)行升序排序,也可以為按照最新 活躍時(shí)間進(jìn)行降序排序,本實(shí)施例對(duì)此并不加以限制。
步驟205,處理線程對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定。
優(yōu)選地,本實(shí)施例中可以設(shè)定下線條件為最新活躍時(shí)間與當(dāng)前時(shí)間的差值大于設(shè)定閾值。因此,該步驟205可以包括:對(duì)于排序后的所有用戶標(biāo)識(shí),從最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始,按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值是否大于設(shè)定閾值,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于所述設(shè)定閾值時(shí)停止判定。
對(duì)應(yīng)的最新活躍時(shí)間越早,則其與當(dāng)前時(shí)間的差值越大,因此本實(shí)施例中從對(duì)應(yīng)的最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始判斷,如果該用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值大于設(shè)定閾值,則確定滿足下線條件,也即該用戶標(biāo)識(shí)的用戶可能已下線,此時(shí)將繼續(xù)針對(duì)下一個(gè)用戶標(biāo)識(shí)進(jìn)行判斷;如果該用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于設(shè)定閾值,則確定不滿足下線條件,也即該用戶標(biāo)識(shí)的用戶還未下線,此時(shí)由于該用戶標(biāo)識(shí)下面的用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間均晚于該用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間,因此可直接確定下面的用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間均不滿足下線條件,也即下面的用戶標(biāo)識(shí)的用戶均還未下線,因此無(wú)需再繼續(xù)進(jìn)行判斷。
對(duì)于上述設(shè)定閾值的具體時(shí)間數(shù)值,本領(lǐng)域技術(shù)人員根據(jù)實(shí)際經(jīng)驗(yàn)設(shè)置任意適用的數(shù)值均可,例如可以設(shè)置為30s、35s等,本實(shí)施例中對(duì)此并不加以限制。
步驟206,處理線程針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
經(jīng)過上述步驟205的判定之后,處理線程依據(jù)判定結(jié)果可以獲取對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),并確定這些用戶標(biāo)識(shí)對(duì)應(yīng)的用戶已下線,因此處理線程針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶 標(biāo)識(shí),可以向用戶上下線事件接口發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。通過發(fā)送用戶的下線通知,可以及時(shí)了解用戶的下線情況。
優(yōu)選地,本實(shí)施例中在上述步驟205之后,還可以包括:處理線程依據(jù)判定結(jié)果統(tǒng)計(jì)在線用戶的數(shù)量。經(jīng)過上述步驟205的判定之后,還可以依據(jù)判定結(jié)果統(tǒng)計(jì)在線用戶的數(shù)量,該統(tǒng)計(jì)過程具體可以包括:處理線程確定對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件的用戶標(biāo)識(shí)的數(shù)量,將該數(shù)量作為在線用戶的數(shù)量。通過對(duì)在線用戶的數(shù)量進(jìn)行統(tǒng)計(jì),可以及時(shí)了解網(wǎng)站當(dāng)前的負(fù)擔(dān)情況,便于網(wǎng)站的維護(hù)、升級(jí)。
本發(fā)明實(shí)施例無(wú)需對(duì)全部用戶標(biāo)識(shí)進(jìn)行逐個(gè)查詢,僅需對(duì)排序后的部分用戶標(biāo)識(shí)進(jìn)行判定即可,因此查詢量較小,能夠更加及時(shí)地對(duì)用戶的上下線情況進(jìn)行通知。
實(shí)施例三
參照?qǐng)D3,示出了根據(jù)本發(fā)明實(shí)施例三的一種通知用戶上下線的方法的步驟流程圖。本實(shí)施例的方法可以包括如下步驟:
步驟301,將用戶標(biāo)識(shí)劃分為多個(gè)組,并為每組用戶標(biāo)識(shí)創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程。
本實(shí)施例中,可以按照設(shè)定方式將用戶標(biāo)識(shí)劃分為多個(gè)組,對(duì)于具體的劃分方式,本領(lǐng)域技術(shù)人員根據(jù)實(shí)際經(jīng)驗(yàn)選用任意適用的方式均可,本發(fā)明實(shí)施例對(duì)此并不加以限制。例如,可以將用戶標(biāo)識(shí)1~10000劃分為一個(gè)組,將用戶標(biāo)識(shí)10001~20000劃分為一個(gè)組,以此類推,等等。
針對(duì)每組用戶標(biāo)識(shí),可以創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程,該獨(dú)立處理線程主要用于處理與其對(duì)應(yīng)的一組用戶標(biāo)識(shí)的相關(guān)事件。
步驟302,接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),將所述打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程。
在接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),首先確定打點(diǎn)用戶標(biāo)識(shí)所屬的分組,確定后將打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程,也即為打點(diǎn)用戶標(biāo)識(shí)所屬的分組中的用戶標(biāo)識(shí)創(chuàng)建的對(duì)應(yīng)獨(dú)立處理線 程。
步驟303,由所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間。
打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程在接收到打點(diǎn)數(shù)據(jù)后,即可依據(jù)打點(diǎn)時(shí)間設(shè)置打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間,對(duì)于依據(jù)打點(diǎn)時(shí)間設(shè)置打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的具體過程,參照上述實(shí)施例二中步驟202的相關(guān)描述即可,本實(shí)施例中在此不再詳細(xì)論述。
步驟304,由所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程在判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線時(shí),發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
對(duì)于該步驟304的具體過程,參照上述實(shí)施例二中步驟203的相關(guān)描述即可,本實(shí)施例中在此不再詳細(xì)論述。
步驟305,針對(duì)每組用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)該組用戶標(biāo)識(shí)進(jìn)行排序。
對(duì)于各獨(dú)立處理線程的排序過程,參照上述實(shí)施例二中步驟204的相關(guān)描述即可,本實(shí)施例中在此不再詳細(xì)論述。
步驟306,針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定。
對(duì)于各獨(dú)立處理線程的判定過程,參照上述實(shí)施例二中步驟205的相關(guān)描述即可,本實(shí)施例中在此不再詳細(xì)論述。
步驟307,針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程針對(duì)該組中對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
優(yōu)選地,本實(shí)施例中在上述步驟306之后,還可以包括:針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)各自的判定結(jié)果統(tǒng)計(jì)該組在線用戶的數(shù)量,并依據(jù)各獨(dú)立線程的統(tǒng)計(jì)結(jié)果確定全部在線用戶的數(shù) 量。各獨(dú)立處理線程得到各自的統(tǒng)計(jì)結(jié)果(也即各自對(duì)應(yīng)的一組用戶標(biāo)識(shí)中在線用戶的數(shù)量)后,將各獨(dú)立線程的統(tǒng)計(jì)結(jié)果相加,相加后得到的結(jié)果即為全部在線用戶的數(shù)量。
本實(shí)施例中將用戶標(biāo)識(shí)劃分為多個(gè)組,并設(shè)置多個(gè)獨(dú)立處理線程來(lái)分別處理多個(gè)組的相關(guān)過程的方式,使得對(duì)打點(diǎn)數(shù)據(jù)的處理更加及時(shí),能承擔(dān)的QPS更高。
對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。
實(shí)施例四
參照?qǐng)D4,示出了根據(jù)本發(fā)明實(shí)施例四的一種通知用戶上下線的裝置的結(jié)構(gòu)框圖。本實(shí)施例的裝置可以包括如下模塊:
設(shè)置模塊401,適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
上線通知模塊402,適于若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;
排序模塊403,適于依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序;
判定模塊404,適于對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定;
下線通知模塊405,適于針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
本發(fā)明實(shí)施例無(wú)需對(duì)全部用戶標(biāo)識(shí)進(jìn)行逐個(gè)查詢,僅需對(duì)排序后的部分用戶標(biāo)識(shí)進(jìn)行判定即可,因此查詢量較小,能夠更加及時(shí)地對(duì)用戶的上下線 情況進(jìn)行通知。
實(shí)施例五
參照?qǐng)D5,示出了根據(jù)本發(fā)明實(shí)施例五的一種通知用戶上下線的裝置的結(jié)構(gòu)框圖。本實(shí)施例的裝置可以包括如下模塊:
設(shè)置模塊501,適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
上線通知模塊502,適于若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;
排序模塊503,適于依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序;
判定模塊504,適于對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定;
下線通知模塊505,適于針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
優(yōu)選地,所述判定模塊,具體適于對(duì)于排序后的所有用戶標(biāo)識(shí),從最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始,按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值是否大于設(shè)定閾值,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于所述設(shè)定閾值時(shí)停止判定。
優(yōu)選地,所述設(shè)置模塊,具體適于確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為所述打點(diǎn)時(shí)間;若否,則保存所述打點(diǎn)用戶標(biāo)識(shí),并將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為所述打點(diǎn)時(shí)間。
優(yōu)選地,所述上線通知模塊,具體適于確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,并發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
優(yōu)選地,本實(shí)施例的裝置還可以包括:分組模塊506,適于將用戶標(biāo)識(shí) 劃分為多個(gè)組,并為每組用戶標(biāo)識(shí)創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程。相應(yīng)的,所述設(shè)置模塊,具體適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),將所述打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程,由該獨(dú)立處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;所述排序模塊,具體適于針對(duì)每組用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)該組用戶標(biāo)識(shí)進(jìn)行排序;所述判定模塊,具體適于針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件。
本發(fā)明實(shí)施例無(wú)需對(duì)全部用戶標(biāo)識(shí)進(jìn)行逐個(gè)查詢,僅需對(duì)排序后的部分用戶標(biāo)識(shí)進(jìn)行判定即可,因此查詢量較小,能夠更加及時(shí)地對(duì)用戶的上下線情況進(jìn)行通知。并且通過設(shè)置多個(gè)獨(dú)立處理線程來(lái)分別處理多個(gè)組的相關(guān)過程的方式,使得對(duì)打點(diǎn)數(shù)據(jù)的處理更加及時(shí),能承擔(dān)的QPS更高。
對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(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í)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(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)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的通知用戶上下線的設(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)上提供,或者以任何其他形式提供。
應(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ī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了A1、一種通知用戶上下線的方法,包括:
接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;
依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序;
對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定;
針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
A2、如A1所述的方法,所述對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定的步驟,包括:
對(duì)于排序后的所有用戶標(biāo)識(shí),從最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始,按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值是否大于設(shè)定閾值,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于所述設(shè)定閾值時(shí)停止判定。
A3、如A1所述的方法,在所述接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的步驟之前,還包括:
將用戶標(biāo)識(shí)劃分為多個(gè)組,并為每組用戶標(biāo)識(shí)創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程。
A4、如A3所述的方法,所述接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的步驟,包括:接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),將所述打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程,由該獨(dú)立處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
所述依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序的步驟,包括:針對(duì)每組用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)該組用戶標(biāo)識(shí)進(jìn)行排序;
所述對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件的步驟,包括:針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件。
A5、如A1所述的方法,所述依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間的步驟,包括:
確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);
若是,則將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為所述打點(diǎn)時(shí)間;
若否,則保存所述打點(diǎn)用戶標(biāo)識(shí),并將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為所述打點(diǎn)時(shí)間。
A6、如A1所述的方法,所述若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知的步驟,包括:
確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);
若是,則判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,并發(fā)送所述打點(diǎn) 用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。
本發(fā)明還公開了B7、一種通知用戶上下線的裝置,包括:
設(shè)置模塊,適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
上線通知模塊,適于若判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,則發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知;
排序模塊,適于依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)已保存的所有用戶標(biāo)識(shí)進(jìn)行排序;
判定模塊,適于對(duì)于排序后的所有用戶標(biāo)識(shí),按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間不滿足所述下線條件時(shí)停止判定;
下線通知模塊,適于針對(duì)對(duì)應(yīng)的最新活躍時(shí)間滿足所述下線條件的用戶標(biāo)識(shí),發(fā)送該用戶標(biāo)識(shí)對(duì)應(yīng)用戶的下線通知。
B8、如B7所述的裝置,所述判定模塊,具體適于對(duì)于排序后的所有用戶標(biāo)識(shí),從最新活躍時(shí)間最早的用戶標(biāo)識(shí)開始,按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值是否大于設(shè)定閾值,直至某用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間與當(dāng)前時(shí)間的差值小于或等于所述設(shè)定閾值時(shí)停止判定。
B9、如B7所述的裝置,還包括:
分組模塊,適于將用戶標(biāo)識(shí)劃分為多個(gè)組,并為每組用戶標(biāo)識(shí)創(chuàng)建一個(gè)對(duì)應(yīng)的獨(dú)立處理線程。
B10、如B9所述的裝置,所述設(shè)置模塊,具體適于接收到包括打點(diǎn)用戶標(biāo)識(shí)及打點(diǎn)時(shí)間的打點(diǎn)數(shù)據(jù)時(shí),將所述打點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)至所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的獨(dú)立處理線程,由該獨(dú)立處理線程依據(jù)所述打點(diǎn)時(shí)間設(shè)置所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間;
所述排序模塊,具體適于針對(duì)每組用戶標(biāo)識(shí),分別由各自對(duì)應(yīng)的獨(dú)立處理線程依據(jù)對(duì)應(yīng)的最新活躍時(shí)間對(duì)該組用戶標(biāo)識(shí)進(jìn)行排序;
所述判定模塊,具體適于針對(duì)每組排序后的用戶標(biāo)識(shí),分別由各自對(duì)應(yīng) 的獨(dú)立處理線程按照排序順序依次判定當(dāng)前用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間是否滿足設(shè)定的下線條件。
B11、如B7所述的裝置,所述設(shè)置模塊,具體適于確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間更新為所述打點(diǎn)時(shí)間;若否,則保存所述打點(diǎn)用戶標(biāo)識(shí),并將所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)的最新活躍時(shí)間設(shè)置為所述打點(diǎn)時(shí)間。
B12、如B7所述的裝置,所述上線通知模塊,具體適于確定是否已保存所述打點(diǎn)用戶標(biāo)識(shí);若是,則判定所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶為首次上線,并發(fā)送所述打點(diǎn)用戶標(biāo)識(shí)對(duì)應(yīng)用戶的上線通知。