專利名稱:一種用于分布式環(huán)境下的日志記錄方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及分布式系統(tǒng),更特別地,涉及一種用于分布式環(huán)境下的日志記錄方法和設(shè)備。
背景技術(shù):
日志在實(shí)際應(yīng)用中具有重要的意義。它有助于發(fā)現(xiàn)系統(tǒng)中存在的問(wèn)題,以改進(jìn)產(chǎn)品的質(zhì)量。如果對(duì)日志進(jìn)行更深層次的挖掘,還可以了解用戶的潛在需求,為產(chǎn)品開(kāi)發(fā)者提供指導(dǎo)。在大流量、高并發(fā)的分布式系統(tǒng)中,每天會(huì)產(chǎn)生大量的日志數(shù)據(jù)。以某WAP站點(diǎn)為例,該WAP站點(diǎn)具有大約10臺(tái)計(jì)算機(jī)。每天每臺(tái)計(jì)算機(jī)產(chǎn)生的訪問(wèn)日志就多達(dá)大約5GB,再加上其他的統(tǒng)計(jì)日志,這個(gè)數(shù)量是非常龐大的。圖1是現(xiàn)有技術(shù)的分布式系統(tǒng)100的結(jié)構(gòu)示意圖。分布式系統(tǒng)100可以包括日志服務(wù)器101、客戶端集群102-1,. . .,102-N以及統(tǒng)計(jì)服務(wù)器103。日志服務(wù)器101用于收集客戶端集群102-1,. ..,102-N的日志信息。每個(gè)客戶端集群102通常是具有相同屬性(例如,對(duì)應(yīng)于同一業(yè)務(wù))的多個(gè)計(jì)算機(jī)的集合。統(tǒng)計(jì)服務(wù)器103用于對(duì)日志信息進(jìn)行統(tǒng)計(jì)分析。當(dāng)前,客戶端集群102-1,...,102-N白天正常處理日常業(yè)務(wù)。在夜間訪問(wèn)量較少時(shí),由日志服務(wù)器101將客戶端集群102-1,. . .,102-N的日志復(fù)制到統(tǒng)計(jì)服務(wù)器103,再由統(tǒng)計(jì)服務(wù)器103進(jìn)行合并分析。其中,為了復(fù)制日志,日志服務(wù)器101首先向客戶端集群 102-1,...,102-N發(fā)送消息,以表明其需要復(fù)制日志。響應(yīng)于接收到日志服務(wù)器101發(fā)來(lái)的表明其需要復(fù)制日志的消息,客戶端集群102-1,...,102-N將日志發(fā)送給日志服務(wù)器101。應(yīng)當(dāng)注意,圖1只是示例性的,實(shí)際的分布式系統(tǒng)可以包括更多的設(shè)備,日志服務(wù)器數(shù)量、統(tǒng)計(jì)服務(wù)器數(shù)量以及每個(gè)客戶端集群所包括的計(jì)算機(jī)數(shù)量也可以與所示出的不同。隨著業(yè)務(wù)的不斷擴(kuò)張和用戶的不斷增長(zhǎng),站點(diǎn)的訪問(wèn)量也越來(lái)越大。在此情況下, 無(wú)法在規(guī)定的時(shí)間內(nèi)將日志復(fù)制到統(tǒng)計(jì)服務(wù)器,從而致使了日志統(tǒng)計(jì)的不準(zhǔn)確。因此,需要一種能夠克服上述問(wèn)題的日志記錄方法和設(shè)備。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于分布式環(huán)境下的日志記錄方法,包括以下步驟配置日志服務(wù)器和客戶端的日志策略;實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器;以及按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)。根據(jù)本發(fā)明的另一方面,提供了一種用于分布式環(huán)境下的日志記錄設(shè)備,包括用于配置日志服務(wù)器和客戶端的日志策略的裝置;用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的裝置;以及用于按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)的裝置。
本發(fā)明能夠提供高并發(fā)、大容量的日志服務(wù)。同時(shí),其系統(tǒng)易擴(kuò)展,能夠滿足各種不同的需求。本發(fā)明對(duì)客戶端語(yǔ)言沒(méi)有任何限制,可以滿足各種環(huán)境的需求。此外,本發(fā)明還能充分利用帶寬。
根據(jù)以下參照附圖對(duì)本發(fā)明實(shí)施例的詳細(xì)描述,本發(fā)明的其他目的、特征、應(yīng)用和優(yōu)點(diǎn)將變得明顯,其中相同的參考標(biāo)號(hào)代表相同或相應(yīng)的組件或步驟,其中圖1是現(xiàn)有技術(shù)的分布式系統(tǒng)100的結(jié)構(gòu)示意圖;圖2是現(xiàn)有技術(shù)的日志記錄方法200的流程圖;圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的分布式系統(tǒng)300的結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于分布式環(huán)境下的日志記錄方法400的示意性流程圖;以及圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于分布式環(huán)境下的日志記錄設(shè)備500的示意性框圖。
具體實(shí)施例方式下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。圖2是現(xiàn)有技術(shù)的日志記錄方法200的流程圖。方法200開(kāi)始于步驟201。在步驟 201中,分別在客戶端集群102-1,. . .,102-N本地存儲(chǔ)日志。在步驟202中,日志服務(wù)器101 向客戶端集群102-1,. . .,102-N發(fā)送消息,以表明其需要復(fù)制日志。在步驟203中,響應(yīng)于接收到日志服務(wù)器101發(fā)來(lái)的表明其需要復(fù)制日志的消息,客戶端集群102-1,..., 102-N 將日志發(fā)送給日志服務(wù)器101。在步驟204中,日志服務(wù)器101將客戶端集群102-1,..., 102-N的日志復(fù)制到統(tǒng)計(jì)服務(wù)器103。隨后,統(tǒng)計(jì)服務(wù)器103可以對(duì)這些日志進(jìn)行統(tǒng)計(jì)分析。圖3是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的分布式系統(tǒng)300的結(jié)構(gòu)示意圖。分布式系統(tǒng)300 可以包括日志服務(wù)器301、客戶端集群302-1,...,302-N以及統(tǒng)計(jì)服務(wù)器303。其中,日志服務(wù)器301可以位于圖1所示的日志服務(wù)器101中,客戶端集群302-1,. . .,302-N中的每個(gè)客戶的可分別位于圖1所示的客戶端集群102-1,..., 102-N中的每臺(tái)計(jì)算機(jī)上,統(tǒng)計(jì)服務(wù)器303可以與圖1所示的統(tǒng)計(jì)服務(wù)器103是同一個(gè)。參見(jiàn)圖1可知,分布式系統(tǒng)300的物理結(jié)構(gòu)與分布式系統(tǒng)100的物理結(jié)構(gòu)可以是相同的。圖3所示的日志服務(wù)器301可以包括接收器3011、分發(fā)器3012、DB(數(shù)據(jù)庫(kù))并
存儲(chǔ)有若干文件。應(yīng)當(dāng)注意,圖3只是示例性的,實(shí)際的分布式系統(tǒng)300可以包括更多的設(shè)備,日志服務(wù)器數(shù)量、統(tǒng)計(jì)服務(wù)器數(shù)量以及每個(gè)客戶端集群所包括的客戶端數(shù)量也可以與所示出的不同。圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于分布式環(huán)境下的日志記錄方法400的示意性流程圖。方法400開(kāi)始于步驟401。在步驟401中,配置日志服務(wù)器和客戶端的日志策略。 完成對(duì)日志服務(wù)器和客戶端的配置后,方法400進(jìn)行到步驟402。在步驟402中,實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器。接著,方法400進(jìn)行到步驟403。在步驟403中,按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)。分布式日志服務(wù)可以采用CS (客戶端/服務(wù)器)架構(gòu),其分別提供了如圖3所示的日志服務(wù)器301與客戶端302。日志策略可以設(shè)置自定義的日志輸出格式和日志滾動(dòng)周期,根據(jù)不同模塊的需求自定義合適的日志輸出級(jí)別及存儲(chǔ)方式。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,所述日志策略可以包括日志文件存儲(chǔ)名稱、格式和滾動(dòng)周期中的至少一個(gè)。所述日志策略可以體現(xiàn)為配置文件??蛻舳?02提供了不同的編程語(yǔ)言版本,可以運(yùn)行在不同的操作系統(tǒng)和計(jì)算機(jī)架構(gòu)上。無(wú)論部署環(huán)境如何,這些應(yīng)用的源碼都是可移植的。客戶端302采用AMI (異步方法調(diào)用)發(fā)出遠(yuǎn)地調(diào)用,從而使得發(fā)出調(diào)用的線程不會(huì)阻塞??蛻舳?02需要提供日志服務(wù)器301為其所配置的名字。例如 remoteLoggerName = wap_useraccess日志服務(wù)器301可以采用AMD (異步方法分派)技術(shù)。當(dāng)日志服務(wù)器301接收到一個(gè)請(qǐng)求時(shí),接收器3011通常會(huì)把請(qǐng)求數(shù)據(jù)放入隊(duì)列,供分發(fā)器3012隨后處理用。這樣, 日志服務(wù)器301就使接收器3011所使用的分派線程的使用率降到了最低限度,能夠高效地
支持高并發(fā)客戶。分發(fā)器3012會(huì)從隊(duì)列中取出相應(yīng)的請(qǐng)求數(shù)據(jù),然后根據(jù)配置文件中的規(guī)則將數(shù)據(jù)加工處理,放入到相應(yīng)的文件或者數(shù)據(jù)庫(kù)中。分發(fā)器3012的配置文件主要有Logger和Appender。Logger的名字應(yīng)與相應(yīng)的客戶端302的配置一致。Appender則為根據(jù)不同規(guī)則來(lái)處理加工日志數(shù)據(jù)和存放日志數(shù)據(jù)的真正執(zhí)行者。 可以根據(jù)具體的規(guī)則來(lái)實(shí)現(xiàn)Appender接口的不同子類,從而實(shí)現(xiàn)具體需求。換言之,根據(jù)本發(fā)明的分布式系統(tǒng)具有很強(qiáng)的可擴(kuò)展性。例如,DaiIyRolIingFiIeAppender,如果為其配置了以下屬性File = “ /data/logs/useraccess. log" ,DatePattern = “ ‘ . ‘ yyyy-MM-dd“則日志會(huì)以天(滾動(dòng)周期)為單位被轉(zhuǎn)存至文件/data/logs/useraccess. log,并以“年-月-日”格式的后綴來(lái)保存。在圖1和圖2所示的現(xiàn)有技術(shù)中,由于要避開(kāi)白天的高峰,往往需要用凌晨的低峰時(shí)段進(jìn)行日志的同步(即復(fù)制)二4小時(shí)下來(lái),數(shù)GB的日志同步也是風(fēng)險(xiǎn)很高的操作。然而,根據(jù)本發(fā)明,只要客戶端302產(chǎn)生日志,就可以主動(dòng)將其發(fā)送到日志服務(wù)器301,實(shí)現(xiàn)了應(yīng)用分布而日志集中。此外,由于日志的發(fā)送是由客戶端302主動(dòng)發(fā)起,不再需要日志服務(wù)器首先發(fā)送表明其需要復(fù)制日志的消息,因此減少了客戶端與日志服務(wù)器的消息往來(lái),減少了傳輸開(kāi)銷??蛻舳?02將所產(chǎn)生的日志實(shí)時(shí)地發(fā)送給日志服務(wù)器301之后,也可以在本地保留該日志的備份。但是,在客戶端302不本地保留日志備份的情況下,可以一定程度上節(jié)省客戶端302的存儲(chǔ)資源。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,客戶端302可以通過(guò)TCP (傳輸控制協(xié)議)長(zhǎng)連接與日志服務(wù)器301進(jìn)行通信,從而向日志服務(wù)器301發(fā)送日志。但是,由于日志服務(wù)的可靠性要求并不是很高,即使有少量數(shù)據(jù)丟失,也是可以接受的。因此,客戶端302也可以通過(guò) UDP (用戶數(shù)據(jù)報(bào)協(xié)議)來(lái)與日志服務(wù)器301進(jìn)行通信。在客戶端302通過(guò)UDP協(xié)議來(lái)與日志服務(wù)器301進(jìn)行通信的情況下,由于并不需要日志服務(wù)器的確認(rèn),進(jìn)一步減少了傳輸開(kāi)銷。如上所述,日志服務(wù)器301采用AMD (異步方法分派)技術(shù)。當(dāng)日志服務(wù)器301接收到一個(gè)請(qǐng)求時(shí),接收器3011通常會(huì)把請(qǐng)求數(shù)據(jù)放入隊(duì)列,供分發(fā)器3012隨后處理用。這樣,日志服務(wù)器301就使接收器3011所使用的分派線程的使用率降到了最低限度,能夠高效地支持高并發(fā)客戶。分發(fā)器3012會(huì)從隊(duì)列中取出相應(yīng)的請(qǐng)求數(shù)據(jù),然后根據(jù)配置文件中的規(guī)則將數(shù)據(jù)加工處理,放入到相應(yīng)的文件或者數(shù)據(jù)庫(kù)中。AMD技術(shù)使得不需要立即對(duì)接收到的日志進(jìn)行處理,而可以在日志服務(wù)器空閑時(shí)再進(jìn)行處理,從而能夠更有效地利用服務(wù)器資源。如圖3所示,日志服務(wù)器301也可以連接到統(tǒng)計(jì)服務(wù)器303并將日志發(fā)送給統(tǒng)計(jì)服務(wù)器303,由其對(duì)這些日志進(jìn)行統(tǒng)計(jì)分析。這樣,本發(fā)明的方法能夠?qū)θ罩具M(jìn)行統(tǒng)一的集中式的管理和分析,從而減少了分布式環(huán)境下日志合并和網(wǎng)絡(luò)傳輸帶來(lái)的開(kāi)銷。使用了上述遠(yuǎn)程日志后,日志被實(shí)時(shí)地發(fā)送至日志服務(wù)器。日志服務(wù)器會(huì)根據(jù)客戶端屬性將同業(yè)務(wù)的日志實(shí)時(shí)地合并至一起,可以根據(jù)業(yè)務(wù)需求實(shí)時(shí)地對(duì)日志進(jìn)行分析, 按照小時(shí)、天等時(shí)間對(duì)日志進(jìn)行分割打包壓縮。從而減少了夜間的機(jī)群服務(wù)器網(wǎng)絡(luò)壓力和數(shù)據(jù)的冗余。圖5是根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于分布式環(huán)境下的日志記錄設(shè)備500的示意性框圖。日志記錄設(shè)備500包括用于配置日志服務(wù)器和客戶端的日志策略的裝置501、用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的裝置502以及用于按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)的裝置503。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,所述用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的裝置通過(guò)TCP長(zhǎng)連接來(lái)實(shí)現(xiàn)所述發(fā)送。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,所述用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的設(shè)備通過(guò)UDP協(xié)議來(lái)實(shí)現(xiàn)所述發(fā)送。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,所述日志策略包括日志文件存儲(chǔ)名稱、格式和滾動(dòng)周期中的至少一個(gè)。本發(fā)明可以不需要對(duì)現(xiàn)有技術(shù)的分布式系統(tǒng)的物理結(jié)構(gòu)進(jìn)行改變,而只需要在現(xiàn)有的日志服務(wù)器設(shè)備和客戶端設(shè)備的應(yīng)用中增添相應(yīng)的模塊,其可以是相應(yīng)的硬件模塊, 也可以僅僅是一小段軟件代碼。因此,本發(fā)明實(shí)現(xiàn)簡(jiǎn)單,成本低廉。此外,本發(fā)明對(duì)客戶端語(yǔ)言沒(méi)有任何限制,因此具有很高的可移植性。本發(fā)明可以采取完全硬件實(shí)現(xiàn)、完全軟件實(shí)現(xiàn)或者同時(shí)包含硬件單元和軟件單元的實(shí)現(xiàn)的形式。在優(yōu)選的實(shí)施例中,本發(fā)明是以軟件實(shí)現(xiàn)的,該軟件包括但不限于固件、駐留軟件、微代碼等。此外,本發(fā)明可以采取可從計(jì)算機(jī)可用介質(zhì)或計(jì)算機(jī)可讀介質(zhì)訪問(wèn)的計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)提供程序代碼以供計(jì)算機(jī)或任意指令執(zhí)行系統(tǒng)使用或者結(jié)合計(jì)算機(jī)或任意指令執(zhí)行系統(tǒng)而使用。出于本描述的目的,計(jì)算機(jī)可用介質(zhì)或計(jì)算機(jī)可讀介質(zhì)可以是任意切實(shí)可行的裝置,其可以包含、存儲(chǔ)、傳送、傳播或傳輸程序以供計(jì)算機(jī)或任意指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者結(jié)合計(jì)算機(jī)或任意指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。
在前面的詳細(xì)描述中,參考了形成該描述的一部分的附圖,其中通過(guò)圖示示出了可以實(shí)現(xiàn)本發(fā)明的特定實(shí)施例。上面已經(jīng)充分詳細(xì)地描述了這些實(shí)施例及其某些變型,以便本領(lǐng)域的普通技術(shù)人員可以實(shí)現(xiàn)本發(fā)明。應(yīng)當(dāng)理解,在不偏離本發(fā)明的本質(zhì)或范圍的情況下,可以采用其他適合的實(shí)施例,并且可以進(jìn)行邏輯的、機(jī)械的和電學(xué)的改變。例如,在不偏離本發(fā)明的本質(zhì)或范圍的情況下,可以以任何方式對(duì)圖中示出的功能塊進(jìn)行進(jìn)一步的合并或分離。為了避免不必要的細(xì)節(jié),本說(shuō)明書(shū)省略了本領(lǐng)域的普通技術(shù)人員公知的某些信息。因此,以上的詳細(xì)說(shuō)明并非意在限于在此提出的特定形式,相反,其意在覆蓋可以合理地包括在所附權(quán)利要求的本質(zhì)和范圍內(nèi)的那些變更、修改以及等效形式。
權(quán)利要求
1.一種用于分布式環(huán)境下的日志記錄方法,包括以下步驟配置日志服務(wù)器和客戶端的日志策略;實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器;以及按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)。
2.根據(jù)權(quán)利要求1所述的日志記錄方法,其中所述實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的步驟通過(guò)TCP長(zhǎng)連接來(lái)實(shí)現(xiàn)。
3.根據(jù)權(quán)利要求1所述的日志記錄方法,其中所述實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的步驟通過(guò)UDP協(xié)議來(lái)實(shí)現(xiàn)。
4.根據(jù)權(quán)利要求1所述的日志記錄方法,其中所述日志策略包括日志文件存儲(chǔ)名稱、 格式和滾動(dòng)周期中的至少一個(gè)。
5.一種用于分布式環(huán)境下的日志記錄設(shè)備,包括用于配置日志服務(wù)器和客戶端的日志策略的裝置;用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的裝置;以及用于按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)的裝置。
6.根據(jù)權(quán)利要求5所述的日志記錄設(shè)備,其中所述用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的裝置通過(guò)TCP長(zhǎng)連接來(lái)實(shí)現(xiàn)所述發(fā)送。
7.根據(jù)權(quán)利要求5所述的日志記錄設(shè)備,其中所述用于實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器的設(shè)備通過(guò)UDP協(xié)議來(lái)實(shí)現(xiàn)所述發(fā)送。
8.根據(jù)權(quán)利要求5所述的日志記錄設(shè)備,其中所述日志策略包括日志文件存儲(chǔ)名稱、 格式和滾動(dòng)周期中的至少一個(gè)。
全文摘要
一種用于分布式環(huán)境下的日志記錄方法,包括以下步驟配置日志服務(wù)器和客戶端的日志策略;實(shí)時(shí)地將所述客戶端的日志發(fā)送給所述日志服務(wù)器;以及按照所述日志策略對(duì)所述日志服務(wù)器接收到的所述日志進(jìn)行存儲(chǔ)。本發(fā)明能夠提供高并發(fā)、大容量的日志服務(wù)。同時(shí),其系統(tǒng)易擴(kuò)展,能夠滿足各種不同的需求。本發(fā)明對(duì)客戶端語(yǔ)言沒(méi)有任何限制,可以滿足各種環(huán)境的需求。此外,本發(fā)明還能充分利用帶寬。
文檔編號(hào)H04L29/06GK102480489SQ20101058033
公開(kāi)日2012年5月30日 申請(qǐng)日期2010年11月30日 優(yōu)先權(quán)日2010年11月30日
發(fā)明者劉軍, 閆志東 申請(qǐng)人:北京千橡網(wǎng)景科技發(fā)展有限公司