一種日志的處理方法、裝置及服務(wù)器的制造方法
【專利摘要】本發(fā)明提供了一種日志的處理方法、裝置及服務(wù)器,其中方法包括:針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取并實(shí)時(shí)處理;按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理,若是,則轉(zhuǎn)向讀取和處理下個(gè)時(shí)間段的用戶日志文件。本發(fā)明實(shí)現(xiàn)了對(duì)用戶日志數(shù)據(jù)的實(shí)時(shí)讀取和處理,可以盡早地得到有價(jià)值的信息,達(dá)到了高效處理日志的目的。
【專利說明】—種日志的處理方法、裝置及服務(wù)器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其涉及一種日志的處理方法、裝置及服務(wù)器。
【背景技術(shù)】
[0002]在數(shù)據(jù)處理【技術(shù)領(lǐng)域】,通常會(huì)采用一種載體將某種行為相關(guān)的數(shù)據(jù)進(jìn)行記錄下來用于分析,例如,在計(jì)算機(jī)中,這種載體例如可以是用戶行為日志等,一種純文本。根據(jù)提前制定的記錄規(guī)則,該載體記錄了用戶個(gè)體的全部行為,隨著客戶端用戶的增多、用戶行為的復(fù)雜,該載體的容量大小也會(huì)隨之變大。
[0003]舉個(gè)實(shí)際的例子來說,在客戶端發(fā)起點(diǎn)播視頻的操作并加載成功后,客戶端會(huì)將用戶的行為數(shù)據(jù)發(fā)送給服務(wù)器,這些行為數(shù)據(jù)包括:播放操作、播放的內(nèi)容、頻道、播放的碼率和網(wǎng)絡(luò)速率等數(shù)據(jù)。服務(wù)器會(huì)將這些數(shù)據(jù)按照設(shè)定的格式例如W3C的格式存儲(chǔ)為日志,并可以通過讀取這些日志記錄的內(nèi)容,對(duì)用戶的行為數(shù)據(jù)進(jìn)行處理例如進(jìn)行統(tǒng)計(jì)和分析,從而得到有價(jià)值的信息。
[0004]因此,越高效地對(duì)日志進(jìn)行處理,可以越早地得到有價(jià)值的信息,但是,目前在服務(wù)器側(cè),通常用戶日志文件是按時(shí)間段(按小時(shí)或者按天)來生成的,例如每天或者每個(gè)小時(shí)生成一個(gè)用戶日志文件,當(dāng)前一個(gè)小時(shí)內(nèi)的用戶行為數(shù)據(jù)實(shí)時(shí)更新并保持在一個(gè)用戶日志文件中,需要到下一個(gè)小時(shí)到來后才會(huì)生成新的用戶日志文件,也就是說須等到下個(gè)小時(shí)到來后,上一個(gè)小時(shí)的用戶日志文件中的數(shù)據(jù)才會(huì)停止更新。當(dāng)前日志處理的方式是在一個(gè)用戶日志文件停止更新以后才開始處理該用戶日志文件,這樣,對(duì)于用戶行為數(shù)據(jù)的處理,相對(duì)這些數(shù)據(jù)的產(chǎn)生,發(fā)生了一個(gè)小時(shí)的延遲,無法做到高效地對(duì)用戶的行為數(shù)據(jù)進(jìn)行實(shí)時(shí)的處理。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種日志的處理方法、裝置及服務(wù)器。
[0006]基于上述問題,本發(fā)明實(shí)施例提供的一種日志的處理方法,包括:
[0007]針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取并實(shí)時(shí)處理;
[0008]按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理,若是,則轉(zhuǎn)向讀取和處理下個(gè)時(shí)間段的用戶日志文件。
[0009]本發(fā)明實(shí)施例提供的一種日志的處理裝置,包括:
[0010]實(shí)時(shí)讀取模塊,用于針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀??;以及當(dāng)判斷模塊判斷完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理時(shí),轉(zhuǎn)向讀取下個(gè)時(shí)間段的用戶日志文件;
[0011]實(shí)時(shí)處理模塊,用于對(duì)實(shí)時(shí)讀取模塊讀取的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理;
[0012]判斷模塊,用于按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
[0013]本發(fā)明實(shí)施例提供的服務(wù)器,包括本發(fā)明實(shí)施例提供的上述日志的處理裝置。
[0014]本發(fā)明實(shí)施例的有益效果包括:
[0015]本發(fā)明實(shí)施例提供的日志的處理方法、裝置及服務(wù)器,在當(dāng)前時(shí)間段用戶日志文件生成并不斷更新的過程中,對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,不斷進(jìn)行讀取,并對(duì)讀取的日志數(shù)據(jù)進(jìn)行實(shí)時(shí)的處理,直到完成了當(dāng)前時(shí)間段內(nèi)用戶日志文件的讀取和處理,轉(zhuǎn)向下個(gè)時(shí)間段的用戶日志文件的讀取和處理,這樣,可以實(shí)現(xiàn)對(duì)用戶日志數(shù)據(jù)的實(shí)時(shí)讀取和處理,可以盡早地得到有價(jià)值的信息,達(dá)到了高效處理日志的目的,克服了現(xiàn)有技術(shù)中對(duì)用戶日志文件延遲處理帶來的弊端。
[0016]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】
【附圖說明】
[0017]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0018]圖1為本發(fā)明實(shí)施例提供的日志的處理方法的流程圖;
[0019]圖2為本發(fā)明實(shí)施例提供的日志的處理方法的一種實(shí)例的流程圖;
[0020]圖3為本發(fā)明實(shí)施例提供的實(shí)例中讀取用戶日志文件步驟的流程圖;
[0021]圖4為本發(fā)明實(shí)施例提供的日志的處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0022]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0023]下面結(jié)合說明書附圖,對(duì)本發(fā)明實(shí)施例提供的一種日志的處理方法、裝置及服務(wù)器的【具體實(shí)施方式】進(jìn)行說明。
[0024]本發(fā)明實(shí)施例提供的一種日志的處理方法,如圖1所示,具體包括以下步驟:
[0025]S11、針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取并實(shí)時(shí)處理;
[0026]S12、按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理;若是,則執(zhí)行下述S13,否則,轉(zhuǎn)向Sll ;
[0027]S13、讀取和處理下個(gè)時(shí)間段的用戶日志文件。
[0028]本發(fā)明實(shí)施例中提及的當(dāng)前時(shí)間段的用戶日志文件,是指在當(dāng)前時(shí)間段內(nèi)產(chǎn)生的用戶日志數(shù)據(jù)生成的用戶日志文件,下個(gè)時(shí)間段的用戶日志文件的含義以此類推。
[0029]在本發(fā)明實(shí)施例中,用戶日志文件按照時(shí)間來生成的,在同一個(gè)時(shí)間段內(nèi)的日志數(shù)據(jù),會(huì)保存在一個(gè)用戶日志文件中,例如IIS日志,將一個(gè)小時(shí)內(nèi)發(fā)生的用戶日志數(shù)據(jù)保存在同一個(gè)用戶日志文件中,假設(shè)當(dāng)前時(shí)間是8月29號(hào)11點(diǎn)O分第O秒,那么11點(diǎn)之前的數(shù)據(jù)會(huì)寫入到以10點(diǎn)為標(biāo)記的用戶日志文件中,11點(diǎn)以后新到達(dá)的用戶日志數(shù)據(jù)都會(huì)寫入到新生成的以11點(diǎn)為標(biāo)記的文件中,按照現(xiàn)有技術(shù)的做法,需要當(dāng)前時(shí)間達(dá)到11點(diǎn)以后即以10點(diǎn)為標(biāo)記的用戶日志文件不再更新之后,再對(duì)其進(jìn)行處理,而本發(fā)明實(shí)施例提供的日志的處理方法,在當(dāng)前時(shí)間段用戶日志文件生成并不斷更新的過程中,對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,不斷進(jìn)行讀取,并對(duì)讀取的日志數(shù)據(jù)進(jìn)行實(shí)時(shí)的處理,直到完成了當(dāng)前時(shí)間段內(nèi)用戶日志文件的讀取和處理,轉(zhuǎn)向下個(gè)時(shí)間段的用戶日志文件的讀取和處理,這樣,可以實(shí)現(xiàn)對(duì)用戶日志數(shù)據(jù)的實(shí)時(shí)讀取和處理,例如前述以10點(diǎn)為標(biāo)記的用戶日志文件,在其內(nèi)容不再更新后的短暫時(shí)間內(nèi),就已經(jīng)完成了用戶日志數(shù)據(jù)的讀取和處理,而對(duì)這些用戶行為數(shù)據(jù)的及時(shí)處理,可以盡早地得到有價(jià)值的信息,達(dá)到了高效處理日志的目的。
[0030]當(dāng)然,本發(fā)明實(shí)施例中,用戶行為日志格式可以采用IIS W3C格式的日志,但不局限于IIS W3C格式的日志,日志的載體是.log日志文件,但不局限于.log文件,也可以是其他后綴名的純文本文件。
[0031]為了更好地說明本發(fā)明實(shí)施例提供的上述日志的處理方法,下面分別對(duì)上述各個(gè)步驟進(jìn)行詳細(xì)的說明。
[0032]進(jìn)一步地,上述流程中Sll中,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取的步驟,在具體實(shí)施時(shí),可以通過下述過程實(shí)現(xiàn):
[0033]周期性地對(duì)當(dāng)前時(shí)間段的用戶日志文件進(jìn)行讀取,并在每次讀取時(shí),根據(jù)已完成讀取的數(shù)據(jù)量,確定本次讀取的起點(diǎn)位置,然后從本次讀取的起點(diǎn)位置開始讀取,并在本次讀取結(jié)束時(shí),記錄已完成讀取的數(shù)據(jù)量。
[0034]上述增量讀取的方式,即從原則上來說,就是指從上次讀取的結(jié)束位置作為下次讀取的開始位置,但是,由于在實(shí)際應(yīng)用時(shí),由于用戶日志文件中包含的是一行一行的用戶行為數(shù)據(jù),每一行都是一條完整的用戶行為數(shù)據(jù)(只有對(duì)完整的用戶行為數(shù)據(jù)進(jìn)行處理才有意義),但是用戶日志文件又存在讀寫的并行處理過程,即:日志服務(wù)器(例如IIS服務(wù)器)不斷向用戶日志文件中寫入用戶日志數(shù)據(jù)的過程中,同時(shí)又會(huì)不斷地讀取日志并進(jìn)行實(shí)時(shí)處理,這樣,容易出現(xiàn)這樣一種情況即:一行用戶行為數(shù)據(jù)還未寫入完整,就被讀取出來,導(dǎo)致斷行,這種斷行的用戶行為數(shù)據(jù)對(duì)用戶行為的分析是沒有意義的,因此,為了避免斷行對(duì)用戶日志文件處理過程的影響,在本發(fā)明實(shí)施例中,在上述Sll中,每次讀取結(jié)束時(shí),除了需要記錄已讀取的數(shù)據(jù)量(累積到本次讀取時(shí)已完成讀取的數(shù)據(jù)量)之外,還需要記錄下本次讀取的最后一行數(shù)據(jù)的數(shù)據(jù)量大小。
[0035]并且,相應(yīng)地,上述Sll中,每次讀取時(shí),根據(jù)下述公式確定本次讀取的起點(diǎn)位置:
[0036]起點(diǎn)位置=已完成讀取的數(shù)據(jù)量-上次讀取的最后一行的數(shù)據(jù)量。
[0037]用戶日志文件中包含的一條一條的用戶行為數(shù)據(jù)彼此是以特定的分隔符來分隔的,例如回車換行符等等,本發(fā)明實(shí)施例對(duì)此不做限定,對(duì)于本次讀取的最后一行數(shù)據(jù)的數(shù)據(jù)量大小,可以通過讀取的最后一個(gè)字節(jié)到最近的一個(gè)分隔符所經(jīng)歷的字節(jié)數(shù)來確定。
[0038]上述做法,在每次讀取時(shí),都將起點(diǎn)位置提前到上次讀取的數(shù)據(jù)中最后一個(gè)分隔符之后,能夠保證每次讀取的用戶日志數(shù)據(jù)都能夠被完整地讀取和處理,避免了讀取用戶日志文件時(shí)發(fā)生末尾斷行情況對(duì)最終的用戶行為分析的影響。
[0039]舉例來說,在當(dāng)?shù)谝淮巫x取日志文件時(shí),讀取的數(shù)據(jù)量為50字節(jié),最后一行的數(shù)據(jù)量大小為5字節(jié),假設(shè)第一次讀取的起始位置為0,則下一次即第二次讀取的起始位置為50-5 = 45字節(jié),以此類推。
[0040]進(jìn)一步地,在上述Sll中,在確定本次讀取的起點(diǎn)位置之后,還可以判斷本次讀取時(shí)當(dāng)前用戶日志文件的數(shù)據(jù)增加量(較已讀取的數(shù)據(jù)量)是否超過設(shè)定的讀取閾值;如果超過,則本次讀取時(shí)只讀取等于該讀取閾值的數(shù)據(jù)量。
[0041]進(jìn)一步地,上述Sll中,對(duì)用戶日志文件中的數(shù)據(jù)進(jìn)行實(shí)時(shí)讀取后,進(jìn)行實(shí)時(shí)處理的過程包括但不限于:對(duì)用戶日志文件中的日志數(shù)據(jù)進(jìn)行解析,然后構(gòu)建數(shù)據(jù)對(duì)象,將數(shù)據(jù)對(duì)象寫入數(shù)據(jù)庫等操作,對(duì)用戶日志文件中的數(shù)據(jù)進(jìn)行處理的方式可以參照現(xiàn)有技術(shù),在此不再贅述。
[0042]進(jìn)一步地,本發(fā)明實(shí)施例提供的日志處理方法中的步驟S12中,可以通過下述方式來判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志文件的讀取和處理:
[0043]當(dāng)判斷當(dāng)前時(shí)間距離當(dāng)前用戶日志文件所屬時(shí)間段已達(dá)到設(shè)定的第一時(shí)間閾值,和/或當(dāng)前用戶日志文件已超過設(shè)定的第二時(shí)間閾值未更新,則確定已完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
[0044]舉例來說,假設(shè)當(dāng)前時(shí)間為11點(diǎn)04分,則判斷當(dāng)前時(shí)間距離當(dāng)前用戶日志文件所屬的時(shí)間段(10點(diǎn))已滿足設(shè)定的時(shí)間閾值(例如I小時(shí)03分)則確定已完成以10點(diǎn)為標(biāo)記的用戶日志文件的讀取和處理。
[0045]上述兩個(gè)條件也可以同時(shí)用,也就是兩個(gè)條件都必須同時(shí)滿足,既滿足時(shí)間達(dá)到設(shè)定的閾值,又滿足在一定時(shí)間范圍內(nèi)不再發(fā)生數(shù)據(jù)的更新,才判斷已完成了當(dāng)前時(shí)間段內(nèi)用戶日志文件的讀取和處理。
[0046]為了更好地說明本發(fā)明實(shí)施例提供的上述日志的處理方法,下面以一個(gè)簡單的實(shí)例對(duì)其進(jìn)行說明:
[0047]如圖2所示的流程圖,該實(shí)例包括如下步驟:
[0048]S21、初始化數(shù)據(jù)集合以及程序執(zhí)行期間需要使用的內(nèi)部變量。
[0049]S22、讀取文件地址列表(由于用戶日志文件可能是多個(gè),需要各用戶日志文件的地址)的配置信息。
[0050]S23、服務(wù)器生成文件名。例如u_exl4082910.log,u_ex是固定前綴,14082910代表14年8月29日10點(diǎn)的日志。
[0051]S24、讀取文件,按照文件地址列表輪詢各用戶日志文件并處理;
[0052]S25、判斷文件列表中的各文件是否已經(jīng)讀完,若是,則轉(zhuǎn)向S26,否則繼續(xù)執(zhí)行S24 ;
[0053]S26、當(dāng)前小時(shí)內(nèi)的文件列表中的各用戶日志文件全部處理完畢后,判斷是否需要讀取下個(gè)時(shí)間段的日志文件,若是,則轉(zhuǎn)向讀取下個(gè)時(shí)間段的用戶日志文件的配置信息,否貝U,繼續(xù)執(zhí)行S24;
[0054]在本步驟S26中,判斷是否需要讀取下個(gè)時(shí)間段的日志文件,可以使用如下策略:當(dāng)系統(tǒng)時(shí)間已經(jīng)到達(dá)下個(gè)時(shí)間段,假設(shè)已到達(dá)下個(gè)小時(shí)(當(dāng)前日志文件的文件名變量年月日小時(shí)加I等于當(dāng)前時(shí)間的年月日小時(shí)),且輪詢每個(gè)用戶日志文件列表的文件大小的次數(shù)已超過一定的閾值沒有發(fā)生改變。假設(shè)閾值=10,假設(shè)當(dāng)前時(shí)間已經(jīng)進(jìn)入下個(gè)小時(shí),且所有的日志文件大小都輪詢了 10次都沒有發(fā)生改變,換言之,所有日志文件在一定的時(shí)間段內(nèi)不再發(fā)生改變,那么可以確定已處理完當(dāng)前一個(gè)小時(shí)內(nèi)的用戶日志,可以讀取下個(gè)小時(shí)的用戶日志文件了。
[0055]其中,上述S24中讀取用戶日志文件并處理的步驟,可以通過如圖3所示的流程實(shí)現(xiàn)。
[0056]在圖3所示的流程中,整個(gè)用戶日志文件內(nèi)的數(shù)據(jù)是以數(shù)據(jù)流的方式不斷產(chǎn)生的(以下簡稱為流),在生成同一個(gè)用戶日志文件的時(shí)間段內(nèi),該數(shù)據(jù)流會(huì)不斷發(fā)生變化(增量變化)。
[0057]具體來說,如圖3所示,該流程包括:
[0058]S301、初始化數(shù)據(jù)集合以及需要使用的內(nèi)部變量;
[0059]S302、生成讀取文件地址;
[0060]S303、根據(jù)文件路徑判斷是網(wǎng)絡(luò)文件(通過外網(wǎng)的方式訪問)還是本地文件,如果是網(wǎng)絡(luò)文件則執(zhí)行S304,如果是本地文件則執(zhí)行S305 ;
[0061]S304、初始化服務(wù)器流變量;
[0062]S305、則初始化文件流變量;
[0063]S306、判斷流變量相比于已經(jīng)處理的字節(jié)數(shù)是否有變化,如果沒有變化說明文件沒有被更新,執(zhí)行S307 ;如果流大小發(fā)生了變化,則執(zhí)行S309 ;
[0064]S307、判斷是否應(yīng)該讀取下個(gè)用戶日志文件(即下個(gè)時(shí)間段的用戶日志文件),如果是,則轉(zhuǎn)向S308 ;否則,結(jié)束本流程(即不再讀取當(dāng)前時(shí)間段的用戶日志文件,繼續(xù)讀取下一個(gè)時(shí)間段的用戶日志文件);
[0065]S308、記錄讀取的次數(shù),該變量累計(jì)到閾值(10次),用于圖2中S25的判斷。之后跳出當(dāng)前時(shí)間段的用戶日志文件的讀取,繼續(xù)處理下個(gè)用戶日志文件;
[0066]S309、如果流大小發(fā)生了變化,那么需要重新解析上次的最后一行數(shù)據(jù)(避免最后一行不完整的問題),計(jì)算本次讀取的起點(diǎn)位置=已讀字節(jié)數(shù)-上次讀取的最后一行字節(jié)數(shù),繼續(xù)執(zhí)行S310 ;
[0067]S310、計(jì)算流增加的字節(jié)數(shù)(即本次需要處理的流的數(shù)據(jù)量):
[0068]本次需要處理的流的數(shù)據(jù)量=最新流大小-已處理流的大小-上次處理的最后一行字節(jié)數(shù)。
[0069]判斷該需要處理的流的數(shù)據(jù)量是否大于設(shè)定的閾值,如果需要處理的流的字節(jié)數(shù)大于閾值,則轉(zhuǎn)向S311,閾值設(shè)為2147483648 (2G),則意味著最大一次只處理2G的數(shù)據(jù)量;否則,直接執(zhí)行S312;
[0070]S311、設(shè)定本次讀取的數(shù)據(jù)流的數(shù)據(jù)量等于該閾值,繼續(xù)執(zhí)行S312 ;
[0071]S312、從流最新的起點(diǎn)位置開始讀取,如果是第一次則從位置O開始讀取,之后則從增量部分開始讀?。?br>
[0072]S313、判斷是否讀取到當(dāng)前用戶日志文件內(nèi)容的最后一行或者到達(dá)處理的閾值(流的增量部分大于設(shè)定的閾值的情況下),若是,則執(zhí)行S314、否則,執(zhí)行S316?S318 ;
[0073]S314、記錄已讀字節(jié)數(shù)和最后一行字節(jié)數(shù),然后執(zhí)行S315 ;
[0074]S315、計(jì)算下次去讀取起點(diǎn)位置:
[0075]下次讀取的起點(diǎn)=本次讀取的起點(diǎn)+已讀取字節(jié)數(shù);
[0076]S316、每讀取一行流數(shù)據(jù),解析數(shù)據(jù);
[0077]S317、然后構(gòu)建數(shù)據(jù)對(duì)象;
[0078]S318、把對(duì)象寫入數(shù)據(jù)庫。
[0079]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供了一種日志的處理裝置及服務(wù)器,由于這些裝置和服務(wù)器所解決問題的原理與前述日志的處理方法相似,因此該裝置和服務(wù)器的實(shí)施可以參見前述方法的實(shí)施,重復(fù)之處不再贅述。
[0080]如圖4所示,本發(fā)明實(shí)施例提供的日志的處理裝置,包括:
[0081]實(shí)時(shí)讀取模塊401,用于針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取;以及當(dāng)判斷模塊判斷完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理時(shí),轉(zhuǎn)向讀取下個(gè)時(shí)間段的用戶日志文件;
[0082]實(shí)時(shí)處理模塊402,用于對(duì)實(shí)時(shí)讀取模塊讀取的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理;
[0083]判斷模塊403,用于按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
[0084]進(jìn)一步地,上述實(shí)時(shí)讀取模塊401,具體用于周期性地對(duì)當(dāng)前時(shí)間段的用戶日志文件進(jìn)行讀取,并在每次讀取時(shí),根據(jù)已完成讀取的數(shù)據(jù)量,確定本次讀取的起點(diǎn)位置,從所述本次讀取的起點(diǎn)位置開始讀取,并在本次讀取結(jié)束時(shí),記錄已完成讀取的數(shù)據(jù)量。
[0085]進(jìn)一步地,上述實(shí)時(shí)讀取模塊401,還用于在本次讀取結(jié)束時(shí),記錄本次讀取的最后一行的數(shù)據(jù)量;以及根據(jù)下述公式確定所述本次讀取的起點(diǎn)位置:起點(diǎn)位置=已完成讀取的數(shù)據(jù)量-上次讀取的最后一行的數(shù)據(jù)量。
[0086]進(jìn)一步地,上述實(shí)時(shí)讀取模塊401,還用于在確定本次讀取的起點(diǎn)位置之后,判斷本次讀取時(shí)當(dāng)前用戶日志文件的數(shù)據(jù)增加量是否超過設(shè)定的讀取閾值;若超過,則本次讀取時(shí)只讀取等于所述讀取閾值的數(shù)據(jù)量。
[0087]進(jìn)一步地,上述判斷模塊403,具體用于當(dāng)判斷當(dāng)前時(shí)間距離所述當(dāng)前用戶日志文件所屬時(shí)間段已達(dá)到設(shè)定的第一時(shí)間閾值,和/或當(dāng)前用戶日志文件已超過設(shè)定的第二時(shí)間閾值未更新,則確定已完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
[0088]本發(fā)明實(shí)施例還提供了一種服務(wù)器,該服務(wù)器包括本發(fā)明實(shí)施例提供的上述的日志的處理裝置。
[0089]在此提供的算法和顯示不與任何特定計(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í)施方式。
[0090]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
[0091]類似地,應(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í)施例。
[0092]本領(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è)特征可以由提供相同、等同或相似目的的替代特征來代替。
[0093]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
[0094]本發(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í)施例的日志的處理裝置及服務(wù)器中的一些或者全部部件的一些或者全部功能。本發(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)上提供,或者以任何其他形式提供。
[0095]應(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)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
[0096]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種日志的處理方法,其特征在于,包括: 針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取并實(shí)時(shí)處理; 按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理,若是,則轉(zhuǎn)向讀取和處理下個(gè)時(shí)間段的用戶日志文件。
2.如權(quán)利要求1所述的方法,其特征在于,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀取,具體包括: 周期性地對(duì)當(dāng)前時(shí)間段的用戶日志文件進(jìn)行讀取,并在每次讀取時(shí),根據(jù)已完成讀取的數(shù)據(jù)量,確定本次讀取的起點(diǎn)位置,從所述本次讀取的起點(diǎn)位置開始讀取,并在本次讀取結(jié)束時(shí),記錄已完成讀取的數(shù)據(jù)量。
3.如權(quán)利要求2所述的方法,其特征在于,在本次讀取結(jié)束時(shí),還包括:記錄本次讀取的最后一行的數(shù)據(jù)量; 相應(yīng)地,所述根據(jù)已完成讀取的數(shù)據(jù)量,確定本次讀取的起點(diǎn)位置,包括: 根據(jù)下述公式確定所述本次讀取的起點(diǎn)位置:起點(diǎn)位置=已完成讀取的數(shù)據(jù)量-上次讀取的最后一行的數(shù)據(jù)量。
4.如權(quán)利要求2或3所述的方法,其特征在于,在確定本次讀取的起點(diǎn)位置之后,還包括: 判斷本次讀取時(shí)當(dāng)前用戶日志文件的數(shù)據(jù)增加量是否超過設(shè)定的讀取閾值; 若超過,則本次讀取時(shí)只讀取等于所述讀取閾值的數(shù)據(jù)量。
5.如權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理,具體包括: 當(dāng)判斷當(dāng)前時(shí)間距離所述當(dāng)前用戶日志文件所屬時(shí)間段已達(dá)到設(shè)定的第一時(shí)間閾值,和/或當(dāng)前用戶日志文件已超過設(shè)定的第二時(shí)間閾值未更新,則確定已完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
6.一種日志的處理裝置,其特征在于,包括: 實(shí)時(shí)讀取模塊,用于針對(duì)當(dāng)前時(shí)間段的用戶日志文件,按照增量的方式,對(duì)當(dāng)前時(shí)間段內(nèi)用戶日志文件內(nèi)的數(shù)據(jù)進(jìn)行不斷進(jìn)行讀??;以及當(dāng)判斷模塊判斷完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理時(shí),轉(zhuǎn)向讀取下個(gè)時(shí)間段的用戶日志文件; 實(shí)時(shí)處理模塊,用于對(duì)實(shí)時(shí)讀取模塊讀取的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理; 判斷模塊,用于按照預(yù)設(shè)的條件,判斷是否完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
7.如權(quán)利要求6所述的裝置,其特征在于,所述實(shí)時(shí)讀取模塊,具體用于周期性地對(duì)當(dāng)前時(shí)間段的用戶日志文件進(jìn)行讀取,并在每次讀取時(shí),根據(jù)已完成讀取的數(shù)據(jù)量,確定本次讀取的起點(diǎn)位置,從所述本次讀取的起點(diǎn)位置開始讀取,并在本次讀取結(jié)束時(shí),記錄已完成讀取的數(shù)據(jù)量。
8.如權(quán)利要求7所述的裝置,其特征在于,所述實(shí)時(shí)讀取模塊,還用于在本次讀取結(jié)束時(shí),記錄本次讀取的最后一行的數(shù)據(jù)量;以及根據(jù)下述公式確定所述本次讀取的起點(diǎn)位置:起點(diǎn)位置=已完成讀取的數(shù)據(jù)量-上次讀取的最后一行的數(shù)據(jù)量。
9.如權(quán)利要求7或8所述的裝置,其特征在于,所述實(shí)時(shí)讀取模塊,還用于在確定本次讀取的起點(diǎn)位置之后,判斷本次讀取時(shí)當(dāng)前用戶日志文件的數(shù)據(jù)增加量是否超過設(shè)定的讀取閾值;若超過,則本次讀取時(shí)只讀取等于所述讀取閾值的數(shù)據(jù)量。
10.如權(quán)利要求7所述的裝置,其特征在于,所述判斷模塊,具體用于當(dāng)判斷當(dāng)前時(shí)間距離所述當(dāng)前用戶日志文件所屬時(shí)間段已達(dá)到設(shè)定的第一時(shí)間閾值,和/或當(dāng)前用戶日志文件已超過設(shè)定的第二時(shí)間閾值未更新,則確定已完成了當(dāng)前時(shí)間段內(nèi)用戶日志的讀取和處理。
11.一種服務(wù)器,其特征在于,所述服務(wù)器包括如權(quán)利要求6-10任一項(xiàng)所述的日志的處理裝置。
【文檔編號(hào)】H04N21/258GK104283719SQ201410589171
【公開日】2015年1月14日 申請(qǐng)日期:2014年10月28日 優(yōu)先權(quán)日:2014年10月28日
【發(fā)明者】郭濤, 楊基彬, 吳充 申請(qǐng)人:北京國雙科技有限公司