欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng)與流程

文檔序號:11917996閱讀:277來源:國知局
日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng)與流程

本發(fā)明涉及通信技術領域,具體涉及一種日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng)。



背景技術:

隨著計算機的大量普及,日志數(shù)據(jù)也得到了越來越廣泛的應用。日志數(shù)據(jù)包括計算機系統(tǒng)、設備、軟件等在某種刺激下作出反應而生成的消息。在實際情況中,日志消息的來源往往是多種多樣的,例如,Unix操作系統(tǒng)會記錄用戶登錄和注銷的消息,防火墻會記錄ACL通過和拒絕的消息,磁盤存儲系統(tǒng)會在故障發(fā)生時生成日志信息。由此可見,通過對日志數(shù)據(jù)進行收集和分析不僅能夠大幅提升計算機系統(tǒng)的可靠性,還能夠輔助完成多種信息的處理。

在現(xiàn)有技術中,為了實現(xiàn)日志數(shù)據(jù)的統(tǒng)計,大多采用單一的消息隊列對日志數(shù)據(jù)進行存儲,然后,從該消息隊列中獲取日志數(shù)據(jù)并進行統(tǒng)計后對統(tǒng)計結果進行存儲。但是,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術中的上述方式至少存在下述缺陷:由于單一的消息隊列的存儲能力有限,因此,當日志數(shù)據(jù)量非常龐大時,單一的消息隊列往往無法承載如此龐大的日志量,容易造成日志數(shù)據(jù)的遺漏;而且,在日志數(shù)據(jù)量龐大時,生成的日志統(tǒng)計結果的數(shù)據(jù)量也必然龐大,由此導致日志統(tǒng)計結果的存儲速度低于日志統(tǒng)計結果的生成速度,進而導致日志統(tǒng)計結果的遺漏并由此產生錯誤。由此可見,現(xiàn)有的日志統(tǒng)計方式無法應對日志數(shù)據(jù)量異常龐大的狀況。



技術實現(xiàn)要素:

鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng)。

根據(jù)本發(fā)明的一個方面,提供了一種日志數(shù)據(jù)的統(tǒng)計方法,包括:讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果;將所述日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲所述日志統(tǒng)計處理結果。

可選地,所述讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理的步驟具體包括:每隔預設時間間隔讀取一次所述第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內,通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理。

可選地,所述將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內,通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理的步驟具體包括:將上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,將本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內;將存在相同時間戳的第二日志數(shù)據(jù)的第一日志數(shù)據(jù)確定為第一類第一日志數(shù)據(jù),將與所述第一類第一日志數(shù)據(jù)的時間戳相同的第二日志數(shù)據(jù)確定為第一類第二日志數(shù)據(jù),將所述第一類第一日志數(shù)據(jù)以及第一類第二日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第一類第一日志數(shù)據(jù)以及所述第二緩存區(qū)域內的第一類第二日志數(shù)據(jù);將剩余的第一日志數(shù)據(jù)確定為第二類第一日志數(shù)據(jù),將所述第二類第一日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)。

可選地,所述刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)的步驟之后,進一步包括:記錄各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄所述后續(xù)讀取到的日志數(shù)據(jù)。

可選地,所述后臺數(shù)據(jù)庫獲取并存儲所述日志統(tǒng)計處理結果的步驟之后進一步包括:以圖表形式展現(xiàn)所述日志統(tǒng)計處理結果。

可選地,所述統(tǒng)計處理包括以下中的至少一個:流式計算以及聚合運算。

依據(jù)本發(fā)明的另一個方面,提供了一種日志數(shù)據(jù)的統(tǒng)計裝置,包括:讀取模塊,適于讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);統(tǒng)計模塊,適于根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果;緩存模塊,適于將所述日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲所述日志統(tǒng)計處理結果。

可選地,所述讀取模塊具體用于:每隔預設時間間隔讀取一次所述第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);所述統(tǒng)計模塊具體用于:將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內,通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理。

可選地,所述統(tǒng)計模塊具體用于:將上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,將本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內;將存在相同時間戳的第二日志數(shù)據(jù)的第一日志數(shù)據(jù)確定為第一類第一日志數(shù)據(jù),將與所述第一類第一日志數(shù)據(jù)的時間戳相同的第二日志數(shù)據(jù)確定為第一類第二日志數(shù)據(jù),將所述第一類第一日志數(shù)據(jù)以及第一類第二日志數(shù)據(jù)進行統(tǒng)計后處理得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第一類第一日志數(shù)據(jù)以及所述第二緩存區(qū)域內的第一類第二日志數(shù)據(jù);將剩余的第一日志數(shù)據(jù)確定為第二類第一日志數(shù)據(jù),將所述第二類第一日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)。

可選地,所述統(tǒng)計模塊進一步用于:在刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)之后,記錄各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄所述后續(xù)讀取到的日志數(shù)據(jù)。

可選地,所述日志數(shù)據(jù)的統(tǒng)計裝置進一步包括:展示模塊,適于以圖表形式展現(xiàn)所述日志統(tǒng)計處理結果。

可選地,所述統(tǒng)計模塊具體用于:對排序后的各個日志數(shù)據(jù)進行流式計算和/或聚合運算。

依據(jù)本發(fā)明的再一個方面,提供了一種日志數(shù)據(jù)的統(tǒng)計系統(tǒng),包括上述任一所述的日志數(shù)據(jù)的統(tǒng)計裝置、負責維護所述第一分布式消息隊列的第一消息隊列服務器、負責維護所述第二分布式消息隊列的第二消息隊列服務器、以及所述后臺數(shù)據(jù)庫。

