本發(fā)明涉及通信網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種標(biāo)識符生成裝置及方法。
背景技術(shù):
在互聯(lián)網(wǎng)應(yīng)用中,分布式處理應(yīng)用越來越廣泛,其中經(jīng)常會涉及到一個問題,就是應(yīng)用服務(wù)器中訪問請求對應(yīng)的ID(IDentifier,標(biāo)識符)的生成問題。在集中式處理場景下,需要保證該ID在單節(jié)點上唯一即可。但是在分布式環(huán)境,需要保證該ID在多個節(jié)點上都唯一。所以,需要建立一定的策略來保證每個節(jié)點生成的ID不會重復(fù)。
當(dāng)前技術(shù)中,通常采用UUID(Universally Unique Identifier,通用唯一識別碼)來保證每個節(jié)點生成的ID不會重復(fù)。UUID是指在一臺機(jī)器上生成的數(shù)字,它保證對在同一時空中所有機(jī)器的UUID都是唯一的。
然而,采用UUID作為唯一標(biāo)識符的做法會存在以下問題:一、一個UUID由32個16進(jìn)制數(shù)構(gòu)成,從而導(dǎo)致UUID所形成的標(biāo)識符長度過長,可讀性較差。二、在生成UUID的過程中要使用強(qiáng)隨機(jī)數(shù),性能較差。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提出一種標(biāo)識符生成裝置及方法,旨在解決現(xiàn)有的應(yīng)用服務(wù)器中訪問請求對應(yīng)的標(biāo)識符長度長,性能差的技術(shù)問題。
為實現(xiàn)上述目的,本發(fā)明提供的一種標(biāo)識符生成裝置,所述標(biāo)識符生成裝置包括:
獲取模塊,用于當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取預(yù)先存儲的所述應(yīng)用的啟動時間和所述應(yīng)用服務(wù)器的網(wǎng)際互聯(lián)協(xié)議IP地址;
編碼模塊,用于對所述啟動時間和IP地址進(jìn)行編碼,得到編碼后的所述啟動時間和IP地址;
所述獲取模塊還用于獲取上一訪問請求標(biāo)識符中的變量,按照預(yù)設(shè)規(guī)則改變所述變量對應(yīng)的值,得到新的變量;
拼接模塊,用于將所述新的變量、編碼后的所述啟動時間和IP地址進(jìn)行拼接,以生成所述訪問請求的標(biāo)識符。
可選地,所述編碼模塊包括:
第一轉(zhuǎn)換單元,用于將所述啟動時間和IP地址按照對應(yīng)的編碼規(guī)則轉(zhuǎn)換為16進(jìn)制的數(shù)字;
第二轉(zhuǎn)換單元,用于將所述16進(jìn)制的數(shù)字轉(zhuǎn)換為64進(jìn)制的數(shù)字,得到編碼后的所述啟動時間和IP地址。
可選地,所述標(biāo)識符生成裝置還包括:
設(shè)置模塊,用于設(shè)置所述標(biāo)識符的分隔符和所述新的變量、編碼后的所述啟動時間和IP地址的拼接順序;
所述拼接模塊還用于根據(jù)所述分隔符和所述拼接順序?qū)⑺鲂碌淖兞?、編碼后的所述啟動時間和IP地址進(jìn)行拼接,以生成所述訪問請求的標(biāo)識符。
可選地,所述獲取模塊還用于獲取所述訪問請求對應(yīng)的操作指令,確定所述訪問請求對應(yīng)的操作指令的個數(shù);
所述標(biāo)識符生成裝置還包括存儲模塊,用于若所述訪問請求至少對應(yīng)著兩個操作指令,則根據(jù)所述訪問請求的標(biāo)識符,將各個操作指令對應(yīng)的日志進(jìn)行串聯(lián)存儲。
可選地,所述獲取模塊還用于當(dāng)偵測到所述應(yīng)用服務(wù)器中應(yīng)用的啟動操作時,獲取所述應(yīng)用的啟動時間和所述應(yīng)用服務(wù)器的IP地址,并存儲所述啟動時間和IP地址。
此外,為實現(xiàn)上述目的,本發(fā)明還提出一種標(biāo)識符生成方法,所述標(biāo)識符生成方法包括:
當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取預(yù)先存儲的所述應(yīng)用的啟動時間和所述應(yīng)用服務(wù)器的網(wǎng)際互聯(lián)協(xié)議IP地址;
對所述啟動時間和IP地址進(jìn)行編碼,得到編碼后的所述啟動時間和IP地址;
獲取上一訪問請求標(biāo)識符中的變量,按照預(yù)設(shè)規(guī)則改變所述變量對應(yīng)的值,得到新的變量;
將所述新的變量、編碼后的所述啟動時間和IP地址進(jìn)行拼接,以生成所述訪問請求的標(biāo)識符。
可選地,所述對所述啟動時間和IP地址進(jìn)行編碼,得到編碼后的所述啟動時間和IP地址的步驟包括:
將所述啟動時間和IP地址按照對應(yīng)的編碼規(guī)則轉(zhuǎn)換為16進(jìn)制的數(shù)字;
將所述16進(jìn)制的數(shù)字轉(zhuǎn)換為64進(jìn)制的數(shù)字,得到編碼后的所述啟動時間和IP地址。
可選地,所述獲取上一訪問請求標(biāo)識符中的變量,按照預(yù)設(shè)規(guī)則改變所述變量對應(yīng)的值,得到新的變量的步驟之后,還包括:
設(shè)置所述標(biāo)識符的分隔符和所述新的變量、編碼后的所述啟動時間和IP地址的拼接順序;
所述將所述新的變量、編碼后的所述啟動時間和IP地址進(jìn)行拼接,以生成所述訪問請求的標(biāo)識符的步驟包括:
根據(jù)所述分隔符和所述拼接順序?qū)⑺鲂碌淖兞俊⒕幋a后的所述啟動時間和IP地址進(jìn)行拼接,以生成所述訪問請求的標(biāo)識符。
可選地,所述將所述新的變量、編碼后的所述啟動時間和IP地址進(jìn)行拼接,以生成所述訪問請求的標(biāo)識符的步驟之后,還包括:
獲取所述訪問請求對應(yīng)的操作指令,確定所述訪問請求對應(yīng)的操作指令的個數(shù);
若所述訪問請求至少對應(yīng)著兩個操作指令,則根據(jù)所述訪問請求的標(biāo)識符,將各個操作指令對應(yīng)的日志進(jìn)行串聯(lián)存儲。
可選地,所述當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取預(yù)先存儲的所述應(yīng)用的啟動時間和所述應(yīng)用服務(wù)器的IP地址的步驟之前,還包括:
當(dāng)偵測到所述應(yīng)用服務(wù)器中應(yīng)用的啟動操作時,獲取所述應(yīng)用的啟動時間和所述應(yīng)用服務(wù)器的IP地址,并存儲所述啟動時間和IP地址。
本發(fā)明通過當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,對預(yù)先存儲的所述應(yīng)用的啟動時間和所述應(yīng)用服務(wù)器的IP地址進(jìn)行編碼,得到編碼后的所述啟動時間和IP地址,并按照預(yù)設(shè)規(guī)則改變所獲取的上一訪問請求標(biāo)識符中的變量對應(yīng)的值,得到新的變量,將所述新的變量、編碼后的所述啟動時間和IP地址進(jìn)行拼接,生成所述訪問請求的標(biāo)識符。縮短了所述訪問請求的標(biāo)識符的長度和所述標(biāo)識符的生成時間,提高了所述訪問請求的標(biāo)識符的性能。
附圖說明
圖1為實現(xiàn)本發(fā)明各個實施例一個可選的移動終端的硬件結(jié)構(gòu)示意圖;
圖2為如圖1所示的移動終端的無線通信系統(tǒng)示意圖;
圖3為本發(fā)明標(biāo)識符生成裝置第一實施例的模塊示意圖;
圖4為本發(fā)明實施例中編碼模塊的一種模塊示意圖;
圖5為本發(fā)明標(biāo)識符生成裝置第三實施例的模塊示意圖;
圖6為本發(fā)明標(biāo)識符生成裝置第四實施例的模塊示意圖;
圖7為本發(fā)明標(biāo)識符生成方法第一實施例的流程示意圖;
圖8為本發(fā)明實施例中對所述啟動時間和IP地址進(jìn)行編碼,得到編碼后的所述啟動時間和IP地址的一種流程示意圖;
圖9為本發(fā)明標(biāo)識符生成方法第三實施例的流程示意圖;
圖10為本發(fā)明標(biāo)識符生成方法第四實施例的流程示意圖;
圖11為本發(fā)明標(biāo)識符生成方法第五實施例的流程示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做說明。
具體實施方式
應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)在將參考附圖描述實現(xiàn)本發(fā)明各個實施例的移動終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。
移動終端可以以各種形式來實施。例如,本發(fā)明中描述的終端可以包括諸如移動電話、智能電話、筆記本電腦、數(shù)字廣播接收器、PDA(個人數(shù)字助理)、PAD(平板電腦)、PMP(便攜式多媒體播放器)、導(dǎo)航裝置等等的移動終端以及諸如數(shù)字TV、臺式計算機(jī)等等的固定終端。下面,假設(shè)終端是移動終端。然而,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動目的的元件之外,根據(jù)本發(fā)明的實施方式的構(gòu)造也能夠應(yīng)用于固定類型的終端。
圖1為實現(xiàn)本發(fā)明各個實施例一個可選的移動終端的硬件結(jié)構(gòu)示意圖。
移動終端100可以包括用戶輸入單元130、存儲器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動終端,但是應(yīng)理解的是,并不要求實施所有示出的組件。可以替代地實施更多或更少的組件。將在下面詳細(xì)描述移動終端的元件。
用戶輸入單元130可以根據(jù)用戶輸入的命令生成鍵輸入數(shù)據(jù)以控制移動終端的各種操作。用戶輸入單元130允許用戶輸入各種類型的信息,并且可以包括鍵盤、鍋仔片、觸摸板(例如,檢測由于被接觸而導(dǎo)致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。
接口單元170用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無線數(shù)據(jù)端口、存儲卡端口、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(I/O)端口、視頻I/O端口、耳機(jī)端口等等。識別模塊可以是存儲用于驗證用戶使用移動終端100的各種信息并且可以包括用戶識別模塊(UIM)、客戶識別模塊(SIM)、通用客戶識別模塊(USIM)等等。另外,具有識別模塊的裝置(下面稱為"識別裝置")可以采取智能卡的形式,因此,識別裝置可以經(jīng)由端口或其它連接裝置與移動終端100連接。接口單元170可以用于接收來自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿咏K端100內(nèi)的一個或多個元件或者可以用于在移動終端和外部裝置之間傳輸數(shù)據(jù)。
另外,當(dāng)移動終端100與外部底座連接時,接口單元170可以用作允許通過其將電力從底座提供到移動終端100的路徑或者可以用作允許從底座輸入的各種命令信號通過其傳輸?shù)揭苿咏K端的路徑。從底座輸入的各種命令信號或電力可以用作用于識別移動終端是否準(zhǔn)確地安裝在底座上的信號。
存儲器160可以存儲由控制器180執(zhí)行的處理和控制操作的軟件程序等等,或者可以暫時地存儲己經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲器160可以存儲關(guān)于當(dāng)觸摸施加到觸摸屏?xí)r輸出的各種方式的振動和音頻信號的數(shù)據(jù)。
存儲器160可以包括至少一種類型的存儲介質(zhì),所述存儲介質(zhì)包括閃存、硬盤、多媒體卡、卡型存儲器(例如,SD或DX存儲器等等)、隨機(jī)訪問存儲器(RAM)、靜態(tài)隨機(jī)訪問存儲器(SRAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、可編程只讀存儲器(PROM)、磁性存儲器、磁盤、光盤等等。而且,移動終端100可以與通過網(wǎng)絡(luò)連接執(zhí)行存儲器160的存儲功能的網(wǎng)絡(luò)存儲裝置協(xié)作。
控制器180通常控制移動終端的總體操作。例如,控制器180執(zhí)行與語音通話、數(shù)據(jù)通信、視頻通話等等相關(guān)的控制和處理。另外,控制器180可以包括用于再現(xiàn)(或回放)多媒體數(shù)據(jù)的多媒體模塊1810,多媒體模塊1810可以構(gòu)造在控制器180內(nèi),或者可以構(gòu)造為與控制器180分離??刂破?80可以執(zhí)行模式識別處理,以將在觸摸屏上執(zhí)行的手寫輸入或者圖片繪制輸入識別為字符或圖像。
電源單元190在控制器180的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當(dāng)?shù)碾娏Α?/p>
這里描述的各種實施方式可以以使用例如計算機(jī)軟件、硬件或其任何組合的計算機(jī)可讀介質(zhì)來實施。對于硬件實施,這里描述的實施方式可以通過使用特定用途集成電路(ASIC)、數(shù)字信號處理器(DSP)、數(shù)字信號處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場可編程門陣列(FPGA)、處理器、控制器、微控制器、微處理器、被設(shè)計為執(zhí)行這里描述的功能的電子單元中的至少一種來實施,在一些情況下,這樣的實施方式可以在控制器180中實施。對于軟件實施,諸如過程或功能的實施方式可以與允許執(zhí)行至少一種功能或操作的單獨的軟件模塊來實施。軟件代碼可以由以任何適當(dāng)?shù)木幊陶Z言編寫的軟件應(yīng)用程序(或程序)來實施,軟件代碼可以存儲在存儲器160中并且由控制器180執(zhí)行。
至此,己經(jīng)按照其功能描述了移動終端。下面,為了簡要起見,將描述諸如折疊型、直板型、擺動型、滑動型移動終端等等的各種類型的移動終端中的滑動型移動終端作為示例。因此,本發(fā)明能夠應(yīng)用于任何類型的移動終端,并且不限于滑動型移動終端。
如圖1中所示的移動終端100可以被構(gòu)造為利用經(jīng)由幀或分組發(fā)送數(shù)據(jù)的諸如有線和無線通信系統(tǒng)以及基于衛(wèi)星的通信系統(tǒng)來操作。
現(xiàn)在將參考圖2描述其中根據(jù)本發(fā)明的移動終端能夠操作的通信系統(tǒng)。
這樣的通信系統(tǒng)可以使用不同的空中接口和/或物理層。例如,由通信系統(tǒng)使用的空中接口包括例如頻分多址(FDMA)、時分多址(TDMA)、碼分多址(CDMA)和通用移動通信系統(tǒng)(UMTS)(特別地,長期演進(jìn)(LTE))、全球移動通信系統(tǒng)(GSM)等等。作為非限制性示例,下面的描述涉及CDMA通信系統(tǒng),但是這樣的教導(dǎo)同樣適用于其它類型的系統(tǒng)。
參考圖2,CDMA無線通信系統(tǒng)可以包括多個移動終端100、多個基站(BS)270、基站控制器(BSC)275和移動交換中心(MSC)280。MSC280被構(gòu)造為與公共電話交換網(wǎng)絡(luò)(PSTN)290形成接口。MSC280還被構(gòu)造為與可以經(jīng)由回程線路耦接到基站270的BSC275形成接口?;爻叹€路可以根據(jù)若干己知的接口中的任一種來構(gòu)造,所述接口包括例如E1/T1、ATM,IP、PPP、幀中繼、HDSL、ADSL或xDSL。將理解的是,如圖2中所示的系統(tǒng)可以包括多個BSC2750。
每個BS270可以服務(wù)一個或多個分區(qū)(或區(qū)域),由多向天線或指向特定方向的天線覆蓋的每個分區(qū)放射狀地遠(yuǎn)離BS270?;蛘撸總€分區(qū)可以由用于分集接收的兩個或更多天線覆蓋。每個BS270可以被構(gòu)造為支持多個頻率分配,并且每個頻率分配具有特定頻譜(例如,1.25MHz,5MHz等等)。
分區(qū)與頻率分配的交叉可以被稱為CDMA信道。BS270也可以被稱為基站收發(fā)器子系統(tǒng)(BTS)或者其它等效術(shù)語。在這樣的情況下,術(shù)語"基站"可以用于籠統(tǒng)地表示單個BSC275和至少一個BS270。基站也可以被稱為"蜂窩站"?;蛘撸囟˙S270的各分區(qū)可以被稱為多個蜂窩站。
如圖2中所示,廣播發(fā)射器(BT)295將廣播信號發(fā)送給在系統(tǒng)內(nèi)操作的移動終端100。在圖2中,示出了幾個全球定位系統(tǒng)(GPS)衛(wèi)星300。衛(wèi)星300幫助定位多個移動終端100中的至少一個。
在圖2中,描繪了多個衛(wèi)星300,但是理解的是,可以利用任何數(shù)目的衛(wèi)星獲得有用的定位信息。替代GPS跟蹤技術(shù)或者在GPS跟蹤技術(shù)之外,可以使用可以跟蹤移動終端的位置的其它技術(shù)。另外,至少一個GPS衛(wèi)星300可以選擇性地或者額外地處理衛(wèi)星DMB傳輸。
作為無線通信系統(tǒng)的一個典型操作,BS270接收來自各種移動終端100的反向鏈路信號。移動終端100通常參與通話、消息收發(fā)和其它類型的通信。特定基站270接收的每個反向鏈路信號被在特定BS270內(nèi)進(jìn)行處理。獲得的數(shù)據(jù)被轉(zhuǎn)發(fā)給相關(guān)的BSC275。BSC提供通話資源分配和包括BS270之間的軟切換過程的協(xié)調(diào)的移動管理功能。BSC275還將接收到的數(shù)據(jù)路由到MSC280,其提供用于與PSTN290形成接口的額外的路由服務(wù)。類似地,PSTN290與MSC280形成接口,MSC與BSC275形成接口,并且BSC275相應(yīng)地控制BS270以將正向鏈路信號發(fā)送到移動終端100。
基于上述移動終端硬件結(jié)構(gòu)以及通信系統(tǒng),提出本發(fā)明方法各個實施例。
參照圖3,圖3為本發(fā)明標(biāo)識符生成裝置第一實施例的模塊示意圖。
需要強(qiáng)調(diào)的是,對本領(lǐng)域的技術(shù)人員來說,圖3所示模塊圖僅僅是一個較佳實施例的示例圖,本領(lǐng)域的技術(shù)人員圍繞圖3所示的標(biāo)識符生成裝置的模塊,可輕易進(jìn)行新的模塊的補(bǔ)充;各模塊的名稱是自定義名稱,僅用于輔助理解該標(biāo)識符生成裝置的各個程序功能塊,不用于限定本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案的核心是,各自定義名稱的模塊所要達(dá)成的功能。
本實施例提出一種標(biāo)識符生成裝置,標(biāo)識符生成裝置包括:
獲取模塊10,用于當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取預(yù)先存儲的應(yīng)用的啟動時間和應(yīng)用服務(wù)器的網(wǎng)際互聯(lián)協(xié)議IP地址;
編碼模塊20,用于對啟動時間和IP地址進(jìn)行編碼,得到編碼后的啟動時間和IP地址;
當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取模塊10獲取預(yù)先存儲的該應(yīng)用的啟動時間和該應(yīng)用服務(wù)器的IP(Internet Protocol,網(wǎng)際互聯(lián)協(xié)議)地址。其中,該訪問請求為用戶向應(yīng)用服務(wù)器發(fā)送一系列操作請求,如查詢請求、瀏覽請求等。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡(luò)和每一臺主機(jī)分配一個邏輯地址,以此來屏蔽物理地址的差異。需要說明的是,應(yīng)用服務(wù)器中安裝了一個或者多個應(yīng)用,同一個應(yīng)用服務(wù)器中的各個應(yīng)用的IP地址是一致的??梢岳斫獾氖牵诒緦嵤├?,應(yīng)用服務(wù)器可以理解為一個終端,應(yīng)用服務(wù)器中安裝的應(yīng)用可以理解為終端中安裝的不同應(yīng)用,如淘寶、網(wǎng)易新聞等。
當(dāng)獲取模塊10獲取到應(yīng)用服務(wù)器的IP地址和接收到訪問請求的應(yīng)用的啟動時間時,編碼模塊20對獲取模塊10所獲取的IP地址和啟動時間進(jìn)行編碼,以縮短該IP地址和啟動時間字符的長度,得到編碼后的啟動時間和IP地址。
獲取模塊10還用于獲取上一訪問請求標(biāo)識符中的變量,按照預(yù)設(shè)規(guī)則改變變量對應(yīng)的值,得到新的變量;
當(dāng)?shù)玫骄幋a后的IP地址和啟動時間后,獲取模塊10獲取上一訪問請求標(biāo)識符中的變量,并按照預(yù)設(shè)規(guī)則改變該變量對應(yīng)的值,得到新的變量。需要說明的是,該變量可以理解為一個自增的ID。預(yù)設(shè)規(guī)則為每次接收到訪問請求后,獲取到上一訪問請求標(biāo)識符中的變量時,該變量所對應(yīng)的值的變化規(guī)律。如將該變量的值每次增加一,或者增加二,或者減小相應(yīng)的數(shù)值等。在本實施例中,每次獲取到該自增ID,都會將自增ID對應(yīng)的值加一,以得到新的自增ID。
進(jìn)一步地,考慮到多線程的環(huán)境,即同時接收到多個用戶的訪問請求時,采用線程安全的長整型來表示該變量,以使每個線程都能得到不同的變量,即使每個訪問請求對應(yīng)著不同的自增ID。其中,長整型是程序設(shè)計中數(shù)據(jù)類型的一種表現(xiàn)方式,通常用long表示長整型,long表示有符號64位整數(shù),其范圍是-2^63至2^63-1Int64,unsigned long表示無符號64位整數(shù),其范圍是0-2^64至1 UInt64。
如在Java中,使用“private static AtomicLong lastId=new AtomicLong();”進(jìn)行該變量的聲明。
拼接模塊30,用于將新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接,以生成訪問請求的標(biāo)識符。
當(dāng)?shù)玫叫碌淖兞恐螅唇幽K30將該新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接,該拼接所得的結(jié)果即為該訪問請求所對應(yīng)的標(biāo)識符,該標(biāo)識符中包含了該應(yīng)用服務(wù)器的IP地址和啟動時間,同時還包括了一個唯一的變量,該標(biāo)識符可以唯一區(qū)分該訪問請求,即可以通過該標(biāo)識符,確定該訪問請求所對應(yīng)的應(yīng)用服務(wù)器,以及確定該訪問請求所對應(yīng)的應(yīng)用,同時通過該標(biāo)識符可以區(qū)分用一應(yīng)用中的不同訪問請求。且在分布式環(huán)境中,由于該標(biāo)識符中含有應(yīng)用服務(wù)器的IP地址,因此可以區(qū)分各個訪問請求所屬的應(yīng)用服務(wù)器。當(dāng)分布式系統(tǒng)中的某個訪問請求出現(xiàn)故障時,可以通過該訪問請求的標(biāo)識符確定該訪問請求所屬的應(yīng)用服務(wù)器,以便于進(jìn)行故障排查。同時,在分布式環(huán)境中,通過不同訪問請求所對應(yīng)的標(biāo)識符,確定各個應(yīng)用服務(wù)器對應(yīng)的訪問請求,便于進(jìn)行數(shù)據(jù)分析。以解決在使用UUID作為訪問請求的標(biāo)識符時,在分布式環(huán)境中不能確定各個訪問請求所屬的應(yīng)用服務(wù)器的問題。
進(jìn)一步地,還可以根據(jù)需要在生成標(biāo)識符的過程,添加應(yīng)用服務(wù)器的主機(jī)號等信息。
需要說明的是,在對新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接過程中,新的變量、編碼后的啟動時間和IP地址三者之間拼接的先后順序可以根據(jù)需要而設(shè)置,如可以設(shè)置為新的變量在前面,編碼后的啟動時間在中間,編碼后的IP地址在后面;或者設(shè)置為編碼后的時間在前面,新的變量在中間,編碼后的IP地址在后面。
在本實施例中,并不需要獲取強(qiáng)隨機(jī)數(shù)生成訪問請求的標(biāo)識符,提高了生成訪問請求標(biāo)識符的速率。經(jīng)過測試可知,生成一千萬次UUID平均需要耗時7秒,而通過新的變量、編碼后的啟動時間和IP地址生成訪問請求的標(biāo)識符只需要1.2秒。
本實施例通過當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,對預(yù)先存儲的應(yīng)用的啟動時間和應(yīng)用服務(wù)器的IP地址進(jìn)行編碼,得到編碼后的啟動時間和IP地址,并按照預(yù)設(shè)規(guī)則改變所獲取的上一訪問請求標(biāo)識符中的變量對應(yīng)的值,得到新的變量,將新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接,生成訪問請求的標(biāo)識符。縮短了訪問請求的標(biāo)識符的長度和標(biāo)識符的生成時間,提高了訪問請求的標(biāo)識符的性能。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成裝置第二實施例。
標(biāo)識符生成裝置第二實施例與標(biāo)識符生成裝置第一實施例的區(qū)別在于,參照圖4,編碼模塊20包括:
第一轉(zhuǎn)換單元21,用于將啟動時間和IP地址按照對應(yīng)的編碼規(guī)則轉(zhuǎn)換為16進(jìn)制的數(shù)字;
第二轉(zhuǎn)換單元22,用于將16進(jìn)制的數(shù)字轉(zhuǎn)換為64進(jìn)制的數(shù)字,得到編碼后的啟動時間和IP地址。
需要說明的是,IP地址是一個32位的二進(jìn)制數(shù),通常被分割為4個“8位二進(jìn)制數(shù)”(也就是4個字節(jié))。IP地址通常用“點分十進(jìn)制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進(jìn)制整數(shù),如IP地址可表示為255.255.255.255。
當(dāng)獲取模塊10獲取到應(yīng)用服務(wù)器的IP地址時,按照編碼IP地址的編碼規(guī)則對該IP地址進(jìn)行編碼的過程為:獲取IP地址中的4個“8位二進(jìn)制數(shù)”,具體地,可以通過小數(shù)點區(qū)分IP地址中4個“8位二進(jìn)制數(shù)”,以獲取該IP地址中的4個“8位二進(jìn)制數(shù)”。當(dāng)?shù)玫絀P地址中的“8位二進(jìn)制數(shù)”時,第一轉(zhuǎn)換單元21將各個“8位二進(jìn)制數(shù)”轉(zhuǎn)換為2位的16進(jìn)制數(shù),得到與該IP地址對應(yīng)的16進(jìn)制數(shù)。如當(dāng)該IP地址為255.255.255.255,對該IP地址進(jìn)行編碼后,所得與該IP地址對應(yīng)的16進(jìn)制數(shù)為FFFFFFFF。然后第二轉(zhuǎn)換單元22將與該IP地址對應(yīng)的16進(jìn)制數(shù)轉(zhuǎn)換為64進(jìn)制數(shù),即得到64進(jìn)制的IP地址,改64進(jìn)制的IP地址即為編碼后的IP地址,即用a-z、A-Z和“-”這64個字符來表示IP地址。通過該編碼規(guī)則得到的IP地址的字符長度短于采用Base64編碼方式得到IP地址。
當(dāng)獲取到應(yīng)用服務(wù)器的啟動時間,按照與啟動時間對應(yīng)的編碼規(guī)則編碼該啟動時間。需要說明的是,在本實施例中,應(yīng)用服務(wù)器的啟動時間是一個長整型的時間戳,該時間戳包含了應(yīng)用服務(wù)器啟動時間的年、月、日、時、分、秒和毫秒,即所獲取的啟動時間具體到該應(yīng)用服務(wù)器啟動的年、月、日、時、分、秒和毫秒。按照與啟動時間對應(yīng)的編碼規(guī)則編碼該啟動時間具體過程為:第一轉(zhuǎn)換單元21將啟動時間的時間戳轉(zhuǎn)換為16進(jìn)制的時間戳,然后第二轉(zhuǎn)換單元22將16進(jìn)制的時間戳轉(zhuǎn)換為64進(jìn)制的時間戳,得到以64進(jìn)制數(shù)表示的啟動時間。
本實施例通過將應(yīng)用服務(wù)器的IP地址和應(yīng)用服務(wù)器中應(yīng)用的啟動時間轉(zhuǎn)換成64進(jìn)制數(shù)來表示,縮短了IP地址和啟動時間字符的長度,提高了生成訪問請求的標(biāo)識符的速率。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成裝置第三實施例。
標(biāo)識符生成裝置第三實施例與標(biāo)識符生成裝置第一實施例的區(qū)別在于,參照圖5,標(biāo)識符生成裝置還包括:
設(shè)置模塊40,用于設(shè)置標(biāo)識符的分隔符和新的變量、編碼后的啟動時間和IP地址的拼接順序;
拼接模塊30還用于根據(jù)分隔符和拼接順序?qū)⑿碌淖兞俊⒕幋a后的啟動時間和IP地址進(jìn)行拼接,以生成訪問請求的標(biāo)識符。
在得到編碼后的IP地址、編碼后的啟動時間和新的變量之后,設(shè)置模塊40設(shè)置該訪問請求標(biāo)識符的分隔符,以及該新的變量、編碼后的啟動時間和IP地址的拼接順序。具體地,標(biāo)識符的分隔符可為小數(shù)點或者其它可以區(qū)分不同數(shù)據(jù)的符號,如頓號等。新的變量、編碼后的啟動時間和IP地址三者之間的拼接順序可以根據(jù)需要而設(shè)置。
在對新的變量、編碼后的啟動時間和IP地址三者進(jìn)行拼接以得到訪問請求的標(biāo)識符時,拼接模塊30根據(jù)分隔符和拼接順序?qū)⑿碌淖兞俊⒕幋a后的啟動時間和IP地址進(jìn)行拼接,以生成該訪問請求的標(biāo)識符。如當(dāng)分隔符為“.”,新的變量為A,編碼后的IP地址為B,編碼后的啟動時間為C,拼接順序為BAC時,所得的標(biāo)識符為“B.A.C”。
本實施例通過根據(jù)所設(shè)置分隔符和新的變量、編碼后的啟動時間和IP地址的拼接順序生成訪問請求的標(biāo)識符,提高了所生成的標(biāo)識符的可讀性,同時也可以快速確定訪問請求所屬應(yīng)用服務(wù)器以及所對應(yīng)的應(yīng)用。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成裝置第四實施例。
標(biāo)識符生成裝置第四實施例與標(biāo)識符生成裝置第一實施例的區(qū)別在于,參照圖6,獲取模塊10還用于獲取訪問請求對應(yīng)的操作指令,確定訪問請求對應(yīng)的操作指令的個數(shù);
標(biāo)識符生成裝置還包括存儲模塊50,用于若訪問請求至少對應(yīng)著兩個操作指令,則根據(jù)訪問請求的標(biāo)識符,將各個操作指令對應(yīng)的日志進(jìn)行串聯(lián)存儲。
當(dāng)獲取模塊10獲取到訪問應(yīng)用服務(wù)器的訪問請求時,獲取該訪問請求所對應(yīng)的操作指令,確定該訪問請求對應(yīng)的操作指令的個數(shù)。若該訪問請求只對應(yīng)著一個操作指令,存儲模塊50則直接存儲該訪問請求對應(yīng)的操作指令的日志。若該訪問請求至少對應(yīng)著兩個操作指令,存儲模塊50則根據(jù)該訪問請求的標(biāo)識符,將各個操作指令對應(yīng)的日志進(jìn)行串聯(lián)存儲。如某用戶通過移動終端向應(yīng)用服務(wù)器發(fā)送了一個訪問請求,該訪問請求中包含了5次查詢操作,則通過唯一標(biāo)識該訪問請求的標(biāo)識符,將這5次查詢操作對應(yīng)的日志進(jìn)行串聯(lián)存儲,即將含有相同標(biāo)識符的查詢操作進(jìn)行串聯(lián)存儲,以供后續(xù)對該應(yīng)用服務(wù)器中的訪問請求進(jìn)行日志分析。
本實施例通過根據(jù)標(biāo)識符將訪問請求對應(yīng)的多個操作指令所對應(yīng)的日志進(jìn)行串聯(lián)存儲,以供后續(xù)在對訪問請求進(jìn)行日志分析過程中,可以快速找到不同訪問請求所對應(yīng)的日志,提高對訪問請求進(jìn)行日志分析的效率。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成裝置第五實施例。
標(biāo)識符生成裝置第五實施例與標(biāo)識符生成裝置第一實施例的區(qū)別在于,參照圖3,獲取模塊10還用于當(dāng)偵測到應(yīng)用服務(wù)器中應(yīng)用的啟動操作時,獲取應(yīng)用的啟動時間和應(yīng)用服務(wù)器的IP地址,并存儲啟動時間和IP地址。
當(dāng)偵測到應(yīng)用服務(wù)器中應(yīng)用的啟動操作時,獲取模塊10獲取該應(yīng)用的啟動時間和該應(yīng)用所在的應(yīng)用服務(wù)器的IP地址。當(dāng)獲取到該應(yīng)用的啟動時間和該應(yīng)用所在的應(yīng)用服務(wù)器的IP地址后,存儲所獲取的IP地址和啟動時間。其中,在獲取應(yīng)用服務(wù)器的IP地址時,可以根據(jù)該應(yīng)用服務(wù)器所使用的編譯語言的不同,采取與該編譯語言對應(yīng)的方法獲取該應(yīng)用服務(wù)器的IP地址。
如在Java中,可以通過NetworkInterface接口來獲取該應(yīng)用服務(wù)器的IP地址,具體為通過NetworkInterface.getNetworkInterfaces()來獲取NetworkInterface對象集合,然后遍歷該集合中的每個NetworkInterface,通過getInetAddresses方法來獲取InetAddress集合,篩選符合條件的InetAddress對象。在篩選過程中,包括過濾內(nèi)網(wǎng)InetAddress對象和本地InetAddress對象。通常情況下,只會有一個符合條件的InetAddress對象,然后通過getHostAddress方法可以獲取當(dāng)前符合條件的InetAddress對象的IP地址。上述InetAddress對象指的是Java對IP地址的封裝,它的實例對象包含以數(shù)字形式保存的IP地址,同時還可能包含主機(jī)名。InetAddress類提供了將主機(jī)名解析為IP地址的方法。NetworkInterface類指的是Java提供的一個類,這個類可以得到應(yīng)用服務(wù)器中所有的物理網(wǎng)絡(luò)接口和虛擬機(jī)等軟件利用應(yīng)用服務(wù)器的物理網(wǎng)絡(luò)接口創(chuàng)建的邏輯網(wǎng)絡(luò)接口的信息。而NetworkInterface對象集合指的是該應(yīng)用服務(wù)器所有的物理和邏輯的網(wǎng)絡(luò)接口。
在獲取該應(yīng)用的啟動時間過程中,可以通過靜態(tài)變量在該應(yīng)用啟動過程中,獲取該應(yīng)用的啟動時間時,即通過靜態(tài)變量在該應(yīng)用程序初始化的時候獲取該應(yīng)用的啟動時間。例如,在Java中,通過采用“private static final Long startTimeStamp=System.currentTimeMillis();”獲取應(yīng)用的啟動時間。
本實施例通過在應(yīng)用啟動時獲取其啟動時間,并獲取應(yīng)用服務(wù)器的IP地址,并存儲所獲取的啟動時間和IP地址,使得在后續(xù)生成標(biāo)識符過程中,不需要再去獲取IP地址和啟動時間,提高了訪問請求標(biāo)識符的生成速率。
本發(fā)明還提供一種標(biāo)識符生成方法。
參照圖7,圖7為本發(fā)明標(biāo)識符生成方法第一實施例的流程示意圖。
本實施例提出一種標(biāo)識符生成方法,標(biāo)識符生成方法包括:
步驟S10,當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取預(yù)先存儲的應(yīng)用的啟動時間和應(yīng)用服務(wù)器的網(wǎng)際互聯(lián)協(xié)議IP地址;
步驟S20,對啟動時間和IP地址進(jìn)行編碼,得到編碼后的啟動時間和IP地址;
當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,獲取預(yù)先存儲的該應(yīng)用的啟動時間和該應(yīng)用服務(wù)器的IP(Internet Protocol,網(wǎng)際互聯(lián)協(xié)議)地址。其中,該訪問請求為用戶向應(yīng)用服務(wù)器發(fā)送一系列操作請求,如查詢請求、瀏覽請求等。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個網(wǎng)絡(luò)和每一臺主機(jī)分配一個邏輯地址,以此來屏蔽物理地址的差異。需要說明的是,應(yīng)用服務(wù)器中安裝了一個或者多個應(yīng)用,同一個應(yīng)用服務(wù)器中的各個應(yīng)用的IP地址是一致的。可以理解的是,在本實施例中,應(yīng)用服務(wù)器可以理解為一個終端,應(yīng)用服務(wù)器中安裝的應(yīng)用可以理解為終端中安裝的不同應(yīng)用,如淘寶、網(wǎng)易新聞等。
當(dāng)獲取到應(yīng)用服務(wù)器的IP地址和接收到訪問請求的應(yīng)用的啟動時間時,對所獲取的IP地址和啟動時間進(jìn)行編碼,以縮短該IP地址和啟動時間字符的長度,得到編碼后的啟動時間和IP地址。
步驟S30,獲取上一訪問請求標(biāo)識符中的變量,按照預(yù)設(shè)規(guī)則改變變量對應(yīng)的值,得到新的變量;
當(dāng)?shù)玫骄幋a后的IP地址和啟動時間后,獲取上一訪問請求標(biāo)識符中的變量,并按照預(yù)設(shè)規(guī)則改變該變量對應(yīng)的值,得到新的變量。需要說明的是,該變量可以理解為一個自增的ID。預(yù)設(shè)規(guī)則為每次接收到訪問請求后,獲取到上一訪問請求標(biāo)識符中的變量時,該變量所對應(yīng)的值的變化規(guī)律。如將該變量的值每次增加一,或者增加二,或者減小相應(yīng)的數(shù)值等。在本實施例中,每次獲取到該自增ID,都會將自增ID對應(yīng)的值加一,以得到新的自增ID。
進(jìn)一步地,考慮到多線程的環(huán)境,即同時接收到多個用戶的訪問請求時,采用線程安全的長整型來表示該變量,以使每個線程都能得到不同的變量,即使每個訪問請求對應(yīng)著不同的自增ID。其中,長整型是程序設(shè)計中數(shù)據(jù)類型的一種表現(xiàn)方式,通常用long表示長整型,long表示有符號64位整數(shù),其范圍是-2^63至2^63-1Int64,unsigned long表示無符號64位整數(shù),其范圍是0-2^64至1 UInt64。
如在Java中,使用“private static AtomicLong lastId=new AtomicLong();”進(jìn)行該變量的聲明。
步驟S40,將新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接,以生成訪問請求的標(biāo)識符。
當(dāng)?shù)玫叫碌淖兞恐螅瑢⒃撔碌淖兞?、編碼后的啟動時間和IP地址進(jìn)行拼接,該拼接所得的結(jié)果即為該訪問請求所對應(yīng)的標(biāo)識符,該標(biāo)識符中包含了該應(yīng)用服務(wù)器的IP地址和啟動時間,同時還包括了一個唯一的變量,該標(biāo)識符可以唯一區(qū)分該訪問請求,即可以通過該標(biāo)識符,確定該訪問請求所對應(yīng)的應(yīng)用服務(wù)器,以及確定該訪問請求所對應(yīng)的應(yīng)用,同時通過該標(biāo)識符可以區(qū)分用一應(yīng)用中的不同訪問請求。且在分布式環(huán)境中,由于該標(biāo)識符中含有應(yīng)用服務(wù)器的IP地址,因此可以區(qū)分各個訪問請求所屬的應(yīng)用服務(wù)器。當(dāng)分布式系統(tǒng)中的某個訪問請求出現(xiàn)故障時,可以通過該訪問請求的標(biāo)識符確定該訪問請求所屬的應(yīng)用服務(wù)器,以便于進(jìn)行故障排查。同時,在分布式環(huán)境中,通過不同訪問請求所對應(yīng)的標(biāo)識符,確定各個應(yīng)用服務(wù)器對應(yīng)的訪問請求,便于進(jìn)行數(shù)據(jù)分析。以解決在使用UUID作為訪問請求的標(biāo)識符時,在分布式環(huán)境中不能確定各個訪問請求所屬的應(yīng)用服務(wù)器的問題。
需要說明的是,在對新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接過程中,新的變量、編碼后的啟動時間和IP地址三者之間拼接的先后順序可以根據(jù)需要而設(shè)置,如可以設(shè)置為新的變量在前面,編碼后的啟動時間在中間,編碼后的IP地址在后面;或者設(shè)置為編碼后的時間在前面,新的變量在中間,編碼后的IP地址在后面。
在本實施例中,并不需要獲取強(qiáng)隨機(jī)數(shù)生成訪問請求的標(biāo)識符,提高了生成訪問請求標(biāo)識符的速率。經(jīng)過測試可知,生成一千萬次UUID平均需要耗時7秒,而通過新的變量、編碼后的啟動時間和IP地址生成訪問請求的標(biāo)識符只需要1.2秒。
本實施例通過當(dāng)接收到當(dāng)前訪問應(yīng)用服務(wù)器中應(yīng)用的訪問請求時,對預(yù)先存儲的應(yīng)用的啟動時間和應(yīng)用服務(wù)器的IP地址進(jìn)行編碼,得到編碼后的啟動時間和IP地址,并按照預(yù)設(shè)規(guī)則改變所獲取的上一訪問請求標(biāo)識符中的變量對應(yīng)的值,得到新的變量,將新的變量、編碼后的啟動時間和IP地址進(jìn)行拼接,生成訪問請求的標(biāo)識符??s短了訪問請求的標(biāo)識符的長度和標(biāo)識符的生成時間,提高了訪問請求的標(biāo)識符的性能。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成方法第二實施例。
標(biāo)識符生成方法第二實施例與標(biāo)識符生成方法第一實施例的區(qū)別在于,參照圖8,步驟S20包括:
步驟S21,將啟動時間和IP地址按照對應(yīng)的編碼規(guī)則轉(zhuǎn)換為16進(jìn)制的數(shù)字;
步驟S22,將16進(jìn)制的數(shù)字轉(zhuǎn)換為64進(jìn)制的數(shù)字,得到編碼后的啟動時間和IP地址。
需要說明的是,IP地址是一個32位的二進(jìn)制數(shù),通常被分割為4個“8位二進(jìn)制數(shù)”(也就是4個字節(jié))。IP地址通常用“點分十進(jìn)制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進(jìn)制整數(shù),如IP地址可表示為255.255.255.255。
當(dāng)獲取到應(yīng)用服務(wù)器的IP地址時,按照編碼IP地址的編碼規(guī)則對該IP地址進(jìn)行編碼的過程為:獲取IP地址中的4個“8位二進(jìn)制數(shù)”,具體地,可以通過小數(shù)點區(qū)分IP地址中4個“8位二進(jìn)制數(shù)”,以獲取該IP地址中的4個“8位二進(jìn)制數(shù)”。當(dāng)?shù)玫絀P地址中的“8位二進(jìn)制數(shù)”時,將各個“8位二進(jìn)制數(shù)”轉(zhuǎn)換為2位的16進(jìn)制數(shù),得到與該IP地址對應(yīng)的16進(jìn)制數(shù)。如當(dāng)該IP地址為255.255.255.255,對該IP地址進(jìn)行編碼后,所得與該IP地址對應(yīng)的16進(jìn)制數(shù)為FFFFFFFF。然后將與該IP地址對應(yīng)的16進(jìn)制數(shù)轉(zhuǎn)換為64進(jìn)制數(shù),即得到64進(jìn)制的IP地址,改64進(jìn)制的IP地址即為編碼后的IP地址,即用a-z、A-Z和“-”這64個字符來表示IP地址。通過該編碼規(guī)則得到的IP地址的字符長度短于采用Base64編碼方式得到IP地址。
當(dāng)獲取到應(yīng)用服務(wù)器的啟動時間,按照與啟動時間對應(yīng)的編碼規(guī)則編碼該啟動時間。需要說明的是,在本實施例中,應(yīng)用服務(wù)器的啟動時間是一個長整型的時間戳,該時間戳包含了應(yīng)用服務(wù)器啟動時間的年、月、日、時、分、秒和毫秒,即所獲取的啟動時間具體到該應(yīng)用服務(wù)器啟動的年、月、日、時、分、秒和毫秒。按照與啟動時間對應(yīng)的編碼規(guī)則編碼該啟動時間具體過程為:將啟動時間的時間戳轉(zhuǎn)換為16進(jìn)制的時間戳,然后將16進(jìn)制的時間戳轉(zhuǎn)換為64進(jìn)制的時間戳,得到以64進(jìn)制數(shù)表示的啟動時間。
本實施例通過將應(yīng)用服務(wù)器的IP地址和應(yīng)用服務(wù)器中應(yīng)用的啟動時間轉(zhuǎn)換成64進(jìn)制數(shù)來表示,縮短了IP地址和啟動時間字符的長度,提高了生成訪問請求的標(biāo)識符的速率。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成方法第三實施例。
標(biāo)識符生成方法第三實施例與標(biāo)識符生成方法第一實施例的區(qū)別在于,參照圖9,標(biāo)識符生成方法還包括:
步驟S50,設(shè)置標(biāo)識符的分隔符和新的變量、編碼后的啟動時間和IP地址的拼接順序;
步驟S40包括步驟S41,根據(jù)分隔符和拼接順序?qū)⑿碌淖兞俊⒕幋a后的啟動時間和IP地址進(jìn)行拼接,以生成訪問請求的標(biāo)識符。
在得到編碼后的IP地址、編碼后的啟動時間和新的變量之后,設(shè)置該訪問請求標(biāo)識符的分隔符,以及該新的變量、編碼后的啟動時間和IP地址的拼接順序。具體地,標(biāo)識符的分隔符可為小數(shù)點或者其它可以區(qū)分不同數(shù)據(jù)的符號,如頓號等。新的變量、編碼后的啟動時間和IP地址三者之間的拼接順序可以根據(jù)需要而設(shè)置。
在對新的變量、編碼后的啟動時間和IP地址三者進(jìn)行拼接以得到訪問請求的標(biāo)識符時,根據(jù)分隔符和拼接順序?qū)⑿碌淖兞?、編碼后的啟動時間和IP地址進(jìn)行拼接,以生成該訪問請求的標(biāo)識符。如當(dāng)分隔符為“.”,新的變量為A,編碼后的IP地址為B,編碼后的啟動時間為C,拼接順序為BAC時,所得的標(biāo)識符為“B.A.C”。
本實施例通過根據(jù)所設(shè)置分隔符和新的變量、編碼后的啟動時間和IP地址的拼接順序生成訪問請求的標(biāo)識符,提高了所生成的標(biāo)識符的可讀性,同時也可以快速確定訪問請求所屬應(yīng)用服務(wù)器以及所對應(yīng)的應(yīng)用。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成方法第四實施例。
標(biāo)識符生成方法第四實施例與標(biāo)識符生成方法第一實施例的區(qū)別在于,參照圖10,標(biāo)識符生成方法還包括:
步驟S60,獲取訪問請求對應(yīng)的操作指令,確定訪問請求對應(yīng)的操作指令的個數(shù);
步驟S70,若訪問請求至少對應(yīng)著兩個操作指令,則根據(jù)訪問請求的標(biāo)識符,將各個操作指令對應(yīng)的日志進(jìn)行串聯(lián)存儲。
當(dāng)獲取到訪問應(yīng)用服務(wù)器的訪問請求時,獲取該訪問請求所對應(yīng)的操作指令,確定該訪問請求對應(yīng)的操作指令的個數(shù)。若該訪問請求只對應(yīng)著一個操作指令,則直接存儲該訪問請求對應(yīng)的操作指令的日志。若該訪問請求至少對應(yīng)著兩個操作指令,則根據(jù)該訪問請求的標(biāo)識符,將各個操作指令對應(yīng)的日志進(jìn)行串聯(lián)存儲。如某用戶通過移動終端向應(yīng)用服務(wù)器發(fā)送了一個訪問請求,該訪問請求中包含了5次查詢操作,則通過唯一標(biāo)識該訪問請求的標(biāo)識符,將這5次查詢操作對應(yīng)的日志進(jìn)行串聯(lián)存儲,即將含有相同標(biāo)識符的查詢操作進(jìn)行串聯(lián)存儲,以供后續(xù)對該應(yīng)用服務(wù)器中的訪問請求進(jìn)行日志分析。
本實施例通過根據(jù)標(biāo)識符將訪問請求對應(yīng)的多個操作指令所對應(yīng)的日志進(jìn)行串聯(lián)存儲,以供后續(xù)在對訪問請求進(jìn)行日志分析過程中,可以快速找到不同訪問請求所對應(yīng)的日志,提高對訪問請求進(jìn)行日志分析的效率。
進(jìn)一步地,提出本發(fā)明標(biāo)識符生成方法第五實施例。
標(biāo)識符生成方法第五實施例與標(biāo)識符生成方法第一實施例的區(qū)別在于,參照圖11,標(biāo)識符生成方法還包括:
步驟S80,當(dāng)偵測到應(yīng)用服務(wù)器中應(yīng)用的啟動操作時,獲取應(yīng)用的啟動時間和應(yīng)用服務(wù)器的IP地址,并存儲啟動時間和IP地址。
當(dāng)偵測到應(yīng)用服務(wù)器中應(yīng)用的啟動操作時,獲取該應(yīng)用的啟動時間和該應(yīng)用所在的應(yīng)用服務(wù)器的IP地址。當(dāng)獲取到該應(yīng)用的啟動時間和該應(yīng)用所在的應(yīng)用服務(wù)器的IP地址后,存儲所獲取的IP地址和啟動時間。其中,在獲取應(yīng)用服務(wù)器的IP地址時,可以根據(jù)該應(yīng)用服務(wù)器所使用的編譯語言的不同,采取與該編譯語言對應(yīng)的方法獲取該應(yīng)用服務(wù)器的IP地址。
如在Java中,可以通過NetworkInterface接口來獲取該應(yīng)用服務(wù)器的IP地址,具體為通過NetworkInterface.getNetworkInterfaces()來獲取NetworkInterface對象集合,然后遍歷該集合中的每個NetworkInterface,通過getInetAddresses方法來獲取InetAddress集合,篩選符合條件的InetAddress對象。在篩選過程中,包括過濾內(nèi)網(wǎng)InetAddress對象和本地InetAddress對象。通常情況下,只會有一個符合條件的InetAddress對象,然后通過getHostAddress方法可以獲取當(dāng)前符合條件的InetAddress對象的IP地址。上述InetAddress對象指的是Java對IP地址的封裝,它的實例對象包含以數(shù)字形式保存的IP地址,同時還可能包含主機(jī)名。InetAddress類提供了將主機(jī)名解析為IP地址的方法。NetworkInterface類指的是Java提供的一個類,這個類可以得到應(yīng)用服務(wù)器中所有的物理網(wǎng)絡(luò)接口和虛擬機(jī)等軟件利用應(yīng)用服務(wù)器的物理網(wǎng)絡(luò)接口創(chuàng)建的邏輯網(wǎng)絡(luò)接口的信息。而NetworkInterface對象集合指的是該應(yīng)用服務(wù)器所有的物理和邏輯的網(wǎng)絡(luò)接口。
在獲取該應(yīng)用的啟動時間過程中,可以通過靜態(tài)變量在該應(yīng)用啟動過程中,獲取該應(yīng)用的啟動時間時,即通過靜態(tài)變量在該應(yīng)用程序初始化的時候獲取該應(yīng)用的啟動時間。例如,在Java中,通過采用“private static final Long startTimeStamp=System.currentTimeMillis();”獲取應(yīng)用的啟動時間。
本實施例通過在應(yīng)用啟動時獲取其啟動時間,并獲取應(yīng)用服務(wù)器的IP地址,并存儲所獲取的啟動時間和IP地址,使得在后續(xù)生成標(biāo)識符過程中,不需要再去獲取IP地址和啟動時間,提高了訪問請求標(biāo)識符的生成速率。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。