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

網(wǎng)站訪問日志的預(yù)處理方法、裝置及系統(tǒng)的制作方法

文檔序號:7777264閱讀:293來源:國知局
網(wǎng)站訪問日志的預(yù)處理方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種網(wǎng)站訪問日志的預(yù)處理方法、裝置及系統(tǒng)。其中,該方法包括:從集群服務(wù)器中讀取原始日志;對原始日志進(jìn)行合并和排序得到中間日志流;將中間日志流分割得到預(yù)處理日志。采用本發(fā)明,解決了現(xiàn)有技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,實現(xiàn)了單次讀寫完成對日志數(shù)據(jù)的預(yù)處理,減少了處理時間和處理的中間文件,從而提高了日志的處理效率。
【專利說明】網(wǎng)站訪問日志的預(yù)處理方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種網(wǎng)站訪問日志的預(yù)處理方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的發(fā)展,上網(wǎng)人數(shù)不斷的增加,網(wǎng)站的訪問量不斷的上升,單臺服務(wù)器已經(jīng)無法滿足大量的網(wǎng)站訪問量,常見的做法是采用負(fù)載均衡集群,通過一個或者多個前端負(fù)載均衡器,將工作負(fù)載分發(fā)到后端的一組服務(wù)器上,后端服務(wù)器收到請求并記錄日志。隨著訪問量不斷的上升,日志文件的大小不斷的膨脹,但是對應(yīng)的日志文件的處理時間要求卻并沒有降低。因此,如何提高日志文件的處理效率,成為本領(lǐng)域必須面臨的問題。
[0003]最早的日志處理方法是直接讀取原始日志文件,然后對原始日志文件中的數(shù)據(jù)進(jìn)行分析,這樣效率很低,因為每次不同的分析都要重新讀取所有的原始日志。目前常用的日志處理方法包括預(yù)處理和后續(xù)統(tǒng)計分析兩部分,其中預(yù)處理部分是所有后續(xù)統(tǒng)計分析所共用的,通常包括分割、合并和排序三個主要過程。其中,分割的需求是因為后續(xù)可能只針對某種特殊標(biāo)識的日志進(jìn)行統(tǒng)計分析;合并的需求是因為原始日志分布在多個集群服務(wù)器,需要統(tǒng)一分析;排序的需求是因為需要分析事件發(fā)生的先后順序以及因果關(guān)系。這三種需求是非常普遍的,現(xiàn)有的做法是:首先在計算機集群上將原始日志按照某種相同標(biāo)識(譬如用戶標(biāo)識)劃分為多個標(biāo)識文件;之后在日志處理服務(wù)器上,讀取集群服務(wù)器上的標(biāo)識文件,將相同標(biāo)識的標(biāo)識文件合并為一個文件作為目標(biāo)文件;最后,按照時間對目標(biāo)文件中日志信息進(jìn)行排序,生成預(yù)處理后的日志文件。
[0004]現(xiàn)有技術(shù)對日志文件的分割、合并以及排序的過程都是孤立的,在此過程中生成了標(biāo)識文件、目標(biāo)文件等中間文件,導(dǎo)致了多次的文件讀取和寫入操作,而由于日志文件數(shù)據(jù)量大,中間文件數(shù)量多,讀取和寫入非常耗費時間,降低了整體日志預(yù)處理的效率。
[0005]針對現(xiàn)有技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,目前尚未提出有效的解決方案。

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