在本發(fā)明提供的一種日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng)中,設計了兩個分布式消息隊列,其中,第一分布式消息隊列用于緩存多個客戶端的日志數(shù)據(jù),由于第一分布式消息隊列支持并行處理且能夠靈活擴容,因而能夠容納大量的日志數(shù)據(jù),防止日志數(shù)據(jù)的遺漏;第二分布式消息隊列用于緩存日志統(tǒng)計處理結果,由于第二分布式消息隊列支持并行處理且能夠靈活擴容,因而能夠容納大量的日志統(tǒng)計處理結果,有效防止了日志統(tǒng)計處理結果的遺漏,且有效避免了由于日志統(tǒng)計結果的存儲速度低于日志統(tǒng)計結果的生成速度而導致的錯誤。由此可見,本發(fā)明提供的日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng)能夠應對日志數(shù)據(jù)量異常龐大的狀況。

上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

圖1示出了本發(fā)明實施例一提供的一種日志數(shù)據(jù)的統(tǒng)計方法的流程示意圖;

圖2示出了本發(fā)明實施例二提供的一種日志數(shù)據(jù)的統(tǒng)計方法的流程示意圖;

圖3示出了本發(fā)明實施例三提供的一種日志數(shù)據(jù)的統(tǒng)計裝置的結構示意圖;

圖4示出了本發(fā)明實施例四提供的一種日志數(shù)據(jù)的統(tǒng)計裝置的結構示意圖;

圖5示出了本發(fā)明實施例五提供的一種日志數(shù)據(jù)的統(tǒng)計系統(tǒng)的結構示意圖;

圖6示出了本發(fā)明實施例六提供的一種日志數(shù)據(jù)的統(tǒng)計系統(tǒng)的結構示意圖。

具體實施方式

下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。

本發(fā)明實施例提供了一種日志數(shù)據(jù)的統(tǒng)計方法、裝置及系統(tǒng),至少能夠解決現(xiàn)有技術中的日志統(tǒng)計方式無法應對日志數(shù)據(jù)量異常龐大的狀況的技術問題。

實施例一

圖1示出了本發(fā)明實施例一提供的一種日志數(shù)據(jù)的統(tǒng)計方法的流程示意圖,該方法包括:

步驟S110:讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù)。

其中,多個客戶端的日志數(shù)據(jù)可以包括由各種類型的客戶端產生的各種類型的日志數(shù)據(jù)。例如,既可以是由監(jiān)控類客戶端生成的系統(tǒng)故障類的日志數(shù)據(jù),也可以是由用戶類客戶端生成的用戶信息類的日志數(shù)據(jù)??傊?,本發(fā)明對客戶端的類型以及日志數(shù)據(jù)的類型均不限定。其中,多個客戶端的日志數(shù)據(jù)可以相互并行地寫入第一分布式消息隊列的各個消息分區(qū)中,以供讀取。具體讀取時,為了提高讀取效率,可通過多個并行執(zhí)行的線程進行讀取。

步驟S120:根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果。

其中,每個日志數(shù)據(jù)均包含時間戳,時間戳中記錄的時間信息既可以是該條日志數(shù)據(jù)生成的時間,也可以是該條日志數(shù)據(jù)被存入第一分布式消息隊列的時間,總之,通過時間戳能夠判斷日志數(shù)據(jù)的生成順序或存儲順序。因此,通過時間戳能夠對各個日志數(shù)據(jù)進行排序,并對排序后的日志數(shù)據(jù)進行統(tǒng)計處理,由此得到日志統(tǒng)計處理結果。具體地,由于時間屬性是日志數(shù)據(jù)的一個重要屬性,很多分析計算都要依據(jù)日志數(shù)據(jù)的時間進行,因此,通過時間戳對日志數(shù)據(jù)進行排序能夠提升后續(xù)的統(tǒng)計處理的準確性。另外,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),由于分布式消息隊列中包含多個消息分區(qū),而多個消息分區(qū)之間是并行寫入的,因而各個消息分區(qū)之間的日志數(shù)據(jù)往往并非嚴格按照時間順序排列,所以,在本實施例中更加有必要對日志數(shù)據(jù)進行重新排序。

步驟S130:將上述日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲上述日志統(tǒng)計處理結果。

其中,第二分布式消息隊列能夠對日志統(tǒng)計處理結果進行緩存,由于第二分布式消息隊列也包含多個消息分區(qū),因此,可以通過各個消息分區(qū)并行緩存的方式提升第二分布式消息隊列的存儲能力。相應地,后臺數(shù)據(jù)庫從第二分布式消息隊列中獲取并存儲日志統(tǒng)計處理結果,由于增加了一層緩存機制,因此,能夠有效避免因后臺數(shù)據(jù)庫存儲不及時所導致的數(shù)據(jù)丟失及出錯問題。

由此可見,在本發(fā)明提供的一種日志數(shù)據(jù)的統(tǒng)計方法中,設計了兩個分布式消息隊列,其中,第一分布式消息隊列用于緩存多個客戶端的日志數(shù)據(jù),由于第一分布式消息隊列支持并行處理且能夠靈活擴容,因而能夠容納大量的日志數(shù)據(jù),防止日志數(shù)據(jù)的遺漏;第二分布式消息隊列用于緩存日志統(tǒng)計處理結果,由于第二分布式消息隊列支持并行處理且能夠靈活擴容,因而能夠容納大量的日志統(tǒng)計處理結果,有效防止了日志統(tǒng)計處理結果的遺漏,且有效避免了由于日志統(tǒng)計結果的存儲速度低于日志統(tǒng)計結果的生成速度而導致的錯誤。由此可見,本發(fā)明提供的日志數(shù)據(jù)的統(tǒng)計方法能夠應對日志數(shù)據(jù)量異常龐大的狀況。

實施例二

圖2示出了本發(fā)明實施例二提供的一種日志數(shù)據(jù)的統(tǒng)計方法的流程示意圖。其中,該統(tǒng)計方法的執(zhí)行主體可以為各類網(wǎng)絡設備,例如,可以為日志數(shù)據(jù)的統(tǒng)計裝置,該統(tǒng)計裝置可進一步包括多個網(wǎng)絡模塊,各個網(wǎng)絡模塊可通過各類服務器、電子設備來實現(xiàn)。如圖2所示,該方法包括:

步驟S210:每隔預設時間間隔讀取一次第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù)。

具體地,本實施例中的多個客戶端是指:遍布在全國各個省份的、用于獲取本省份內的用戶終端的數(shù)據(jù)流量信息的多個網(wǎng)絡設備。相應地,每個客戶端產生的日志數(shù)據(jù)中記錄了相應省份的用戶終端在當前時刻的數(shù)據(jù)流量信息。也就是說,每個客戶端實時地或近似實時地將當前時刻的數(shù)據(jù)流量信息以日志數(shù)據(jù)的形式寫入第一分布式消息隊列中,以供統(tǒng)計裝置進行統(tǒng)計。

其中,第一分布式消息隊列包含多個消息分區(qū),因此,各個客戶端能夠相互并行地將日志數(shù)據(jù)寫入第一分布式消息隊列的各個消息分區(qū)中。另外,第一分布式消息隊列由第一消息隊列服務器負責維護,該第一消息隊列服務器可以通過集群形式實現(xiàn)(例如,可以通過kafka集群實現(xiàn))。

具體實現(xiàn)時,統(tǒng)計裝置每隔預設時間間隔讀取一次第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù)。該預設時間間隔的具體長度可由本領域技術人員靈活設置,例如,可根據(jù)以下信息中的至少一個進行設置:各個客戶端生成日志數(shù)據(jù)的速度、網(wǎng)絡傳輸速度以及對日志統(tǒng)計處理結果進行展示時的更新頻率。在本實施例中,以預設時間間隔為1分鐘為例進行說明。具體讀取時,為了提高讀取效率,該統(tǒng)計裝置可通過多個并行執(zhí)行的線程進行讀取。

步驟S220:將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內。

由于本實施例中每隔1分鐘讀取一次第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù),因此,為了便于處理,將每一次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內。具體實現(xiàn)時,可以設置多個緩存區(qū)域,例如,可以設置三個緩存區(qū)域,第一個緩存區(qū)域用于存儲12:01讀取到的日志數(shù)據(jù),第二個緩存區(qū)域用于存儲12:02讀取到的日志數(shù)據(jù),第三個緩存區(qū)域用于存儲12:03讀取到的日志數(shù)據(jù);待上述日志數(shù)據(jù)處理完畢后,第一個緩存區(qū)域清空以存儲12:04讀取到的日志數(shù)據(jù)……依此類推。其中,緩存區(qū)域的數(shù)量可由本領域技術人員靈活設置,例如,可根據(jù)以下信息中的至少一個進行設置:各個客戶端生成日志數(shù)據(jù)的速度、網(wǎng)絡傳輸速度、對日志統(tǒng)計處理結果進行展示時的更新頻率、對緩存區(qū)域內的日志數(shù)據(jù)進行處理時的處理速度。

在本實施例中,為了便于描述,僅以兩個緩存區(qū)域為例進行說明,具體實施時,將上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,將本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內,通過兩個緩存區(qū)域的交替使用,實現(xiàn)對讀取到的日志數(shù)據(jù)的緩存操作,為后續(xù)的統(tǒng)計處理提供保障。當然,本領域技術人員能夠理解的是,實際情況中,也可以將本實施例中的兩個緩存區(qū)域擴展為多個,相應地,多個緩存區(qū)域中每相鄰的兩個緩存區(qū)域中存儲時間靠前的緩存區(qū)域作為第一緩存區(qū)域,存儲時間靠后的緩存區(qū)域作為第二緩存區(qū)域。

步驟S230:通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理。

其中,由于上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內,因此,將第一緩存區(qū)域內的第一日志數(shù)據(jù)的時間戳與第二緩存區(qū)域內的第二日志數(shù)據(jù)的時間戳進行比較,將存在相同時間戳的第二日志數(shù)據(jù)的第一日志數(shù)據(jù)確定為第一類第一日志數(shù)據(jù),將與第一類第一日志數(shù)據(jù)的時間戳相同的第二日志數(shù)據(jù)確定為第一類第二日志數(shù)據(jù),將第一類第一日志數(shù)據(jù)以及第一類第二日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到第二分布式消息隊列的各個消息分區(qū)中,刪除第一緩存區(qū)域內的第一類第一日志數(shù)據(jù)以及第二緩存區(qū)域內的第一類第二日志數(shù)據(jù);將剩余的第一日志數(shù)據(jù)確定為第二類第一日志數(shù)據(jù),將第二類第一日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到第二分布式消息隊列的各個消息分區(qū)中,刪除第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)。其中,在統(tǒng)計處理時,進一步結合日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行重新排序,將時間戳靠前的日志數(shù)據(jù)排列在時間戳靠后的日志數(shù)據(jù)的前面??蛇x地,在刪除第一緩存區(qū)域內的第一日志數(shù)據(jù)之后,進一步記錄各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄后續(xù)讀取到的日志數(shù)據(jù)。通過上述處理方式能夠對相鄰的兩個緩存區(qū)域中包含的相同時間戳的數(shù)據(jù)進行合并、處理,進而能夠消除重復數(shù)據(jù),提升流式計算和/或聚合運算的準確率。