[0006]針對相關(guān)技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,目前尚未提出有效的解決方案,為此,本發(fā)明的主要目的在于提供一種網(wǎng)站訪問日志的預(yù)處理方法、裝置及系統(tǒng),以解決上述問題。
[0007]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了 一種網(wǎng)站訪問日志的預(yù)處理方法,該方法包括:從集群服務(wù)器中讀取原始日志;對原始日志進(jìn)行合并和排序得到中間日志流;將中間日志流分割得到預(yù)處理日志。
[0008]進(jìn)一步地,從集群服務(wù)器中讀取原始日志的步驟包括:以數(shù)據(jù)流方式按行從集群服務(wù)器中并行讀取原始日志;將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
[0009]進(jìn)一步地,對原始日志進(jìn)行合并和排序得到中間日志流的步驟包括:將日志集中的日志數(shù)據(jù)排序得到數(shù)據(jù)序列;輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù);將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列;返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)的步驟,直至將日志數(shù)據(jù)輸出完畢,得到中間日志流;其中,將時間最早的日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為來源服務(wù)器。
[0010]進(jìn)一步地,將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列的步驟還包括:在將來源服務(wù)器中的日志數(shù)據(jù)讀取完畢之后,關(guān)閉來源服務(wù)器的日志。
[0011]進(jìn)一步地,將中間日志流分割得到預(yù)處理日志的步驟包括:獲取中間日志流中的用戶標(biāo)識;按照用戶標(biāo)識對中間日志流進(jìn)行分割得到預(yù)處理日志。
[0012]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種網(wǎng)站訪問日志的預(yù)處理裝置,該裝置包括:第一讀取模塊,用于從集群服務(wù)器中讀取原始日志;合并排序模塊,用于對原始日志進(jìn)行合并和排序得到中間日志流;分割模塊,用于將中間日志流分割得到預(yù)處理日志。
[0013]進(jìn)一步地,第一讀取模塊包括:并行讀取模塊,用于以數(shù)據(jù)流方式按行從集群服務(wù)器中并行讀取原始日志;保存模塊,用于將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
[0014]進(jìn)一步地,合并排序模塊包括:排序模塊,用于將日志集中的日志數(shù)據(jù)排序得到數(shù)據(jù)序列;輸出模塊,用于輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù);補充模塊,用于將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列;返回執(zhí)行模塊,用于返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)的步驟,直至將日志數(shù)據(jù)輸出完畢,得到中間日志流;其中,將時間最早的日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為來源服務(wù)器。
[0015]進(jìn)一步地,補充模塊包括:關(guān)閉模塊,用于在將來源服務(wù)器中的日志數(shù)據(jù)讀取完畢之后,關(guān)閉來源服務(wù)器的日志流。
[0016]進(jìn)一步地,分割模塊包括:獲取模塊,用于獲取中間日志流中的用戶標(biāo)識;分割子模塊,用于按照用戶標(biāo)識對中間日志流進(jìn)行分割得到預(yù)處理日志。
[0017]為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種網(wǎng)站訪問日志的預(yù)處理系統(tǒng),該系統(tǒng)包括:多個集群服務(wù)器;日志預(yù)處理服務(wù)器,與多個集群服務(wù)器連接,用于從集群服務(wù)器中讀取原始日志,并在對原始日志進(jìn)行合并和排序得到中間日志流之后,將中間日志流分割得到預(yù)處理日志。
[0018]進(jìn)一步地,日志預(yù)處理服務(wù)器包括:讀取裝置,與多個集群服務(wù)器連接,用于以數(shù)據(jù)流方式按行從集群服務(wù)器中并行讀取原始日志。
[0019]進(jìn)一步地,日志預(yù)處理服務(wù)器包括:處理器,與讀取裝置連接,用于將日志集中的日志數(shù)據(jù)排序得到數(shù)據(jù)序列,并輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù),然后將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列,返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)的步驟,直至將日志數(shù)據(jù)輸出完畢,得到中間日志流;其中,將時間最早的日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為來源服務(wù)器。
[0020]采用本發(fā)明,在從集群服務(wù)器中讀取原始日志之后,將日志合并和排序兩個過程結(jié)合起來,將合并和排序得到的中間日志流分割得到預(yù)處理日志,最后將預(yù)處理日志寫入磁盤,省去了中間文件的生成,僅需要單次的讀取和寫入,提高了日志預(yù)處理的效率。解決了現(xiàn)有技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,實現(xiàn)了單次讀寫完成對日志數(shù)據(jù)的預(yù)處理,減少了處理時間和處理的中間文件,從而提高了日志的處理效率。
【專利附圖】