為了便于理解,下面對上述統(tǒng)計處理方式的技術原理加以說明。發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn):在本發(fā)明的應用場景中,通常情況下,相同時間戳的日志數(shù)據(jù)僅存在于兩個緩存區(qū)域內,并且僅存在于兩個相鄰的緩存區(qū)域內;既不會同時存在于兩個以上的緩存區(qū)域內,也不會同時存在于兩個非相鄰的緩存區(qū)域內。另外,應理解的是,此處描述的各個緩存區(qū)域是指根據(jù)讀取時間劃分的虛擬緩存區(qū)域,并非是指實際的物理緩存區(qū)域:即使實際的物理緩存區(qū)域只有兩個,但由于兩個物理緩存區(qū)域的交替使用,實際上能夠按照讀取時間劃分出多個虛擬緩存區(qū)域,例如,第一緩存區(qū)域用于存儲12:01讀取到的日志數(shù)據(jù)時作為第一個虛擬緩存區(qū)域,第二緩存區(qū)域用于存儲12:02讀取到的日志數(shù)據(jù)時作為第二個虛擬緩存區(qū)域,第一緩存區(qū)域清空并用于存儲12:03讀取到的日志數(shù)據(jù)時作為第三個虛擬緩存區(qū)域……依此類推。

基于上述發(fā)現(xiàn),發(fā)明人提出了上述統(tǒng)計處理方式,該統(tǒng)計處理方式的核心在于:每次讀取到日志數(shù)據(jù)并存入對應的緩存區(qū)域后,暫時不對本次讀取到的日志數(shù)據(jù)(即:第一日志數(shù)據(jù))進行統(tǒng)計處理,而是等到下一次讀取到日志數(shù)據(jù)并存入對應的緩存區(qū)域之后,結合下一次讀取到的日志數(shù)據(jù)(即:第二日志數(shù)據(jù))的時間戳對本次讀取到的各個日志數(shù)據(jù)進行統(tǒng)計處理。具體地,在對本次讀取到的各個第一日志數(shù)據(jù)進行處理時,分別判斷本次讀取到的各個第一日志數(shù)據(jù)的時間戳是否與下一次讀取到的某些第二日志數(shù)據(jù)的時間戳相同,將判斷結果為是的第一日志數(shù)據(jù)與其對應的相同時間戳的第二日志數(shù)據(jù)進行統(tǒng)計處理,并將統(tǒng)計處理結果緩存到第二分布式消息隊列中;將判斷結果為否的第一日志數(shù)據(jù)單獨進行統(tǒng)計處理,并將統(tǒng)計處理結果緩存到第二分布式消息隊列中。并且,對于已經統(tǒng)計處理過的第一日志數(shù)據(jù)和第二日志數(shù)據(jù)執(zhí)行刪除操作。具體地,第一日志數(shù)據(jù)已全部經過統(tǒng)計處理,因此,第一緩存區(qū)域內的第一日志數(shù)據(jù)被清空。第二日志數(shù)據(jù)中僅時間戳與第一日志數(shù)據(jù)的時間戳相同的部分日志數(shù)據(jù)已經過統(tǒng)計處理,因此,第二緩存區(qū)域中僅時間戳與第一日志數(shù)據(jù)的時間戳相同的這部分第二日志數(shù)據(jù)被刪除,其余的第二日志數(shù)據(jù)依然保留,等到下下次讀取到日志數(shù)據(jù)后通過上述方式進行處理。另外,下下次讀取到的日志數(shù)據(jù)可以緩存在已清空的第一緩存區(qū)域中,屆時,由于第一緩存區(qū)域中的日志數(shù)據(jù)的讀取時間晚于第二緩存區(qū)域的日志數(shù)據(jù)讀取時間,因此,在下次處理時,將第二緩存區(qū)域內的日志數(shù)據(jù)作為第一日志數(shù)據(jù),將第一緩存區(qū)域內的日志數(shù)據(jù)作為第二日志數(shù)據(jù),即:第二緩存區(qū)域與第一緩存區(qū)域互換。由此循環(huán)執(zhí)行上述處理方式。通過兩個緩存區(qū)域的交替使用即可實現(xiàn)循環(huán)不斷地處理過程,當然,在本發(fā)明其他的實施例中,也可以設置多個緩存區(qū)域。無論緩存區(qū)域的數(shù)量如何,每次統(tǒng)計處理時,均根據(jù)緩存區(qū)域內的日志數(shù)據(jù)的讀取時間來確定各個緩存區(qū)域中的第一緩存區(qū)域以及第二緩存區(qū)域,即:每相鄰的兩次讀取時間所對應的緩存區(qū)域中,讀取時間靠前的緩存區(qū)域為第一緩存區(qū)域,其內的日志數(shù)據(jù)為第一日志數(shù)據(jù),讀取時間靠后的緩存區(qū)域為第二緩存區(qū)域,其內的日志數(shù)據(jù)為第二日志數(shù)據(jù)。由此可見,在各個緩存區(qū)域中,何為第一緩存區(qū)域,以及何為第二緩存區(qū)域是動態(tài)變化的。

而且,在上述方式中,每一次處理完畢后,進一步記錄本次處理過程中的各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄后續(xù)讀取到的日志數(shù)據(jù)。例如,假設在本次處理過程中,第一緩存區(qū)域內的第一日志數(shù)據(jù)是在12:01讀取的,第二緩存區(qū)域內的第二日志數(shù)據(jù)是在12:02讀取的,因此,對各個第一日志數(shù)據(jù)的時間戳進行記錄后,若在12:03或后續(xù)過程中再讀取到與已記錄的時間戳相同的日志數(shù)據(jù)則丟棄,基于發(fā)明人的上述發(fā)現(xiàn)(相同時間戳的日志數(shù)據(jù)僅存在于兩個緩存區(qū)域內,并且僅存在于兩個相鄰的緩存區(qū)域內)可知,該種處理方式既能夠減少數(shù)據(jù)處理量,提升處理效率;又能夠提升正確率,有效避免錯誤數(shù)據(jù)。

步驟S240:將統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲上述日志統(tǒng)計處理結果。