【附圖說明】
[0021]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0022]圖1是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0023]圖2是根據(jù)本發(fā)明實施例的一種可選的預(yù)處理系統(tǒng)適用系統(tǒng)的結(jié)構(gòu)圖;
[0024]圖3是根據(jù)本發(fā)明實施例的一種可選的預(yù)處理系統(tǒng)的結(jié)構(gòu)圖;
[0025]圖4是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理系統(tǒng)處理日志數(shù)據(jù)的框圖;
[0026]圖5是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理方法的流程圖;以及
[0027]圖6是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0028]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。
[0029]圖1是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理系統(tǒng)的結(jié)構(gòu)示意圖。如圖1所示,該系統(tǒng)可以包括:多個集群服務(wù)器2和一個日志預(yù)處理服務(wù)器I。
[0030]其中,多個集群服務(wù)器2,用于記錄原始日志。
[0031]日志預(yù)處理服務(wù)器1,與多個集群服務(wù)器2連接,用于從集群服務(wù)器中讀取原始日志,并在對原始日志進(jìn)行合并和排序得到中間日志流之后,將中間日志流分割得到預(yù)處理日志。
[0032]采用上述系統(tǒng),在日志預(yù)處理服務(wù)器從集群服務(wù)器中讀取原始日志之后,將日志合并和排序兩個過程結(jié)合起來,將合并和排序得到的中間日志流分割得到預(yù)處理日志,省去了中間文件的生成,僅需要單次的讀取和寫入,提高了日志預(yù)處理的效率。解決了現(xiàn)有技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,實現(xiàn)了單次讀寫完成對日志數(shù)據(jù)的預(yù)處理,減少了處理時間和處理的中間文件,從而提高了日志的處理效率。
[0033]在該實施例中,原始日志可以是存儲在磁盤上的日志文件;中間日志流可以采用數(shù)據(jù)的表現(xiàn)形式,中間日志流中可以保存著一條或多條數(shù)據(jù);預(yù)處理日志也是對數(shù)據(jù)處理的結(jié)果,在該實施例中,在得到以數(shù)據(jù)為表現(xiàn)形式的預(yù)處理日志之后,可以將其作為文件寫入磁盤。由于采用了數(shù)據(jù)流的讀取和處理方式,通過日志預(yù)處理服務(wù)器可以在將原始日志合并和排序得到中間日志流的同時,將中間日志流進(jìn)行分割得到預(yù)處理日志寫入磁盤,整個過程是同步進(jìn)行的,中間數(shù)據(jù)沒有堆積,不需要寫入文件和再次讀取文件。
[0034]如圖2至圖3所示的實施例,用戶(客戶端)發(fā)送訪問請求至負(fù)載均衡器,負(fù)載均衡器將訪問請求分發(fā)到后端的集群服務(wù)器(圖中示出的集群服務(wù)器僅作示例說明,其數(shù)量不限于圖中所示的三臺),集群服務(wù)器接收到訪問請求,并記錄網(wǎng)站訪問日志生成原始日志。
[0035]然后,日志預(yù)處理服務(wù)器從各個集群服務(wù)器并行讀取原始日志,然后將從各集群服務(wù)器中讀取的原始日志經(jīng)合并、排序、分割后得到預(yù)處理日志,然后將預(yù)處理日志寫入磁盤。
[0036]根據(jù)本發(fā)明的上述實施例,日志預(yù)處理服務(wù)器I可以包括:讀取裝置,與多個集群服務(wù)器連接,用于以數(shù)據(jù)流方式按行從集群服務(wù)器中并行讀取原始日志,將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
[0037]具體地,如圖3所示,日志預(yù)處理服務(wù)器通過網(wǎng)絡(luò)以數(shù)據(jù)流方式按行并行讀取集群服務(wù)器中的日志文件,形成集群服務(wù)器的日志流(即原始日志)。由于日志預(yù)處理服務(wù)器與集群服務(wù)器處于同一局域網(wǎng),該讀取是高效并且穩(wěn)定的。
[0038]在該實施例中,采用了數(shù)據(jù)流的方式按行并行讀取集群服務(wù)器的原始日志,讀取各臺集群服務(wù)器,即同時從每臺集群服務(wù)器中讀取一條日志數(shù)據(jù),只需要占用很小的內(nèi)存資源,即使考慮到運算速度,每次可以讀取譬如10條日志數(shù)據(jù)進(jìn)行緩存,和現(xiàn)有技術(shù)中的日志文件大小相比,也依然是很小的內(nèi)存占用??臻g復(fù)雜度是常數(shù)級別(即緩存區(qū)大小),并不隨原始日志文件的膨脹而增長,大大減少了存儲的數(shù)據(jù),減少了資源占用,提高了處理效率。
[0039]在本發(fā)明的上述實施例中,日志預(yù)處理服務(wù)器I還可以包括:處理器,與讀取裝置連接,用于將日志集中的日志數(shù)據(jù)排序得到數(shù)據(jù)序列,并輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù),然后將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列,返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)的步驟,直至將日志數(shù)據(jù)輸出完畢,得到中間日志流;其中,將時間最早的日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為來源服務(wù)器。
[0040]在該實施例中,在獲取到預(yù)處理日志的同時,將該預(yù)處理日志寫入磁盤文件。
[0041]更具體地,網(wǎng)站訪問日志的預(yù)處理系統(tǒng)可以與一個分析處理器連接,具體地,分析處理器與日志預(yù)處理服務(wù)器連接,用于分析預(yù)處理日志得到分析結(jié)果。
[0042]具體地,在返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的原始日志的步驟,直至將原始日志輸出完畢,得到中間日志流的步驟的過程中,預(yù)處理方法還包括:在讀取完來源服務(wù)器中的所有數(shù)據(jù)之后,關(guān)閉來源服務(wù)器的日志流。
[0043]在上述實施例中,讀取的原始日志形成日志流,將原始日志進(jìn)行合并,同時對原始日志中的每條日志數(shù)據(jù)進(jìn)行時間排序得到數(shù)據(jù)序列。在該實施例中,因為每臺集群服務(wù)器上的日志都是按照時間順序產(chǎn)生并記錄的,所以每臺集群服務(wù)器的記錄日志時本身都是按照時間排序的。
[0044]在使用實施例的預(yù)處理方法的系統(tǒng)中,假設(shè)有η臺集群服務(wù)器,則日志預(yù)處理服務(wù)器可以通過如下方法實現(xiàn)對日志的預(yù)處理:
[0045]( I)從每臺集群服務(wù)器的日志文件中讀取一條日志數(shù)據(jù)(即原始日志文件中的一行文本),得到η條日志數(shù)據(jù)組成的原始日志,其中,η為自然數(shù)。
[0046](2)對此η條日志數(shù)據(jù)進(jìn)行時間排序,得到數(shù)據(jù)序列。
[0047](3)將該數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)輸出至中間日志流,假設(shè)第i臺集群服務(wù)器中的日志數(shù)據(jù)的時間最早,則將此條日志數(shù)據(jù)發(fā)送到中間日志流,則數(shù)據(jù)序列中剩余η -1條日志,成為剩余序列。
[0048](4)從第i臺服務(wù)器讀取下一條日志數(shù)據(jù)iNext,將該日志數(shù)據(jù)iNext補入上述剩余的η -1條日志數(shù)據(jù)組成的剩余序列,則剩余序列中又成為有η條日志數(shù)據(jù)的數(shù)據(jù)序列,同樣排序并輸出時間最早的日志數(shù)據(jù)。[0049]具體地,由于步驟(3)中剩余的η -1條日志數(shù)據(jù)是已經(jīng)排好序的,所以在執(zhí)行步驟(4)的排序時,不需要對η條日志數(shù)據(jù)重新進(jìn)行排序。
[0050]更具體地,可以使用二分查找的算法將下一條日志數(shù)據(jù)iNext插入到剩余序列中。使用二分查找的算法,時間復(fù)雜度降為O(1gn)。
[0051 ] (5)循環(huán)執(zhí)行步驟(4),直至將所述集群服務(wù)器上的原始日志讀取并輸出完畢。
[0052]具體地,在執(zhí)行步驟(5)的過程中,如果某臺集群服務(wù)器的原始日志讀取完畢,則將讀取完畢的集群服務(wù)器對應(yīng)在排序模塊上的日志流關(guān)閉并移除,對剩余服務(wù)器上的原始日志繼續(xù)重復(fù)執(zhí)行步驟(4),直到所有服務(wù)器的原始日志讀取完畢,這樣最終輸出的中間日志流即實現(xiàn)了合并以及排序兩個目的。
[0053]具體地,讀取每臺集群服務(wù)器上的原始日志時形成一條日志流通道,在某臺集群服務(wù)器上的原始日志讀取完畢之后,將對應(yīng)的日志流通道關(guān)閉。
[0054]其中,排序模塊上的日志流關(guān)閉并移除并不刪除原始的日志文件,出于安全性考慮,通常原始日志都是存檔備份的。在該實施例中,由于記錄在集群服務(wù)器上的原始日志本身是有時間排序的,日志預(yù)處理服務(wù)器一條一條的從集群服務(wù)器中讀取原始日志,不會破壞每臺集群服務(wù)器上的日志數(shù)據(jù)的時間順序,不僅節(jié)省了多次重復(fù)讀取重復(fù)排序的時間,而且利用了集群服務(wù)器上固有的時間順序的原始日志,也節(jié)省了每次讀取排序的時間,并且將日志數(shù)據(jù)合并以及排序兩個過程結(jié)合為一個過程,將時間復(fù)雜度降為O(1gn),大大地提高了計算效率。
[0055]在本發(fā)明的上述實施例中,日志預(yù)處理服務(wù)器I在獲取中間日志流中的用戶標(biāo)識之后,可以按照用戶標(biāo)識對中間日志流進(jìn)行分割得到預(yù)處理日志。
[0056]具體地,可以將中間日志流按照用戶標(biāo)識進(jìn)行分割,并將分割后的預(yù)處理日志寫入多個預(yù)處理結(jié)果文件,每個所述結(jié)果文件中含有相同的客戶標(biāo)識。此結(jié)果文件可寫入數(shù)據(jù)庫,作為后續(xù)日志統(tǒng)計和分析所用。
[0057]在本發(fā)明的上述實施例中,整個預(yù)處理過程中僅需要單次的文件讀取(即讀取原始日志文件),以及單次的文件寫入(即寫入預(yù)處理后的預(yù)處理日志文件)。由于原始日志的數(shù)據(jù)量很大,預(yù)處理后的日志文件數(shù)量很多,讀取和寫入占據(jù)了整個預(yù)處理大部分的時間,通過減少文件的讀取和寫入次數(shù),節(jié)省了預(yù)處理的時間,提高了預(yù)處理的效率。其中,該實施例中原始日志和預(yù)處理日志均可以是一個文件。
[0058]圖5是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理方法的流程圖,如圖5所示該方法可以包括如下步驟:
[0059]步驟S102,從集群服務(wù)器中讀取原始日志。
[0060]步驟S104,對原始日志進(jìn)行合并和排序得到中間日志流。
[0061 ] 步驟S106,將中間日志流分割得到預(yù)處理日志。
[0062]采用本發(fā)明,在從集群服務(wù)器中讀取原始日志之后,將日志合并和排序兩個過程結(jié)合起來,將合并和排序得到的中間日志流分割得到預(yù)處理日志,最后將預(yù)處理日志寫入磁盤,省去了中間文件的生成,僅需要單次的讀取和寫入,提高了日志預(yù)處理的效率。解決了現(xiàn)有技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,實現(xiàn)了單次讀寫完成對日志數(shù)據(jù)的預(yù)處理,減少了處理時間和處理的中間文件,從而提高了日志的處理效率。[0063]如圖2至圖3所示的實施例,用戶通過負(fù)載均衡器發(fā)送訪問請求,負(fù)載均衡器將請求分發(fā)到后端的集群服務(wù)器(圖中示出的集群服務(wù)器僅作示例說明,其數(shù)量不限于圖中所示的三臺)上,集群服務(wù)器接收到訪問請求,并記錄網(wǎng)站訪問日志生成原始日志。
[0064]然后,日志預(yù)處理服務(wù)器讀取各個集群服務(wù)器下的原始日志,然后將從各集群服務(wù)器中讀取的原始日志輸出經(jīng)合并、排序、分割后的預(yù)處理日志,然后將預(yù)處理日志寫入磁盤。
[0065]在本發(fā)明的上述實施例中,從集群服務(wù)器中讀取原始日志的步驟可以包括:以數(shù)據(jù)流方式按行從集群服務(wù)器中并行讀取原始日志;將并行讀取到的所有日志數(shù)據(jù)保存在日
士 rh
[0066]具體地,如圖3所示,日志服務(wù)器通過網(wǎng)絡(luò)以數(shù)據(jù)流方式按行并行讀取集群服務(wù)器中的日志文件,形成集群服務(wù)器的日志流(即原始日志)。由于日志預(yù)處理服務(wù)器與集群服務(wù)器處于同一局域網(wǎng),該讀取是高效并且穩(wěn)定的。
[0067]在該實施例中,原始日志可以是從存儲在磁盤上的log file “日志文件”;中間日志流可以采用數(shù)據(jù)的表現(xiàn)形式,中間日志流中可以保存著一條或多條數(shù)據(jù);預(yù)處理日志也是對數(shù)據(jù)處理的結(jié)果,在該實施例中,在得到以數(shù)據(jù)為表現(xiàn)形式的預(yù)處理日志之后,可以將其作為文件寫入磁盤。由于采用了數(shù)據(jù)流的讀取和處理方式,通過日志預(yù)處理服務(wù)器可以在將原始日志合并和排序得到中間日志流的同時,將中間日志流進(jìn)行分割得到預(yù)處理日志寫入磁盤,整個過程是同步進(jìn)行的,中間數(shù)據(jù)沒有堆積,不需要寫入文件和再次讀取文件。
[0068]根據(jù)本發(fā)明的上述實施例,對原始日志進(jìn)行合并和排序得到中間日志流的步驟包括:將日志集中的日志數(shù)據(jù)排序得到數(shù)據(jù)序列;輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù);將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列;返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)的步驟,直至將日志數(shù)據(jù)輸出完畢,得到中間日志流;其中,將時間最早的日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為來源服務(wù)器。
[0069]具體地,將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列的步驟可以包括:在將來源服務(wù)器中的日志數(shù)據(jù)讀取完畢之后,關(guān)閉來源服務(wù)器的日志。
[0070]在上述實施例中,所有讀取的原始日志形成日志流,將所有原始日志進(jìn)行合并,同時對日志流中的每條日志數(shù)據(jù)進(jìn)行時間排序得到數(shù)據(jù)序列。在該實施例中,因為每臺集群服務(wù)器上的原始日志都是按照時間順序產(chǎn)生并記錄的,所以每臺集群服務(wù)器的記錄日志時本身都是按照時間排序的。
[0071]在使用實施例的預(yù)處理方法的系統(tǒng)中,假設(shè)有η臺集群服務(wù)器,則通過如下方法實現(xiàn)上述實施例:
[0072](I)從每臺集群服務(wù)器的日志文件中讀取一條日志數(shù)據(jù)(即原始日志文件中的一行文本),得到η條日志數(shù)據(jù)組成的原始日志,其中,η為自然數(shù)。
[0073](2)對此η條日志數(shù)據(jù)進(jìn)行時間排序,得到數(shù)據(jù)序列。
[0074](3)將該數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)輸出至中間日志流,假設(shè)第i臺集群服務(wù)器中的日志數(shù)據(jù)的時間最早,則將此條日志數(shù)據(jù)發(fā)送到中間日志流,則數(shù)據(jù)序列中剩余η -1條日志,成為剩余序列。
[0075](4)從第i臺服務(wù)器讀取下一條日志數(shù)據(jù)iNext,將該日志數(shù)據(jù)iNext補入上述剩余的η -1條日志數(shù)據(jù)組成的剩余序列,則剩余序列中又成為有η條日志數(shù)據(jù)的數(shù)據(jù)序列,同樣排序并輸出時間最早的日志數(shù)據(jù)。
[0076]具體地,由于步驟(3)中剩余的η -1條日志數(shù)據(jù)是已經(jīng)排好序的,所以在執(zhí)行步驟(4)的排序時,不需要對η條日志數(shù)據(jù)重新進(jìn)行排序。
[0077]更具體地,可以使用二分查找的算法將下一條日志數(shù)據(jù)iNext插入到剩余序列中。使用二分查找的算法,時間復(fù)雜度降為O(1gn)。
[0078](5 )循環(huán)執(zhí)行步驟(4 ),直至將所述集群服務(wù)器上的原始日志讀取并輸出完畢。
[0079]具體地,在執(zhí)行步驟(5)的過程中,如果某臺集群服務(wù)器的原始日志讀取完畢,則將讀取完畢的集群服務(wù)器對應(yīng)在排序模塊上的日志流關(guān)閉并移除,對剩余服務(wù)器上的原始日志繼續(xù)重復(fù)執(zhí)行步驟(4),直到所有服務(wù)器的原始日志讀取完畢,這樣最終輸出的中間日志流即實現(xiàn)了合并以及排序兩個目的。
[0080]其中,排序模塊上的日志流關(guān)閉并移除并不刪除原始的日志文件,出于安全性考慮,通常原始日志都是存檔備份的。在該實施例中,由于記錄在集群服務(wù)器上的原始日志本身是有時間排序的,日志預(yù)處理服務(wù)器一條一條的從集群服務(wù)器中讀取原始日志,不會破壞每臺集群服務(wù)器上的日志數(shù)據(jù)的時間順序,不僅節(jié)省了多次重復(fù)讀取重復(fù)排序的時間,而且利用了集群服務(wù)器上固有的時間順序的原始日志,也節(jié)省了每次讀取排序的時間,并且將日志數(shù)據(jù)合并以及排序兩個過程結(jié)合為一個過程,將時間復(fù)雜度降為O(1gn),大大地提高了計算效率。
[0081]在本發(fā)明的上述實施例中,將中間日志流分割得到預(yù)處理日志的步驟可以包括:獲取中間日志流中的用戶標(biāo)識;按照用戶標(biāo)識對中間日志流進(jìn)行分割得到預(yù)處理日志。
[0082]具體地,可以將中間日志流按照用戶標(biāo)識進(jìn)行分割,并將分割后的預(yù)處理日志寫入多個預(yù)處理結(jié)果文件,每個所述結(jié)果文件中含有相同的客戶標(biāo)識。此結(jié)果文件可寫入數(shù)據(jù)庫,作為后續(xù)日志統(tǒng)計和分析所用。
[0083]在本發(fā)明的上述實施例中,整個預(yù)處理過程中僅需要單次的文件讀取(即讀取原始日志),以及單次的文件寫入(即寫入預(yù)處理后的預(yù)處理日志)。由于原始日志的數(shù)據(jù)量很大,預(yù)處理后的目標(biāo)日志文件數(shù)量很多,讀取和寫入占據(jù)了整個預(yù)處理大部分的時間,通過減少文件的讀取和寫入次數(shù),節(jié)省了預(yù)處理的時間,提高了預(yù)處理的效率。
[0084]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0085]圖6是根據(jù)本發(fā)明實施例的網(wǎng)站訪問日志的預(yù)處理裝置的結(jié)構(gòu)示意圖。如圖6所示,該裝置可以包括:第一讀取模塊10,用于從集群服務(wù)器中讀取原始日志;合并排序模塊30,用于對原始日志進(jìn)行合并和排序得到中間日志流;分割模塊50,用于將中間日志流分割得到預(yù)處理日志。
[0086]采用本發(fā)明,在從集群服務(wù)器中讀取原始日志之后,將日志合并和排序兩個過程結(jié)合起來,將合并和排序得到的中間日志流分割得到預(yù)處理日志,最后將預(yù)處理日志寫入磁盤,省去了中間文件的生成,僅需要單次的讀取和寫入,提高了日志預(yù)處理的效率。解決了現(xiàn)有技術(shù)中多次讀寫操作使得網(wǎng)站訪問日志文件的預(yù)處理耗時長,導(dǎo)致日志處理的速度慢、效率低的問題,實現(xiàn)了單次讀寫完成對日志數(shù)據(jù)的預(yù)處理,減少了處理時間和處理的中間文件,從而提高了日志的處理效率。
[0087]如圖2至圖3所示的實施例,上述實施例中的裝置可以設(shè)置在日志預(yù)處理服務(wù)器上,用戶(即客戶端)通過負(fù)載均衡器發(fā)送訪問請求,負(fù)載均衡器將請求分發(fā)到后端的集群服務(wù)器(圖中示出的集群服務(wù)器僅作示例說明,其數(shù)量不限于圖中所示的三臺)上,集群服務(wù)器接收到訪問請求,并記錄網(wǎng)站訪問日志生成原始日志。
[0088]然后,日志預(yù)處理服務(wù)器的第一讀取模塊讀取各個集群服務(wù)器下的原始日志,然后將從各集群服務(wù)器中讀取的原始日志輸出經(jīng)合并、排序、分割后的預(yù)處理日志,然后將預(yù)處理日志寫入磁盤。
[0089]根據(jù)本發(fā)明的上述實施例,第一讀取模塊10可以包括:并行讀取模塊,用于以數(shù)據(jù)流方式按行從集群服務(wù)器中并行讀取原始日志;保存模塊,用于將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
[0090]在本發(fā)明的上述實施例中,合并排序模塊30可以包括:排序模塊,用于將日志集中的日志數(shù)據(jù)排序得到數(shù)據(jù)序列;輸出模塊,用于輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù);補充模塊,用于將從來源服務(wù)器讀取的時間最早的日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入數(shù)據(jù)序列;返回執(zhí)行模塊,用于返回執(zhí)行輸出數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)的步驟,直至將日志數(shù)據(jù)輸出完畢,得到中間日志流;其中,將時間最早的日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為來源服務(wù)器。
[0091]具體地,補充模塊可以包括:關(guān)閉模塊,用于在將來源服務(wù)器中的日志數(shù)據(jù)讀取完畢之后,關(guān)閉來源服務(wù)器的日志流。
[0092]在上述實施例中,所有讀取的原始日志形成日志流,將日志數(shù)據(jù)進(jìn)行合并,同時對日志流中的日志數(shù)據(jù)進(jìn)行時間排序得到數(shù)據(jù)序列。在該實施例中,因為每臺集群服務(wù)器上的日志都是按照時間順序產(chǎn)生并記錄的,所以每臺集群服務(wù)器的記錄日志時本身都是按照時間排序的。
[0093]在使用實施例的預(yù)處理方法的系統(tǒng)中,假設(shè)有η臺集群服務(wù)器,則通過如下方法實現(xiàn)上述實施例:
[0094](I)從每臺集群服務(wù)器的日志文件中讀取一條日志數(shù)據(jù)(即原始日志文件中的一行文本),得到η條日志數(shù)據(jù)組成的原始日志,其中,η為自然數(shù)。
[0095](2)對此η條日志數(shù)據(jù)進(jìn)行時間排序,得到數(shù)據(jù)序列。
[0096](3)將該數(shù)據(jù)序列中時間最早的日志數(shù)據(jù)輸出至中間日志流,假設(shè)第i臺集群服務(wù)器中的日志數(shù)據(jù)的時間最早,則將此條日志數(shù)據(jù)發(fā)送到中間日志流,則數(shù)據(jù)序列中剩余η -1條日志,成為剩余序列。
[0097](4)從第i臺服務(wù)器讀取下一條日志數(shù)據(jù)iNext,將該日志數(shù)據(jù)iNext補入上述剩余的η -1條日志數(shù)據(jù)組成的剩余序列,則剩余序列中又成為有η條日志數(shù)據(jù)的數(shù)據(jù)序列,同樣排序并輸出時間最早的日志數(shù)據(jù)。
[0098]具體地,由于步驟(3)中剩余的η -1條日志數(shù)據(jù)是已經(jīng)排好序的,所以在執(zhí)行步驟(4)的排序時,不需要對η條日志數(shù)據(jù)重新進(jìn)行排序。
[0099]更具體地,可以使用二分查找的算法將下一條日志數(shù)據(jù)iNext插入到剩余序列中。使用二分查找的算法,時間復(fù)雜度降為O(1gn)。
[0100](5)循環(huán)執(zhí)行步驟(4),直至將所述集群服務(wù)器上的原始日志讀取并輸出完畢。[0101]具體地,在執(zhí)行步驟(5)的過程中,如果某臺集群服務(wù)器的原始日志讀取完畢,則將讀取完畢的集群服務(wù)器對應(yīng)在排序模塊上的日志流關(guān)閉并移除,對剩余服務(wù)器上的原始日志繼續(xù)重復(fù)執(zhí)行步驟(4),直到所有服務(wù)器的原始日志讀取完畢,這樣最終輸出的中間日志流即實現(xiàn)了合并以及排序兩個目的。
[0102]其中,排序模塊上的日志流關(guān)閉并移除并不刪除原始的日志文件,出于安全性考慮,通常原始日志都是存檔備份的。在該實施例中,由于記錄在集群服務(wù)器上的原始日志本身是有時間排序的,日志預(yù)處理服務(wù)器一條一條的從集群服務(wù)器中讀取原始日志,不會破壞每臺集群服務(wù)器上的日志數(shù)據(jù)的時間順序,不僅節(jié)省了多次重復(fù)讀取重復(fù)排序的時間,而且利用了集群服務(wù)器上固有的時間順序的原始日志,也節(jié)省了每次讀取排序的時間,并且將日志數(shù)據(jù)合并以及排序兩個過程結(jié)合為一個過程,將時間復(fù)雜度降為O(1gn),大大地提高了計算效率。
[0103]在本發(fā)明的上述實施例中,分割模塊50可以包括:獲取模塊,用于獲取中間日志流中的用戶標(biāo)識;分割子模塊,用于按照用戶標(biāo)識對中間日志流進(jìn)行分割得到預(yù)處理日志。
[0104]上述關(guān)閉模塊、獲取模塊和分割子模塊分別對應(yīng)上述方法實施例中的對應(yīng)刪除原始日志和獲取預(yù)處理日志所實現(xiàn)的方法,上述三個模塊與對應(yīng)的步驟所實現(xiàn)的示例和應(yīng)用場景相同,但不限于上述方法實施例所公開的內(nèi)容。上述關(guān)閉模塊、獲取模塊和分割子模塊運行在計算機終端,可以通過軟件或硬件實現(xiàn)。
[0105]采用本發(fā)明的上述實施例,優(yōu)選可以從集群服務(wù)器中讀取一條日志數(shù)據(jù),將該數(shù)據(jù)合并排序得到中間日志流(該實施例中的中間日志流中只有一條數(shù)據(jù)),然后將該數(shù)據(jù)分割寫入磁盤,在這個處理過程中沒有“中間文件”的產(chǎn)生。
[0106]從以上的描述中,可以看出,本發(fā)明實現(xiàn)了如下技術(shù)效果:將日志合并以及排序兩個過程結(jié)合為一個過程,時間復(fù)雜度降為O(1gn),提高了計算效率;采用了數(shù)據(jù)流的方式按行讀取,空間復(fù)雜度是常數(shù)級別,減少了資源占用;先合并、排序再分割,各個服務(wù)器之間用數(shù)據(jù)流傳遞,沒有中間文件的產(chǎn)生,節(jié)省了讀取和寫入文件的時間成本。
[0107]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0108]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種網(wǎng)站訪問日志的預(yù)處理方法,其特征在于,包括: 從集群服務(wù)器中讀取原始日志; 對所述原始日志進(jìn)行合并和排序得到中間日志流; 將所述中間日志流分割得到預(yù)處理日志。
2.根據(jù)權(quán)利要求1所述的預(yù)處理方法,其特征在于,從集群服務(wù)器中讀取原始日志的步驟包括: 以數(shù)據(jù)流方式按行從所述集群服務(wù)器中并行讀取所述原始日志; 將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
3.根據(jù)權(quán)利要求2所述的預(yù)處理方法,其特征在于,對所述原始日志進(jìn)行合并和排序得到中間日志流的步驟包括: 將所述日志集中的所述日志數(shù)據(jù)排序得到數(shù)據(jù)序列; 輸出所述數(shù)據(jù)序列中時間最早的所述日志數(shù)據(jù); 將從來源服務(wù)器讀取的所述時間最早的所述日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入所述數(shù)據(jù)序列; 返回執(zhí)行輸出所述數(shù)據(jù)序列中時間最早的所述日志數(shù)據(jù)的步驟,直至將所述日志數(shù)據(jù)輸出完畢,得到所述中間日志流; 其中,將所述時間最早的所述日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為所述來源服務(wù)器。
4.根據(jù)權(quán)利要求3所述的預(yù)處理方法,其特征在于,將從來源服務(wù)器讀取的所述時間最早的所述日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入所述數(shù)據(jù)序列的步驟還包括: 在將所述來源服務(wù)器中的所述日志數(shù)據(jù)讀取完畢之后,關(guān)閉所述來源服務(wù)器的日志流。
5.根據(jù)權(quán)利要求1至4中任意一項所述的預(yù)處理方法,其特征在于,將所述中間日志流分割得到預(yù)處理日志的步驟包括: 獲取所述中間日志流中的用戶標(biāo)識; 按照所述用戶標(biāo)識對所述中間日志流進(jìn)行分割得到所述預(yù)處理日志。
6.一種網(wǎng)站訪問日志的預(yù)處理裝置,其特征在于,包括: 第一讀取模塊,用于從集群服務(wù)器中讀取原始日志; 合并排序模塊,用于對所述原始日志進(jìn)行合并和排序得到中間日志流; 分割模塊,用于將所述中間日志流分割得到預(yù)處理日志。
7.根據(jù)權(quán)利要求6所述的預(yù)處理裝置,其特征在于,所述第一讀取模塊包括: 并行讀取模塊,用于以數(shù)據(jù)流方式按行從所述集群服務(wù)器中并行讀取所述原始日志; 保存模塊,用于將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
8.根據(jù)權(quán)利要求7所述的預(yù)處理裝置,其特征在于,所述合并排序模塊包括: 排序模塊,用于將所述日志集中的所述日志數(shù)據(jù)排序得到數(shù)據(jù)序列; 輸出模塊,用于輸出所述數(shù)據(jù)序列中時間最早的所述日志數(shù)據(jù); 補充模塊,用于將從來源服務(wù)器讀取的所述時間最早的所述日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入所述數(shù)據(jù)序列; 返回執(zhí)行模塊,用于返回執(zhí)行輸出所述數(shù)據(jù)序列中時間最早的所述日志數(shù)據(jù)的步驟,直至將所述日志數(shù)據(jù)輸出完畢,得到所述中間日志流;其中,將所述時間最早的所述日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為所述來源服務(wù)器。
9.根據(jù)權(quán)利要求8所述的預(yù)處理裝置,其特征在于,所述補充模塊包括: 關(guān)閉模塊,用于在將所述來源服務(wù)器中的所述日志數(shù)據(jù)讀取完畢之后,關(guān)閉所述來源服務(wù)器的日志流。
10.根據(jù)權(quán)利要求6至9中任意一項所述的預(yù)處理裝置,其特征在于,所述分割模塊包括: 獲取模塊,用于獲取所述中間日志流中的用戶標(biāo)識; 分割子模塊,用于按照所述用戶標(biāo)識對所述中間日志流進(jìn)行分割得到所述預(yù)處理
日志。
11.一種網(wǎng)站訪問日志的預(yù)處理系統(tǒng),其特征在于,包括: 多個集群服務(wù)器; 日志預(yù)處理服務(wù)器,與所述多個集群服務(wù)器連接,用于從所述集群服務(wù)器中讀取原始日志,并在對所述原始日志進(jìn)行合并和排序得到中間日志流之后,將所述中間日志流分割得到預(yù)處理日志。
12.根據(jù)權(quán)利要求11所述的預(yù)處理系統(tǒng),其特征在于,所述日志預(yù)處理服務(wù)器包括: 讀取裝置,與所述多個集群服務(wù)器連接,用于以數(shù)據(jù)流方式按行從所述集群服務(wù)器中并行讀取所述原始日志,將并行讀取到的所有日志數(shù)據(jù)保存在日志集中。
13.根據(jù)權(quán)利要求12所述的預(yù)處理系統(tǒng),其特征在于,所述日志預(yù)處理服務(wù)器包括: 處理器,與所述讀取裝置連接,用于將所述日志集中的所述日志數(shù)據(jù)排序得到數(shù)據(jù)序列,并輸出所述數(shù)據(jù)序列中時間最早的所述日志數(shù)據(jù),然后將從來源服務(wù)器讀取的所述時間最早的所述日志數(shù)據(jù)的下一條日志數(shù)據(jù)補入所述數(shù)據(jù)序列,返回執(zhí)行輸出所述數(shù)據(jù)序列中時間最早的所述日志數(shù)據(jù)的步驟,直至將所述日志數(shù)據(jù)輸出完畢,得到所述中間日志流; 其中,將所述時間最早的所述日志數(shù)據(jù)的數(shù)據(jù)來源的服務(wù)器作為所述來源服務(wù)器。
【文檔編號】H04L29/08GK103595571SQ201310591082
【公開日】2014年2月19日 申請日期:2013年11月20日 優(yōu)先權(quán)日:2013年11月20日
【發(fā)明者】何愷鐸, 饒峰云 申請人:北京國雙科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
万源市| 屏山县| 舟山市| 汝阳县| 时尚| 阜新市| 满洲里市| 铁岭市| 东乌珠穆沁旗| 馆陶县| 瑞安市| 河源市| 怀柔区| 游戏| 萝北县| 张家口市| 公主岭市| 海安县| 南宁市| 隆尧县| 内乡县| 乌拉特前旗| 盘山县| 密山市| 海城市| 溆浦县| 五指山市| 崇文区| 开鲁县| 石台县| 涟源市| 大庆市| 安多县| 衡阳县| 肥城市| 阳曲县| 河北省| 黑山县| 柳林县| 永顺县| 古蔺县|