其中,第二分布式消息隊列能夠對日志統(tǒng)計處理結果進行緩存,由于第二分布式消息隊列也包含多個消息分區(qū),因此,可以通過各個消息分區(qū)并行緩存的方式提升第二分布式消息隊列的存儲能力。相應地,后臺數(shù)據(jù)庫從第二分布式消息隊列中獲取并存儲日志統(tǒng)計處理結果,由于增加了一層緩存機制,因此,能夠有效避免因后臺數(shù)據(jù)庫存儲不及時所導致的數(shù)據(jù)丟失及出錯問題。

具體地,在將統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中時,可在每一次處理完畢后立即將本次得到的日志統(tǒng)計處理結果緩存到第二分布式消息隊列中,也可以每隔預設周期執(zhí)行一次緩存操作,具體周期的長短取決于日志統(tǒng)計的實時性要求的高低和/或第二分布式消息隊列的承載能力。另外,后臺數(shù)據(jù)庫獲取并存儲上述日志統(tǒng)計處理結果時,也可以每隔預設時長獲取一次,該預設時長的具體長度可根據(jù)具體應用需求(如后續(xù)步驟中的展示更新頻率)、第二分布式消息隊列的承載能力以及后臺數(shù)據(jù)庫的處理速度靈活設定。

步驟S250:從后臺數(shù)據(jù)庫中獲取日志統(tǒng)計處理結果,并以圖表形式展現(xiàn)獲取到的日志統(tǒng)計處理結果。

其中,步驟S250為一個可選的步驟。具體地,由于本實施例中的日志數(shù)據(jù)包括各個省份的用戶終端的數(shù)據(jù)流量信息,因此,可以每隔1分鐘從后臺數(shù)據(jù)庫中獲取一次日志統(tǒng)計處理結果,并以圖表形式展現(xiàn)本次獲取到的日志統(tǒng)計處理結果,從而實時準確地展示各個省份當前的數(shù)據(jù)流量信息。

除展示數(shù)據(jù)流量信息外,在本發(fā)明其他的實施例中,該方法還可以用于展示全國各地實時的天氣信息、旅游信息等各類數(shù)據(jù)信息。另外,本領域技術人員還可以對上述實施例進行各種改動和變形。例如,可以將上述實施例中的各個步驟拆分成更多的步驟,或合并為更少的步驟,還可以調整各個步驟之間的執(zhí)行順序,甚至可以刪減部分步驟或新增一些步驟,總之,本發(fā)明對具體的實現(xiàn)細節(jié)不做限定。

另外,在上述方式中,第一分布式消息隊列以及第二分布式消息隊列均可分別由第一消息隊列服務器以及第二消息隊列服務器負責維護,且第一消息隊列服務器以及第二消息隊列服務器均可由kafka集群等各類服務器集群實現(xiàn),其中,kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng)。集群服務器能夠更好地支持并行處理、更加靈活地實現(xiàn)擴容,因而更能滿足大數(shù)據(jù)量的處理需求。例如,第一分布式消息隊列以及第二分布式消息隊列均可根據(jù)實際情況而擴展,比如可以增加多臺機器,還可以增加更多的消息分區(qū)。通過兩級分布式消息隊列的存儲方式提升了緩存效果,能夠靈活應對大數(shù)據(jù)量的日志數(shù)據(jù)。

而且,在上述方式中,負責執(zhí)行上述各個步驟的日志數(shù)據(jù)的統(tǒng)計裝置也可以靈活通過各類服務器或服務器集群實現(xiàn),例如,可以基于支持并行化處理以及流式計算的spark框架實現(xiàn)。相應地,上述的統(tǒng)計處理包括流式計算以及聚合運算等各類能夠并行執(zhí)行的運算過程(例如日志過濾)等。

另外,由于本發(fā)明采用并行化的方式實現(xiàn)日志數(shù)據(jù)的收集和存儲,因此,為了避免各個客戶端并行寫入的日志數(shù)據(jù)之間存在局部亂序的情況,本發(fā)明中根據(jù)時間戳對日志數(shù)據(jù)進行排序,并通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理,由此有效消除了重復數(shù)據(jù)、提升了數(shù)據(jù)處理的準確率和效率。

實施例三

圖3示出了本發(fā)明實施例三提供的一種日志數(shù)據(jù)的統(tǒng)計裝置的結構示意圖,如圖3所示,該裝置包括:讀取模塊31、統(tǒng)計模塊32以及緩存模塊33。

讀取模塊31適于讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù)。

其中,多個客戶端的日志數(shù)據(jù)可以包括由各種類型的客戶端產生的各種類型的日志數(shù)據(jù)。例如,既可以是由監(jiān)控類客戶端生成的系統(tǒng)故障類的日志數(shù)據(jù),也可以是由用戶類客戶端生成的用戶信息類的日志數(shù)據(jù)??傊?,本發(fā)明對客戶端的類型以及日志數(shù)據(jù)的類型均不限定。其中,多個客戶端的日志數(shù)據(jù)可以相互并行地寫入第一分布式消息隊列的各個消息分區(qū)中,以供讀取。讀取模塊31在具體讀取時,為了提高讀取效率,可通過多個并行執(zhí)行的線程進行讀取。

統(tǒng)計模塊32適于根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果。

其中,每個日志數(shù)據(jù)均包含時間戳,時間戳中記錄的時間信息既可以是該條日志數(shù)據(jù)生成的時間,也可以是該條日志數(shù)據(jù)被存入第一分布式消息隊列的時間,總之,通過時間戳能夠判斷日志數(shù)據(jù)的生成順序或存儲順序。因此,統(tǒng)計模塊32通過時間戳能夠對各個日志數(shù)據(jù)進行排序,并對排序后的日志數(shù)據(jù)進行統(tǒng)計處理,由此得到日志統(tǒng)計處理結果。具體地,由于時間屬性是日志數(shù)據(jù)的一個重要屬性,很多分析計算都要依據(jù)日志數(shù)據(jù)的時間進行,因此,通過時間戳對日志數(shù)據(jù)進行排序能夠提升后續(xù)的統(tǒng)計處理的準確性。另外,發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),由于分布式消息隊列中包含多個消息分區(qū),而多個消息分區(qū)之間是并行寫入的,因而各個消息分區(qū)之間的日志數(shù)據(jù)往往并非嚴格按照時間順序排列,所以,在本實施例中更加有必要對日志數(shù)據(jù)進行重新排序。

緩存模塊33適于將日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲日志統(tǒng)計處理結果。

其中,第二分布式消息隊列能夠通過緩存模塊33對日志統(tǒng)計處理結果進行緩存,由于第二分布式消息隊列也包含多個消息分區(qū),因此,緩存模塊33可以通過各個消息分區(qū)并行緩存的方式提升第二分布式消息隊列的存儲能力。相應地,后臺數(shù)據(jù)庫從第二分布式消息隊列中獲取并存儲日志統(tǒng)計處理結果,由于增加了一層緩存機制,因此,能夠有效避免因后臺數(shù)據(jù)庫存儲不及時所導致的數(shù)據(jù)丟失及出錯問題。

由此可見,在本發(fā)明提供的一種日志數(shù)據(jù)的統(tǒng)計裝置中,設計了兩個分布式消息隊列:第一分布式隊列和第二分布式隊列。其中,讀取模塊31讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù),由于第一分布式消息隊列支持并行處理且能夠靈活擴容,因而能夠容納大量的日志數(shù)據(jù),防止日志數(shù)據(jù)的遺漏;然后通過統(tǒng)計模塊32適于根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果;并通過緩存模塊33將日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲日志統(tǒng)計處理結果。其中,第二分布式消息隊列用于緩存日志統(tǒng)計處理結果,由于第二分布式消息隊列支持并行處理且能夠靈活擴容,因而能夠容納大量的日志統(tǒng)計處理結果,有效防止了日志統(tǒng)計處理結果的遺漏,且有效避免了由于日志統(tǒng)計結果的存儲速度低于日志統(tǒng)計結果的生成速度而導致的錯誤。由此可見,本發(fā)明提供的日志數(shù)據(jù)的統(tǒng)計裝置能夠應對日志數(shù)據(jù)量異常龐大的狀況。

實施例四

圖4示出了本發(fā)明實施例四提供的一種日志數(shù)據(jù)的統(tǒng)計裝置的結構示意圖。如圖4所示,該裝置包括:讀取模塊41、統(tǒng)計模塊42、緩存模塊43以及展示模塊44。

讀取模塊41適于讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù)。

具體地,讀取模塊41每隔預設時間間隔讀取一次第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù)。其中,本實施例中的多個客戶端是指:遍布在全國各個省份的、用于獲取本省份內的用戶終端的數(shù)據(jù)流量信息的多個網(wǎng)絡設備。相應地,每個客戶端產生的日志數(shù)據(jù)中記錄了相應省份的用戶終端在當前時刻的數(shù)據(jù)流量信息。也就是說,每個客戶端實時地或近似實時地將當前時刻的數(shù)據(jù)流量信息以日志數(shù)據(jù)的形式寫入第一分布式消息隊列中,以供統(tǒng)計裝置進行統(tǒng)計。第一分布式消息隊列包含多個消息分區(qū),因此,各個客戶端能夠相互并行地將日志數(shù)據(jù)寫入第一分布式消息隊列的各個消息分區(qū)中。另外,第一分布式消息隊列由第一消息隊列服務器負責維護,該第一消息隊列服務器可以通過集群形式實現(xiàn)(例如,可以通過kafka集群實現(xiàn))。具體實現(xiàn)時,上述預設時間間隔的具體長度可由本領域技術人員靈活設置,例如,可根據(jù)以下信息中的至少一個進行設置:各個客戶端生成日志數(shù)據(jù)的速度、網(wǎng)絡傳輸速度以及對日志統(tǒng)計處理結果進行展示時的更新頻率。在本實施例中,以預設時間間隔為1分鐘為例進行說明。具體讀取時,為了提高讀取效率,讀取模塊41可通過多個并行執(zhí)行的線程進行讀取。

統(tǒng)計模塊42適于根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果。

具體地,首先,統(tǒng)計模塊42將讀取模塊41各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內。由于本實施例中,讀取模塊41每隔1分鐘讀取一次第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù),因此,為了便于處理,統(tǒng)計模塊42將每一次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內。具體實現(xiàn)時,可以設置多個緩存區(qū)域,例如,可以設置三個緩存區(qū)域,第一個緩存區(qū)域用于存儲12:01讀取到的日志數(shù)據(jù),第二個緩存區(qū)域用于存儲12:02讀取到的日志數(shù)據(jù),第三個緩存區(qū)域用于存儲12:03讀取到的日志數(shù)據(jù);待上述日志數(shù)據(jù)處理完畢后,第一個緩存區(qū)域清空以存儲12:04讀取到的日志數(shù)據(jù)……依此類推。其中,緩存區(qū)域的數(shù)量可由本領域技術人員靈活設置,例如,可根據(jù)以下信息中的至少一個進行設置:各個客戶端生成日志數(shù)據(jù)的速度、網(wǎng)絡傳輸速度、對日志統(tǒng)計處理結果進行展示時的更新頻率、對緩存區(qū)域內的日志數(shù)據(jù)進行處理時的處理速度。

其次,統(tǒng)計模塊42通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理。其中,由于上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內,因此,統(tǒng)計模塊42將第一緩存區(qū)域內的第一日志數(shù)據(jù)的時間戳與第二緩存區(qū)域內的第二日志數(shù)據(jù)的時間戳進行比較,將存在相同時間戳的第二日志數(shù)據(jù)的第一日志數(shù)據(jù)確定為第一類第一日志數(shù)據(jù),將與第一類第一日志數(shù)據(jù)的時間戳相同的第二日志數(shù)據(jù)確定為第一類第二日志數(shù)據(jù),并將第一類第一日志數(shù)據(jù)以及第一類第二日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到第二分布式消息隊列的各個消息分區(qū)中,刪除第一緩存區(qū)域內的第一類第一日志數(shù)據(jù)以及第二緩存區(qū)域內的第一類第二日志數(shù)據(jù);將剩余的第一日志數(shù)據(jù)確定為第二類第一日志數(shù)據(jù),將第二類第一日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到第二分布式消息隊列的各個消息分區(qū)中,刪除第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)。其中,統(tǒng)計模塊42在統(tǒng)計處理時,進一步結合日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行重新排序,將時間戳靠前的日志數(shù)據(jù)排列在時間戳靠后的日志數(shù)據(jù)的前面??蛇x地,在統(tǒng)計模塊42刪除第一緩存區(qū)域內的第一日志數(shù)據(jù)之后,進一步記錄各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄后續(xù)讀取到的日志數(shù)據(jù)。通過上述處理方式能夠對相鄰的兩個緩存區(qū)域中包含的相同時間戳的數(shù)據(jù)進行合并、處理,進而能夠消除重復數(shù)據(jù),提升流式計算和/或聚合運算的準確率。

緩存模塊43適于將日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲日志統(tǒng)計處理結果。

其中,第二分布式消息隊列能夠對日志統(tǒng)計處理結果進行緩存,由于第二分布式消息隊列也包含多個消息分區(qū),因此,可以通過各個消息分區(qū)并行緩存的方式提升第二分布式消息隊列的存儲能力。相應地,后臺數(shù)據(jù)庫從第二分布式消息隊列中獲取并存儲日志統(tǒng)計處理結果,由于增加了一層緩存機制,因此,能夠有效避免因后臺數(shù)據(jù)庫存儲不及時所導致的數(shù)據(jù)丟失及出錯問題。

具體地,緩存模塊43在將統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中時,緩存模塊43可在每一次處理完畢后立即將本次得到的日志統(tǒng)計處理結果緩存到第二分布式消息隊列中,也可以每隔預設周期執(zhí)行一次緩存操作,具體周期的長短取決于日志統(tǒng)計的實時性要求的高低和/或第二分布式消息隊列的承載能力。

展示模塊44適于以圖表形式展現(xiàn)日志統(tǒng)計處理結果。

具體地,由于本實施例中的日志數(shù)據(jù)包括各個省份的用戶終端的數(shù)據(jù)流量信息,因此,可以每隔1分鐘從后臺數(shù)據(jù)庫中獲取一次日志統(tǒng)計處理結果,并通過展示模塊44以圖表形式展現(xiàn)本次獲取到的日志統(tǒng)計處理結果,從而實時準確地展示各個省份當前的數(shù)據(jù)流量信息。并且,展示模塊44除展示數(shù)據(jù)流量信息外,還可以用于展示全國各地實時的天氣信息、旅游信息等各類數(shù)據(jù)信息。

上述各個模塊的具體結構和工作原理可參照方法實施例中相應步驟的描述,此處不再贅述。

由此可見,在本發(fā)明實施例提供的日志數(shù)據(jù)的統(tǒng)計裝置中,首先通過讀取模塊41讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);然后通過統(tǒng)計模塊42根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果;并通過緩存模塊43將日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲日志統(tǒng)計處理結果;最后通過展示模塊44以圖表形式展現(xiàn)日志統(tǒng)計處理結果。本發(fā)明中根據(jù)時間戳對日志數(shù)據(jù)進行排序,并通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理,由此有效消除了重復數(shù)據(jù)、提升了數(shù)據(jù)處理的準確率和效率。

實施例五

圖5示出了本發(fā)明實施例五提供的一種日志數(shù)據(jù)的統(tǒng)計系統(tǒng)500的結構示意圖。如圖5所示,該日志數(shù)據(jù)的統(tǒng)計系統(tǒng)包括上述圖3所示的日志數(shù)據(jù)的統(tǒng)計裝置50、第一消息隊列服務器51、第二消息隊列服務器52以及后臺數(shù)據(jù)庫53。其中,日志數(shù)據(jù)的統(tǒng)計裝置50具體包括:讀取模塊54、統(tǒng)計模塊55以及緩存模塊56。第一消息隊列服務器51、第二消息隊列服務器52以及后臺數(shù)據(jù)庫53的具體結構和工作原理可參照方法實施例中相應步驟的描述,此處不再贅述。

實施例六

圖6示出了本發(fā)明實施例六提供的一種日志數(shù)據(jù)的統(tǒng)計系統(tǒng)500的結構示意圖。如圖6所示,該日志數(shù)據(jù)的統(tǒng)計系統(tǒng)包括上述圖4所示的日志數(shù)據(jù)的統(tǒng)計裝置60、第一消息隊列服務器61、第二消息隊列服務器62以及后臺數(shù)據(jù)庫63。其中,日志數(shù)據(jù)的統(tǒng)計裝置60具體包括:讀取模塊64、統(tǒng)計模塊65、緩存模塊66以及展示模塊67。第一消息隊列服務器61、第二消息隊列服務器62以及后臺數(shù)據(jù)庫63的具體結構和工作原理可參照方法實施例中相應步驟的描述,此處不再贅述。

在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。

在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。

類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。

本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。

此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。

本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的日志數(shù)據(jù)的統(tǒng)計裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。

應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

本發(fā)明公開了:A1、一種日志數(shù)據(jù)的統(tǒng)計方法,包括:

讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);

根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果;

將所述日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲所述日志統(tǒng)計處理結果。

A2、根據(jù)A1所述的方法,其中,所述讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理的步驟具體包括:

每隔預設時間間隔讀取一次所述第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);

將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內,通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理。

A3、根據(jù)A2所述的方法,其中,所述將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內,通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理的步驟具體包括:

將上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,將本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內;

將存在相同時間戳的第二日志數(shù)據(jù)的第一日志數(shù)據(jù)確定為第一類第一日志數(shù)據(jù),將與所述第一類第一日志數(shù)據(jù)的時間戳相同的第二日志數(shù)據(jù)確定為第一類第二日志數(shù)據(jù),將所述第一類第一日志數(shù)據(jù)以及第一類第二日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第一類第一日志數(shù)據(jù)以及所述第二緩存區(qū)域內的第一類第二日志數(shù)據(jù);

將剩余的第一日志數(shù)據(jù)確定為第二類第一日志數(shù)據(jù),將所述第二類第一日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)。

A4、根據(jù)A3所述的方法,其中,所述刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)的步驟之后,進一步包括:

記錄各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄所述后續(xù)讀取到的日志數(shù)據(jù)。

A5、根據(jù)A1-A4任一所述的方法,其中,所述后臺數(shù)據(jù)庫獲取并存儲所述日志統(tǒng)計處理結果的步驟之后進一步包括:以圖表形式展現(xiàn)所述日志統(tǒng)計處理結果。

A6、根據(jù)A1-A5任一所述的方法,其中,所述統(tǒng)計處理包括以下中的至少一個:流式計算以及聚合運算。

本發(fā)明還公開了:B7、一種日志數(shù)據(jù)的統(tǒng)計裝置,包括:

讀取模塊,適于讀取第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);

統(tǒng)計模塊,適于根據(jù)各個日志數(shù)據(jù)的時間戳對各個日志數(shù)據(jù)進行排序并統(tǒng)計處理,得到日志統(tǒng)計處理結果;

緩存模塊,適于將所述日志統(tǒng)計處理結果緩存到預設的第二分布式消息隊列的各個消息分區(qū)中,以供后臺數(shù)據(jù)庫獲取并存儲所述日志統(tǒng)計處理結果。

B8、根據(jù)B7所述的裝置,其中,所述讀取模塊具體用于:每隔預設時間間隔讀取一次所述第一分布式消息隊列的各個消息分區(qū)中緩存的來自多個客戶端的日志數(shù)據(jù);

所述統(tǒng)計模塊具體用于:將各次讀取到的日志數(shù)據(jù)依次緩存在不同的緩存區(qū)域內,通過比較相鄰的兩個緩存區(qū)域內的日志數(shù)據(jù)的時間戳對各次讀取到的日志數(shù)據(jù)進行排序并統(tǒng)計處理。

B9、根據(jù)B8所述的裝置,其中,所述統(tǒng)計模塊具體用于:

將上一次讀取到的第一日志數(shù)據(jù)緩存在第一緩存區(qū)域內,將本次讀取到的第二日志數(shù)據(jù)緩存在第二緩存區(qū)域內;

將存在相同時間戳的第二日志數(shù)據(jù)的第一日志數(shù)據(jù)確定為第一類第一日志數(shù)據(jù),將與所述第一類第一日志數(shù)據(jù)的時間戳相同的第二日志數(shù)據(jù)確定為第一類第二日志數(shù)據(jù),將所述第一類第一日志數(shù)據(jù)以及第一類第二日志數(shù)據(jù)進行統(tǒng)計后處理得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第一類第一日志數(shù)據(jù)以及所述第二緩存區(qū)域內的第一類第二日志數(shù)據(jù);

將剩余的第一日志數(shù)據(jù)確定為第二類第一日志數(shù)據(jù),將所述第二類第一日志數(shù)據(jù)進行統(tǒng)計處理后得到的日志統(tǒng)計處理結果緩存到所述第二分布式消息隊列的各個消息分區(qū)中,刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)。

B10、根據(jù)B9所述的裝置,其中,所述統(tǒng)計模塊進一步用于:在刪除所述第一緩存區(qū)域內的第二類第一日志數(shù)據(jù)之后,記錄各個第一日志數(shù)據(jù)的時間戳,若后續(xù)讀取到的日志數(shù)據(jù)的時間戳與已記錄的時間戳相同,則丟棄所述后續(xù)讀取到的日志數(shù)據(jù)。

B11、根據(jù)B7-B10任一所述的裝置,其中,進一步包括:展示模塊,適于以圖表形式展現(xiàn)所述日志統(tǒng)計處理結果。

B12、根據(jù)B7-B11任一所述的裝置,其中,所述統(tǒng)計模塊具體用于:對排序后的各個日志數(shù)據(jù)進行流式計算和/或聚合運算。

本發(fā)明還公開了:C13、一種日志數(shù)據(jù)的統(tǒng)計系統(tǒng),包括:B7至B12任一所述的日志數(shù)據(jù)的統(tǒng)計裝置、負責維護所述第一分布式消息隊列的第一消息隊列服務器、負責維護所述第二分布式消息隊列的第二消息隊列服務器、以及所述后臺數(shù)據(jù)庫。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
临江市| 射洪县| 绍兴县| 平邑县| 资中县| 新平| 华亭县| 射阳县| 白玉县| 铜鼓县| 连平县| 宁明县| 浠水县| 虞城县| 娄底市| 高安市| 泗洪县| 奉化市| 仙桃市| 合江县| 徐水县| 漳州市| 合阳县| 浮梁县| 中方县| 尉氏县| 樟树市| 秦皇岛市| 南澳县| 平潭县| 兴城市| 乌兰察布市| 当阳市| 蓬安县| 郑州市| 开化县| 南华县| 石家庄市| 丹巴县| 泰顺县| 桦甸市|