本發(fā)明涉及互聯(lián)網(wǎng)技術領域,尤其涉及一種用于實現(xiàn)業(yè)務數(shù)據(jù)監(jiān)控的業(yè)務數(shù)據(jù)統(tǒng)計方法、裝置及系統(tǒng)。
背景技術:
在企業(yè)運營、市場調(diào)研或數(shù)據(jù)庫管理等過程中,常常需要對一些業(yè)務數(shù)據(jù)進行監(jiān)控,例如對廣告業(yè)務數(shù)據(jù)進行監(jiān)控,對物流業(yè)務數(shù)據(jù)進行監(jiān)控等。
目前,有些監(jiān)控系統(tǒng)為了獲得實時監(jiān)控結(jié)果,通過在業(yè)務的代碼中調(diào)用屬性上報應用程序接口(attr_api)來實時獲得某個屬性的上報次數(shù),然后依據(jù)該次數(shù)數(shù)值進行監(jiān)控。但該數(shù)值僅僅代表業(yè)務代碼里面的某個分支的邏輯,是和業(yè)務相分離的,其只能從最粗的維度監(jiān)控業(yè)務收發(fā)包的情況和一些資源的整體使用量,無法掌握收發(fā)包中某個關鍵(key)值的分配比例,無法細分資源的用途和用量。
此外,有些監(jiān)控系統(tǒng)為了獲得業(yè)務的各項統(tǒng)計值,會先將業(yè)務的各項數(shù)值寫磁盤,然后推送到Hadoop平臺,第二天再依據(jù)Hadoop平臺進行離線計算,獲得業(yè)務前一天的各項統(tǒng)計指標。但Hadoop平臺只是一個離線數(shù)據(jù)的計算平臺,無法實現(xiàn)實時統(tǒng)計。此外,Hadoop平臺上的任務都是串行執(zhí)行的,很多故障是因為前面的任務阻塞,導致后續(xù)簡單的任務無法執(zhí)行。
另外,還有些監(jiān)控系統(tǒng)使用Storm實時計算平臺進行各項數(shù)據(jù)統(tǒng)計的實時計算。但Storm監(jiān)控系統(tǒng)對于機器的內(nèi)存要求較高,技術門檻高,且做實時統(tǒng)計的代價較高。
因此,本領域內(nèi)的技術人員還在致力于尋找其它的業(yè)務數(shù)據(jù)實時監(jiān)控解決方案。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明實施例中一方面提供一種業(yè)務數(shù)據(jù)的發(fā)送、統(tǒng)計方法,另一方面提供一種業(yè)務數(shù)據(jù)的發(fā)送、統(tǒng)計裝置和系統(tǒng),用以在低內(nèi)存消耗的情況下實現(xiàn)業(yè)務數(shù)據(jù)的實時統(tǒng)計,以便根據(jù)該實時統(tǒng)計數(shù)據(jù)進行實時監(jiān)控。
本發(fā)明實施例中提供的一種業(yè)務數(shù)據(jù)的發(fā)送方法,包括:
對于當前業(yè)務產(chǎn)生的各分類項的當前數(shù)值,業(yè)務服務器將包含所述當前業(yè)務的業(yè) 務標識、所述業(yè)務服務器的IP地址、以及所述當前業(yè)務的各分類項的當前數(shù)值在內(nèi)的信息,按照設定的數(shù)據(jù)包格式進行打包,生成一數(shù)據(jù)包;
業(yè)務服務器將所述數(shù)據(jù)包發(fā)送給一單機統(tǒng)計服務器。
本發(fā)明實施例中提供的一種業(yè)務數(shù)據(jù)的統(tǒng)計方法,包括:
單機統(tǒng)計服務器按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息;
單機統(tǒng)計服務器接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值;
單機統(tǒng)計服務器根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則根據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分類項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中;
單機統(tǒng)計服務器在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值按照設定的數(shù)據(jù)包格式打包,生成包含至少一個單機統(tǒng)計分量的單機匯總數(shù)據(jù)包;其中,每個單機統(tǒng)計分量包括業(yè)務標識、所述業(yè)務的統(tǒng)計項標識、以及所述統(tǒng)計項的統(tǒng)計值;將所述單機匯總數(shù)據(jù)包發(fā)送給匯總服務器,同時清空所述緩存;或者單機統(tǒng)計服務器在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中,同時清空所述緩存。
本發(fā)明實施例中提供的一種業(yè)務數(shù)據(jù)的發(fā)送裝置,包括:
數(shù)據(jù)包生成模塊,用于對于當前業(yè)務產(chǎn)生的各分類項的當前數(shù)值,將包含所述當前業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述當前業(yè)務的各分類項的當前數(shù)值在內(nèi)的信息,按照設定的數(shù)據(jù)包格式進行打包,生成一數(shù)據(jù)包;
數(shù)據(jù)包發(fā)送模塊,用于將所述數(shù)據(jù)包發(fā)送給一單機統(tǒng)計服務器。
本發(fā)明實施例中提供的一種業(yè)務數(shù)據(jù)的統(tǒng)計裝置,包括:
配置加載模塊,用于按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息;
數(shù)據(jù)包接收模塊,用于接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值;
數(shù)據(jù)統(tǒng)計模塊,用于根據(jù)所述業(yè)務標識確定存在針對所述業(yè)務的配置信息時,根 據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分類項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中;
結(jié)果存儲模塊,用于在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中,同時清空所述緩存。
本發(fā)明實施例中提供的一種業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng),包括:至少兩臺分布式單機統(tǒng)計裝置和至少一臺匯總統(tǒng)計裝置;其中,
每臺單機統(tǒng)計裝置用于根據(jù)預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息;接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值;根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則根據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分類項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中;在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值按照設定的數(shù)據(jù)包格式打包,生成包含至少一個單機統(tǒng)計分量的單機匯總數(shù)據(jù)包;其中,每個單機統(tǒng)計分量包括業(yè)務標識、所述業(yè)務的統(tǒng)計項標識、以及所述統(tǒng)計項的統(tǒng)計值;將所述單機匯總數(shù)據(jù)包發(fā)送給匯總服務器,同時清空所述緩存;
每臺匯總統(tǒng)計裝置用于接收各分布式單機統(tǒng)計服務器單機匯總數(shù)據(jù)包,從所述單機匯總數(shù)據(jù)包解析出各單機統(tǒng)計分量;根據(jù)所述業(yè)務標識判斷緩存中是否有所述業(yè)務的相應統(tǒng)計項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應統(tǒng)計項的統(tǒng)計值,將所述單機統(tǒng)計分量中所述統(tǒng)計項的統(tǒng)計值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則直接將所述業(yè)務的所述統(tǒng)計項的統(tǒng)計值作為統(tǒng)計值寫入緩存中;在達到設定的實時結(jié)果輸出時間時,將本時間片內(nèi)所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中。
本發(fā)明實施例中提供的又一種業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng),包括:上述的業(yè)務數(shù)據(jù)的發(fā)送裝置;和上述的業(yè)務數(shù)據(jù)的統(tǒng)計裝置。
本發(fā)明實施例中提供的一種業(yè)務數(shù)據(jù)的監(jiān)控系統(tǒng),包括:
業(yè)務監(jiān)控模塊,以及上述的業(yè)務數(shù)據(jù)的統(tǒng)計裝置或上述的業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)或上述的業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng);其中,
所述業(yè)務監(jiān)控模塊用于從存儲器中讀取一業(yè)務的一分類項的統(tǒng)計結(jié)果,將所述統(tǒng)計結(jié)果與預先設定的對應所述分類項的告警閾值進行比較,當達到所述告警閾值時,發(fā)出告警;和/或,從存儲器中讀取一業(yè)務的一分類項的統(tǒng)計結(jié)果,判斷所述統(tǒng)計結(jié)果是否滿足設定的反饋條件,如果滿足,則將所述統(tǒng)計結(jié)果反饋給業(yè)務管理系統(tǒng)。
可見,本發(fā)明實施例中,由于能夠?qū)斍皹I(yè)務的各分類項的當前數(shù)值打包發(fā)送,進而由分布式并行處理的單機統(tǒng)計服務器對各業(yè)務的相應分類項進行實時統(tǒng)計和輸出,使得匯總服務器可以實時對來自各單機統(tǒng)計服務器的各統(tǒng)計項進行匯總,并實時將匯總后的數(shù)據(jù)存儲到存儲介質(zhì)中,從而可以實現(xiàn)業(yè)務數(shù)據(jù)的實時統(tǒng)計,并且由于統(tǒng)計過程是分時分層進行的,因此可以較小的消耗內(nèi)存。
附圖說明
為了更清楚的說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來說,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。其中,
圖1a和圖1b為本發(fā)明各個實施例所涉及的兩種實施環(huán)境的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例中一種業(yè)務數(shù)據(jù)的發(fā)送方法的示例性流程圖;
圖3為本發(fā)明一個示例中數(shù)據(jù)包的組成及格式的示意圖;
圖4a為本發(fā)明實施例中一種業(yè)務數(shù)據(jù)的單機統(tǒng)計方法的示例性流程圖;
圖4b為本發(fā)明實施例中又一種業(yè)務數(shù)據(jù)的單機統(tǒng)計方法的示例性流程圖;
圖5為本發(fā)明一個示例中的配置文件的示意圖;
圖6為本發(fā)明一個示例中在內(nèi)存中進行緩存的存儲結(jié)構(gòu)示意圖;
圖7為一個示例中單機匯總數(shù)據(jù)包的組成及格式示意圖;
圖8為本發(fā)明實施例中一種業(yè)務數(shù)據(jù)的匯總統(tǒng)計方法的示例性流程圖;
圖9為本發(fā)明實施例中業(yè)務數(shù)據(jù)的發(fā)送裝置的示例性結(jié)構(gòu)圖;
圖10為本發(fā)明實施例中業(yè)務數(shù)據(jù)的統(tǒng)計裝置的示例性結(jié)構(gòu)圖;
圖11為本發(fā)明實施例中業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)的示例性結(jié)構(gòu)圖;
圖12為本發(fā)明實施例中一種服務器設備的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,以下舉實施例對本發(fā)明進一步詳細說明。
圖1a為本發(fā)明各個實施例所涉及的一種實施環(huán)境的結(jié)構(gòu)示意圖。如圖1a所示,該實施環(huán)境包括至少一臺業(yè)務服務器110,至少兩臺分布式單機統(tǒng)計服務器120和至少一臺匯總服務器130。第一種實施環(huán)境應用于具有大型業(yè)務數(shù)據(jù)統(tǒng)計需求的應用中。圖1b為本發(fā)明各個實施例所涉及的又一種實施環(huán)境的結(jié)構(gòu)示意圖。如圖1b所示,該實施環(huán)境包括至少一臺業(yè)務服務器110和至少一臺單機統(tǒng)計服務器120。第二種實施環(huán)境應用于具有小型業(yè)務數(shù)據(jù)統(tǒng)計需求的應用中。
其中,不同的業(yè)務服務器110可以處理不同的業(yè)務,也可以處理相同的業(yè)務,同一臺業(yè)務服務器110可以只處理一個業(yè)務,也可以處理多項不同的業(yè)務。
業(yè)務服務器110與單機統(tǒng)計服務器120之間、單機統(tǒng)計服務器120與匯總服務器130之間,分別可以通過無線網(wǎng)絡或有線網(wǎng)絡相連。
對于圖1a所示實施環(huán)境,各分布式單機統(tǒng)計服務器120是采用多機器并行接收的架構(gòu),一方面可防止單機故障,另一方面可提高實時統(tǒng)計的吞吐量。由于每臺單機統(tǒng)計服務器120的業(yè)務邏輯完全相同,因此能夠很方便的進行平行擴展,實現(xiàn)各業(yè)務服務器110的業(yè)務在各分布式單機統(tǒng)計服務器120上均衡負載。此外,匯總服務器130通??梢圆贾弥鱾鋬膳_,以防止單機故障。
對于圖1b所示實施環(huán)境,單機統(tǒng)計服務器120也可以布置主備兩臺,以防止單機故障。
圖2為本發(fā)明實施例中一種業(yè)務數(shù)據(jù)的發(fā)送方法的示例性流程圖。該方法可應用于圖1a和圖1b所示的每臺業(yè)務服務器110中。如圖2所示,該方法可包括如下步驟:
步驟201,對于當前業(yè)務產(chǎn)生的各分類項的當前數(shù)值,將包含所述當前業(yè)務的業(yè)務標識、來源的業(yè)務服務器的IP地址、以及所述當前業(yè)務的各分類項的當前數(shù)值在內(nèi)的信息,按照設定的數(shù)據(jù)包格式進行打包,生成一數(shù)據(jù)包。
本實施例中,數(shù)據(jù)包格式可以有多種。例如,可以采用tlv(type_length_value)格式,該格式通用性較強,幾乎所有業(yè)務都通用,并且可以實現(xiàn)每個字段的自解析,與業(yè)務之間無需約定額外的協(xié)議,從而可適配所有業(yè)務。此外,也可以采用字符串格式,或者以及其它格式等。
本實施例中,以tlv格式為例,對數(shù)據(jù)包的組成進行描述說明。圖3中示出了 一個示例中數(shù)據(jù)包的組成及格式的示意圖。
如圖3所示,各個字段的含義如下:
Stx[1byte]=2 值為2標識本數(shù)據(jù)包為tlv格式的業(yè)務流水
Bid[4byte] 標識本條數(shù)據(jù)的業(yè)務ID(標識)
Tlvs_len[4byte] 標識本數(shù)據(jù)包后面的數(shù)據(jù)部分的總長度(所有tlv的總長度,不含包頭,虛線框內(nèi)的部分為包頭部分)
Local_ip 標識本數(shù)據(jù)包來源的業(yè)務側(cè)服務器IP地址
Timestamp 發(fā)送本數(shù)據(jù)包的時間戳
Data_tlv 業(yè)務的具體分類項的數(shù)值
T:標識數(shù)值的類型(char/short/int/long long/string)
L:標識數(shù)值的長度
V:具體數(shù)據(jù)(如果為short/int/longlong類型則為網(wǎng)絡序)
在表1所示格式的數(shù)據(jù)包中,業(yè)務各個分類項的數(shù)值通過各自的順序位置進行區(qū)分,本示例中,該順序位置可從0開始。例如,以廣告業(yè)務為例,位置0的Data_tlv可用于放置廣告業(yè)務的訂單號,位置1的Data_tlv可用于放置廣告業(yè)務的訂單時間,位置2的Data_tlv可用于放置廣告業(yè)務是否曝光的指示,位置3的Data_tlv可用于放置廣告業(yè)務曝光后是否有點擊的指示,位置4的Data_tlv可用于放置當前廣告對應的廣告位等。
在一個示例中,可以為業(yè)務提供一個set(設置)函數(shù)接口,每次調(diào)用時業(yè)務方(如業(yè)務服務器110)可以將一個分類項的數(shù)值填寫到一個Data_tlv中。業(yè)務方在代碼中多次調(diào)用該set函數(shù),可將需要統(tǒng)計監(jiān)控的各個分類項的數(shù)值填充進數(shù)據(jù)包的Data_tlv數(shù)組中,從而得到表1所述數(shù)據(jù)包。
在又一個示例中,也可以為業(yè)務提供一個其它的數(shù)據(jù)填充函數(shù),每次調(diào)用該數(shù)據(jù)填充函數(shù)時,業(yè)務方可以將需要統(tǒng)計監(jiān)控的各個分類項的數(shù)值一次性填充進數(shù)據(jù)包的各個Data_tlv數(shù)組中,從而得到表1所述數(shù)據(jù)包。
步驟202,將所述數(shù)據(jù)包發(fā)送給一單機統(tǒng)計服務器。
本步驟中,對于圖1b所示的實施環(huán)境,該業(yè)務服務器可將所述數(shù)據(jù)包直接發(fā)送給所述單機統(tǒng)計服務器。通常情況下,該實施環(huán)境中可以有兩臺單機統(tǒng)計服務器,一臺為主單機統(tǒng)計服務器,一臺為備單機統(tǒng)計服務器,以防止出現(xiàn)單機故障。
在一個示例中,可將填好的數(shù)據(jù)包調(diào)用send(發(fā)送)函數(shù)接口發(fā)送給單機統(tǒng)計服務器120即可。
對于圖1a所示的實施環(huán)境,該業(yè)務服務器可根據(jù)對所述至少兩臺分布式單機統(tǒng)計 服務器進行負載均衡處理后確定的發(fā)送規(guī)則,將所述數(shù)據(jù)包發(fā)送給所述發(fā)送規(guī)則確定的當前單機統(tǒng)計服務器。
在一個示例中,可在send函數(shù)接口中調(diào)用一個負載均衡組件,通過該負載均衡組件實時剔除存在故障的單機統(tǒng)計服務器,感知新上線的單機統(tǒng)計服務器,并且在多臺分布式單機統(tǒng)計服務器中進行平均分配,實現(xiàn)負載均衡。
圖4a為本發(fā)明實施例中一種業(yè)務數(shù)據(jù)的單機統(tǒng)計方法的示例性流程圖。該方法可應用于圖1a所示的每臺單機統(tǒng)計服務器120中。如圖4a所示,該方法可包括如下步驟:
步驟401,按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息。
本步驟中,通過分發(fā)該配置文件給所有的單機統(tǒng)計服務器,來控制單機統(tǒng)計服務器接收數(shù)據(jù)后的處理方式。單機統(tǒng)計服務器可在啟動時加載該配置,并且后續(xù)可通過定時加載更新的配置文件來獲得最新的配置。例如,可以每隔一個設定的時間間隔,如1分鐘、5分鐘、10分鐘、……、1小時等,加載一次最新的配置。
本實施例中的所述配置文件,可用于指示所述業(yè)務包括哪幾個統(tǒng)計項、對哪個分類項進行計數(shù)統(tǒng)計(Count)、對哪個分類項進行累加統(tǒng)計(Sum)、以哪個分類項為關鍵值時對哪個分類項進行計數(shù)統(tǒng)計(Distinct_count)、以及以哪個分類項為關鍵值時對哪個分類項進行累加統(tǒng)計(Distinct_sum)。
圖5示出了一個示例中的配置文件。如圖5所示,該配置文件中指示的內(nèi)容包括:
對業(yè)務ID為0的業(yè)務進行配置,具體地,對該業(yè)務下的第一個統(tǒng)計,即Id=0的統(tǒng)計為:以該業(yè)務下的位置0處的Data_tlv為關鍵(key)值(即key_num=0),對該業(yè)務下的位置2處的Data_tlv(即num=1)進行計數(shù)統(tǒng)計(即Calc_type=distinct_count),對該業(yè)務下的第二個統(tǒng)計,即Id=1的統(tǒng)計為:直接對該業(yè)務下的位置3處的Data_tlv(即num=2)進行計數(shù)統(tǒng)計(即Calc_type=count);……
步驟402,接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值。
本步驟中,數(shù)據(jù)包的格式可如圖3所示。
步驟403,根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則執(zhí)行步驟404;否則,可放棄所述數(shù)據(jù)包。
本步驟中,針對一項業(yè)務可能存在多項統(tǒng)計,則下述步驟404和步驟405中就需要遍歷配置信息中的每項配置,依次完成對應的分類項統(tǒng)計。
步驟404,根據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分 類項的在先統(tǒng)計值,如果有,則執(zhí)行步驟405;否則,執(zhí)行步驟406。
步驟405,從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中。
本步驟中,根據(jù)配置信息的統(tǒng)計要求,涉及到的統(tǒng)計計算可能包括:
Count:對該Data_tlv上的數(shù)值進行累加計數(shù),將計數(shù)結(jié)果再寫回緩存;
Sum:從緩存中取出上次求和的值,與當前值進行求和,將求和結(jié)果再寫回緩存;
Distinct_count:讀取Data_tlv上的數(shù)值,將其作為key值,從緩存中取出對應該key值的計數(shù)統(tǒng)計值進行累加計數(shù),將計數(shù)結(jié)果再寫回緩存;
Distinct_sum:讀取Data_tlv上數(shù)值,將其作為key值,從緩存中取出對應該key值的求和統(tǒng)計值與當前Data_tlv字段的數(shù)值求和,將求和結(jié)果再寫回緩存。
圖6示出了一個示例中在內(nèi)存中進行緩存的存儲結(jié)構(gòu)示意圖。如圖6所示,在一級檢索中,存儲的是各個業(yè)務的業(yè)務ID,在二級檢索中,存儲的是各業(yè)務ID對應的業(yè)務的各項統(tǒng)計,在最后的統(tǒng)計單元中,存儲的是每項統(tǒng)計下具體的統(tǒng)計值。例如,假設業(yè)務ID為0的業(yè)務的第3項統(tǒng)計為以訂單號為關鍵值,對各訂單號下的訂單數(shù)進行計數(shù)統(tǒng)計,則可得到訂單0的數(shù)量,訂單1的數(shù)量,訂單2的數(shù)量,……;假設業(yè)務ID為0的業(yè)務的第4項統(tǒng)計為以廣告位為關鍵值,對各廣告位下的廣告數(shù)進行計數(shù)統(tǒng)計,則可得到廣告位0的廣告數(shù)量,廣告位1的廣告數(shù)量,廣告位2的廣告數(shù)量,……。
步驟406,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中。
步驟407a,在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應分類項的統(tǒng)計值按照設定的數(shù)據(jù)包格式打包,生成包含至少一個單機統(tǒng)計分量的單機匯總數(shù)據(jù)包。其中,每個單機統(tǒng)計分量包括業(yè)務標識、所述業(yè)務的統(tǒng)計項標識、以及所述統(tǒng)計項的統(tǒng)計值。
本實施例中,設定的實時結(jié)果輸出時間可以為1秒鐘、2秒鐘、……、5秒鐘、……、以及1分鐘等時間。
圖7中示出了一個示例中單機匯總數(shù)據(jù)包的組成及格式示意圖。如圖7所示,該單機匯總數(shù)據(jù)包包括包頭和包體,包體包括至少一個單機統(tǒng)計分量組成的數(shù)組。其中,各字段的含義如下:
包頭字段說明:
Max_len:包的最大長度;
Len:包數(shù)據(jù)部分的長度,不含包頭長度。
每個單機統(tǒng)計分量的字段說明:
Len:單機統(tǒng)計分量的長度;
Bid:業(yè)務ID;
Id:統(tǒng)計項ID;
Reserved:(預留項);
Value:統(tǒng)計的結(jié)果值,無論計算類型為(count sum distinct_count distinct_sum)中的哪一個;
Key_tlv:distinct統(tǒng)計的key字段,對于count和sum,可默認直接填0。
例如,對應圖6所示存儲結(jié)構(gòu)中存儲的內(nèi)容,其中一個單機統(tǒng)計分量中的Key_tlv可以為order0,相應地,前面的value為訂單0的數(shù)量;另一個單機統(tǒng)計分量中的Key_tlv可以為order1,相應地,前面的value為訂單1的數(shù)量;再一個單機統(tǒng)計分量中的Key_tlv可以為order2,相應地,前面的value為訂單2的數(shù)量,依次類推。
步驟408,將所述單機匯總數(shù)據(jù)包發(fā)送給匯總服務器,同時清空所述緩存。
圖4b為本發(fā)明實施例中又一種業(yè)務數(shù)據(jù)的統(tǒng)計方法的示例性流程圖。該方法可應用于圖1b所示的每臺單機統(tǒng)計服務器120中。如圖4b所示,該方法可包括如下步驟:
步驟401~步驟406的詳細描述與圖4a中一致,此處不再贅述。
步驟407b,在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應分類項的統(tǒng)計值寫入存儲器中,同時清空所述緩存。
圖8為本發(fā)明實施例中一種業(yè)務數(shù)據(jù)的匯總統(tǒng)計方法的示例性流程圖。該方法可應用于圖1a所示的每臺匯總服務器130中。如圖8所示,該方法可包括如下步驟:
步驟801,接收來自至少一個單機統(tǒng)計服務器的單機匯總數(shù)據(jù)包,從所述單機匯總數(shù)據(jù)包解析出各單機統(tǒng)計分量。其中,每個單機統(tǒng)計分量包括業(yè)務標識、所述業(yè)務的統(tǒng)計項標識、以及所述統(tǒng)計項的統(tǒng)計值。
本實施例中,可將分發(fā)給所有單機統(tǒng)計服務器的配置文件同時配置在匯總服務器中,以便于匯總服務器對所接收的單機匯總數(shù)據(jù)包中的數(shù)據(jù)進行處理。同樣該匯總服務器也可在啟動時加載該配置,并且后續(xù)可通過定時加載更新的配置文件來獲得最新的配置。例如,可以每隔一個設定的時間間隔,如1分鐘、5分鐘、10分鐘、……、1小時等,加載一次最新的配置。即匯總服務器可按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息。
或者,在另一種實施方式中,也可不在匯總服務器中進行配置文件的配置,而是 由單機統(tǒng)計服務器在步驟407a中組包單機匯總數(shù)據(jù)包時,在所述數(shù)據(jù)包中添加相應的解析信息,由匯總服務器直接對來自單機統(tǒng)計服務器的數(shù)據(jù)進行解析后,按照與各單機統(tǒng)計服務器相同的格式,將來自各單機統(tǒng)計服務器的單機匯總數(shù)據(jù)包中的相應數(shù)據(jù)進行累加統(tǒng)計。
步驟802,根據(jù)所述業(yè)務標識判斷緩存中是否有所述業(yè)務的相應統(tǒng)計項的在先統(tǒng)計值,如果有,則執(zhí)行步驟803;否則,執(zhí)行步驟804。
本實施例中,對于加載配置文件的實施方式,步驟802之前,可進一步根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則根據(jù)所述配置信息的統(tǒng)計要求,執(zhí)行步驟802。
步驟803,從緩存中讀取所述業(yè)務的相應統(tǒng)計項的統(tǒng)計值,將所述單機統(tǒng)計分量中所述統(tǒng)計項的統(tǒng)計值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中。
本實施例中,在內(nèi)存中進行緩存的存儲結(jié)構(gòu)可與單機統(tǒng)計服務器中的存儲結(jié)構(gòu)一致,此處不再贅述。
步驟804,直接將所述業(yè)務的所述統(tǒng)計項的統(tǒng)計值作為統(tǒng)計值寫入緩存中。
步驟805,在達到設定的實時結(jié)果輸出時間時,將本時間片內(nèi)所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中,同時清空所述緩存。
本發(fā)明實施例中,圖2和圖4b共同構(gòu)成圖1b所示實施環(huán)境下的業(yè)務數(shù)據(jù)實時統(tǒng)計,圖2、圖4a和圖8共同構(gòu)成圖1a所示實施環(huán)境下的業(yè)務數(shù)據(jù)實時統(tǒng)計。實時統(tǒng)計后的數(shù)據(jù)在存儲到存儲器中后用于監(jiān)控系統(tǒng)進行業(yè)務數(shù)據(jù)的實時讀取和監(jiān)控。圖4b和圖8中所述的存儲器為非易失性存儲器,其可以為磁盤(如硬盤、軟盤、閃存等)、光盤(如CD-ROM等)、磁光存儲介質(zhì)(如MO等)等。
在之后的業(yè)務數(shù)據(jù)監(jiān)控中,可實時的(如上述每1秒寫存儲器的實施方式,則可每秒讀取存儲器,上述每2秒寫存儲器的實施方式,則可每2秒讀取存儲器等)從存儲器中讀取相應業(yè)務的相應分類項的統(tǒng)計結(jié)果進行監(jiān)控。例如,可以監(jiān)控關鍵訂單的執(zhí)行情況,監(jiān)控關鍵客戶的廣告播放進度,實時監(jiān)控資源流量分配情況(曾經(jīng)cookieMapping業(yè)務經(jīng)常會在某幾個時刻出現(xiàn)負載過高,但是又不知道突發(fā)流量來自哪里,只能通過抓包方式定位,然而抓包都是在發(fā)生之后實施,并且也不一定能夠準確定位。而應用本發(fā)明實施例中的數(shù)據(jù)統(tǒng)計方案后,則可以輕松的看到當時是由于哪個dsp引起或者某個騰訊自己的站點流量突增引起,方便發(fā)現(xiàn)問題)等。
此外,還可以預先設置針對相應業(yè)務相應分類項的告警閾值,通過實時的從存儲器中讀取相應業(yè)務的相應分類項的統(tǒng)計結(jié)果,將所述統(tǒng)計結(jié)果與預先設定的對應所述 分類項的告警閾值進行比較,當達到所述告警閾值時,發(fā)出告警。例如,當某個訂單超播時,可以立即發(fā)出告警,或當某個資源沒有流量到達時發(fā)出告警,或當某個關鍵訂單播放量跌0時發(fā)出告警等。
另外,還可以實時地從存儲器中讀取相應業(yè)務的相應分類項的統(tǒng)計結(jié)果,判斷所述統(tǒng)計結(jié)果是否滿足設定的反饋條件,如果滿足,則將所述統(tǒng)計結(jié)果反饋給業(yè)務管理系統(tǒng)。例如,當某個維度的數(shù)值符合一定條件時,可以反饋到線上業(yè)務系統(tǒng),由業(yè)務系統(tǒng)進行動態(tài)調(diào)整。如當某臺機器請求量跌0,或者響應數(shù)跌0,或者超時量大于閥值,可以反饋給線上系統(tǒng),實時踢除該機器,等待人工定位。如當某個訂單播放達標時,也可以反饋給線上系統(tǒng)直接停止訂單。品牌程序化購買時也可以用來實時監(jiān)控訂單的回退量和總發(fā)送量,反饋給線上系統(tǒng),當回退到一定比例后,直接播放默認單。
下述為本發(fā)明裝置實施例,可以用于執(zhí)行本發(fā)明對應的方法實施例。對于本發(fā)明裝置實施例中未披露的細節(jié),請參照本發(fā)明方法實施例中的描述。
圖9為本發(fā)明實施例中業(yè)務數(shù)據(jù)的發(fā)送裝置的示例性結(jié)構(gòu)圖。該裝置可應用于圖1a和圖1b所示的每臺業(yè)務服務器110中。如圖9所示,該裝置可包括:數(shù)據(jù)包生成模塊901和數(shù)據(jù)包發(fā)送模塊902。
其中,數(shù)據(jù)包生成模塊901用于對于當前業(yè)務產(chǎn)生的各分類項的當前數(shù)值,將包含所述當前業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述當前業(yè)務的各分類項的當前數(shù)值在內(nèi)的信息,按照設定的數(shù)據(jù)包格式進行打包,生成一數(shù)據(jù)包。
數(shù)據(jù)包發(fā)送模塊902用于將所述數(shù)據(jù)包發(fā)送給一單機統(tǒng)計服務器。
在一個實施方式中,當存在至少兩臺分布式單機統(tǒng)計服務器時,數(shù)據(jù)包發(fā)送模塊902可根據(jù)對所述至少兩臺分布式單機統(tǒng)計服務器進行負載均衡處理后確定的發(fā)送規(guī)則,將所述數(shù)據(jù)包發(fā)送給所述發(fā)送規(guī)則確定的當前單機統(tǒng)計服務器。
圖10為本發(fā)明實施例中業(yè)務數(shù)據(jù)的統(tǒng)計裝置的示例性結(jié)構(gòu)圖。該裝置可應用于圖1b所示的每臺單機統(tǒng)計服務器120中。如圖10所示,該裝置可包括:配置加載模塊1001、數(shù)據(jù)包接收模塊1002、數(shù)據(jù)統(tǒng)計模塊1003和結(jié)果存儲模塊1004。
其中,配置加載模塊1001用于按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息。其中,所述配置信息包括如下信息中的任一個或任意組合:所述業(yè)務包括幾個統(tǒng)計項、對哪個分類項進行計數(shù)統(tǒng)計、對哪個分類項進行累加統(tǒng)計、以哪個分類項為關鍵值時對哪個分類項進行計數(shù)統(tǒng)計、以及以哪個分類項為關鍵值時對哪個分類項進行累加統(tǒng)計。
數(shù)據(jù)包接收模塊1002用于接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值。
數(shù)據(jù)統(tǒng)計模塊1003用于根據(jù)所述業(yè)務標識確定存在針對所述業(yè)務的配置信息時,根據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分類項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中。
結(jié)果存儲模塊1004用于在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中,同時清空所述緩存。
圖11為本發(fā)明實施例中業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)的示例性結(jié)構(gòu)圖。如圖11所示,該系統(tǒng)可包括至少兩個分布式單機統(tǒng)計裝置1110和至少一個匯總統(tǒng)計裝置1120。其中,每個單機統(tǒng)計裝置1110可應用于圖1a所示的每臺單機統(tǒng)計服務器120中,每個匯總統(tǒng)計裝置1120可應用于圖1a所示的每臺匯總服務器130中。
其中,每臺單機統(tǒng)計裝置1110用于根據(jù)預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息;接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值;根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則根據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分類項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中;在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值按照設定的數(shù)據(jù)包格式打包,生成包含至少一個單機統(tǒng)計分量的單機匯總數(shù)據(jù)包;其中,每個單機統(tǒng)計分量包括業(yè)務標識、所述業(yè)務的統(tǒng)計項標識、以及所述統(tǒng)計項的統(tǒng)計值;將所述單機匯總數(shù)據(jù)包發(fā)送給匯總服務器,同時清空所述緩存。
每臺匯總統(tǒng)計裝置1120用于接收各分布式單機統(tǒng)計服務器單機匯總數(shù)據(jù)包,從所述單機匯總數(shù)據(jù)包解析出各單機統(tǒng)計分量;根據(jù)所述業(yè)務標識判斷緩存中是否有所述業(yè)務的相應統(tǒng)計項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應統(tǒng)計項的統(tǒng)計值,將所述單機統(tǒng)計分量中所述統(tǒng)計項的統(tǒng)計值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則直接將所述業(yè)務的所述統(tǒng)計項的統(tǒng)計值作為統(tǒng)計值寫入緩存中;在達到設定的實時結(jié)果輸出 時間時,將本時間片內(nèi)所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中。
在一個實施方式中,匯總統(tǒng)計裝置1120可按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息;并在接收到來自至少一個單機統(tǒng)計服務器的單機匯總數(shù)據(jù)包并解析出各單機統(tǒng)計分量后,根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則根據(jù)所述配置信息的統(tǒng)計要求,執(zhí)行所述計數(shù)和/或累加統(tǒng)計。
在一個實施方式中,每臺單機統(tǒng)計裝置可包括:配置加載模塊1111、數(shù)據(jù)包接收模塊1112、數(shù)據(jù)統(tǒng)計模塊1113、匯總數(shù)據(jù)生成模塊1114和數(shù)據(jù)包發(fā)送模塊1115。
其中,配置加載模塊1111用于按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息。
數(shù)據(jù)包接收模塊1112用于接收來自一業(yè)務服務器的數(shù)據(jù)包;所述數(shù)據(jù)包中包含一業(yè)務的業(yè)務標識、所述業(yè)務服務器的IP地址、以及所述業(yè)務的各分類項的數(shù)值。
數(shù)據(jù)統(tǒng)計模塊1113用于根據(jù)所述業(yè)務標識確定存在針對所述業(yè)務的配置信息時,根據(jù)所述配置信息的統(tǒng)計要求,判斷緩存中是否有所述業(yè)務的相應分類項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應分類項的統(tǒng)計值,將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則,直接將所述數(shù)據(jù)包中所述業(yè)務的相應分類項的數(shù)值作為統(tǒng)計值存入緩存中。
匯總數(shù)據(jù)生成模塊1114用于在達到設定的實時結(jié)果輸出時間時,將本時間片的所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值按照設定的數(shù)據(jù)包格式打包,生成包含至少一個單機統(tǒng)計分量的單機匯總數(shù)據(jù)包;其中,每個單機統(tǒng)計分量包括業(yè)務標識、所述業(yè)務的統(tǒng)計項標識、以及所述統(tǒng)計項的統(tǒng)計值。
數(shù)據(jù)包發(fā)送模塊1115用于將所述單機匯總數(shù)據(jù)包發(fā)送給匯總服務器,同時清空所述緩存。
在一個實施方式中,每臺匯總統(tǒng)計裝置可包括:數(shù)據(jù)包接收模塊1121、匯總統(tǒng)計模塊1122和結(jié)果存儲模塊1123。
其中,數(shù)據(jù)包接收模塊1121用于接收來自至少一個單機統(tǒng)計服務器的單機匯總數(shù)據(jù)包,從所述單機匯總數(shù)據(jù)包解析出各單機統(tǒng)計分量。
匯總統(tǒng)計模塊1122用于根據(jù)所述業(yè)務標識判斷緩存中是否有所述業(yè)務的相應統(tǒng)計項的在先統(tǒng)計值,如果有,則從緩存中讀取所述業(yè)務的相應統(tǒng)計項的統(tǒng)計值,將所述單機統(tǒng)計分量中所述統(tǒng)計項的統(tǒng)計值分別與所讀取的對應統(tǒng)計值進行計數(shù)和/或累 加統(tǒng)計,將統(tǒng)計結(jié)果寫回緩存中;否則直接將所述業(yè)務的所述統(tǒng)計項的統(tǒng)計值作為統(tǒng)計值寫入緩存中。
結(jié)果存儲模塊1123用于在達到設定的實時結(jié)果輸出時間時,將本時間片內(nèi)所述緩存中的至少一個業(yè)務的相應統(tǒng)計項的統(tǒng)計值寫入存儲器中。
在又一個實施方式中,每臺匯總統(tǒng)計裝置還可進一步包括:配置加載模塊1124,用于按照預定時間規(guī)則讀取針對至少一個業(yè)務的配置文件,生成針對所述至少一個業(yè)務中的各個業(yè)務的配置信息。相應地,所述匯總統(tǒng)計模塊1122可根據(jù)所述業(yè)務標識判斷是否存在針對所述業(yè)務的配置信息,如果是,則根據(jù)所述配置信息的統(tǒng)計要求,執(zhí)行所述計數(shù)和/或累加統(tǒng)計。
進一步地,該業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)還可進一步包括圖9所示的業(yè)務數(shù)據(jù)的發(fā)送裝置。
此外,圖9所示的業(yè)務數(shù)據(jù)的發(fā)送裝置和圖10所示的業(yè)務數(shù)據(jù)的統(tǒng)計裝置也可構(gòu)成本發(fā)明又一實施例中的業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)。
本發(fā)明實施例中還提供一種業(yè)務數(shù)據(jù)的監(jiān)控系統(tǒng),其可包括一業(yè)務監(jiān)控模塊(圖中未示出),以及如圖10所述的業(yè)務數(shù)據(jù)的統(tǒng)計裝置或如圖11所述的業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)。其中,所述業(yè)務監(jiān)控模塊用于從存儲器中讀取一業(yè)務的一分類項的統(tǒng)計結(jié)果,將所述統(tǒng)計結(jié)果與預先設定的對應所述分類項的告警閾值進行比較,當達到所述告警閾值時,發(fā)出告警;和/或,從存儲器中讀取一業(yè)務的一分類項的統(tǒng)計結(jié)果,判斷所述統(tǒng)計結(jié)果是否滿足設定的反饋條件,如果滿足,則將所述統(tǒng)計結(jié)果反饋給業(yè)務管理系統(tǒng)。具體實現(xiàn)時,所述業(yè)務監(jiān)控模塊可以在圖10所示的業(yè)務數(shù)據(jù)的統(tǒng)計裝置中實現(xiàn),也可在圖11所示的業(yè)務數(shù)據(jù)的統(tǒng)計系統(tǒng)的匯總服務器中實現(xiàn)。此外,也可以在第三方服務器中實現(xiàn)。
圖12為本發(fā)明實施例中一種服務器設備的結(jié)構(gòu)示意圖。如圖12所示,該服務器設備可包括:處理器1201、非易失性計算機可讀存儲器1202、輸入輸出控制器1203、網(wǎng)絡通信接口1204。這些組件通過總線1205進行通信。
本實施例中,存儲器1202中存儲有多個程序模塊,例如,操作系統(tǒng)1206、網(wǎng)絡通信模塊1207和應用程序1208。
處理器1201可以讀取存儲器1202中的應用程序中的各種模塊(圖中未示出)來執(zhí)行服務器設備的各種功能應用以及數(shù)據(jù)處理。本實施例中的處理器1201可以為一個,也可以為多個,其可以為CPU,處理單元/模塊,ASIC,邏輯模塊或可編程門陣列等。
輸入輸出控制器1203具有顯示器和輸入設備,用于完成相關數(shù)據(jù)的輸入、輸出及 顯示等。
操作系統(tǒng)1206包括但不限于:Android操作系統(tǒng)、Symbian操作系統(tǒng)、Windows操作系統(tǒng)、Linux操作系統(tǒng)等等。
應用程序1208可包括業(yè)務數(shù)據(jù)發(fā)送模塊,該業(yè)務數(shù)據(jù)發(fā)送模塊可包括圖9所示裝置中的各個功能模塊形成的計算機可執(zhí)行指令集1209及對應的元數(shù)據(jù)和啟發(fā)式算法1210。這些計算機可執(zhí)行指令集可以由所述處理器1201執(zhí)行并完成圖2所示方法或圖9所示裝置的功能?;蛘撸瑧贸绦?208可包括業(yè)務數(shù)據(jù)的單機統(tǒng)計模塊,該業(yè)務數(shù)據(jù)的單機統(tǒng)計模塊可包括圖10所示裝置中的各個功能模塊形成的計算機可執(zhí)行指令集1209及對應的元數(shù)據(jù)和啟發(fā)式算法1210。這些計算機可執(zhí)行指令集可以由所述處理器1201執(zhí)行并完成圖4b所示方法或圖10所示裝置的功能?;蛘?,應用程序1208包括的業(yè)務數(shù)據(jù)的單機統(tǒng)計模塊可包括圖11所示系統(tǒng)中的單機統(tǒng)計裝置中各個功能模塊形成的計算機可執(zhí)行指令集1209及對應的元數(shù)據(jù)和啟發(fā)式算法1210。這些計算機可執(zhí)行指令集可以由所述處理器1201執(zhí)行并完成圖4a所示方法或圖11所示系統(tǒng)中的單機統(tǒng)計裝置的功能。或者,應用程序1208也可包括業(yè)務數(shù)據(jù)的匯總統(tǒng)計模塊,該業(yè)務數(shù)據(jù)的匯總統(tǒng)計模塊可包括圖11所示系統(tǒng)中的匯總統(tǒng)計裝置中各個功能模塊形成的計算機可執(zhí)行指令集1209及對應的元數(shù)據(jù)和啟發(fā)式算法1210。這些計算機可執(zhí)行指令集可以由所述處理器1201執(zhí)行并完成圖8所示方法或圖11所示系統(tǒng)中的匯總統(tǒng)計裝置的功能。
本實施例中,網(wǎng)絡通信接口1204與網(wǎng)絡通信模塊1206相配合完成服務器設備各種網(wǎng)絡信號的收發(fā),包括與其它服務器之間的網(wǎng)絡數(shù)據(jù)交互等。
另外,本發(fā)明的每一個實施例可以通過由數(shù)據(jù)處理設備如計算機執(zhí)行的數(shù)據(jù)處理程序來實現(xiàn)。顯然,數(shù)據(jù)處理程序構(gòu)成了本發(fā)明。此外,通常存儲在一個存儲介質(zhì)中的數(shù)據(jù)處理程序通過直接將程序讀取出存儲介質(zhì)或者通過將程序安裝或復制到數(shù)據(jù)處理設備的存儲設備(如硬盤和或內(nèi)存)中執(zhí)行。因此,這樣的存儲介質(zhì)也構(gòu)成了本發(fā)明。存儲介質(zhì)可以使用任何類型的記錄方式,例如紙張存儲介質(zhì)(如紙帶等)、磁存儲介質(zhì)(如軟盤、硬盤、閃存等)、光存儲介質(zhì)(如CD-ROM等)、磁光存儲介質(zhì)(如MO等)等。
因此本發(fā)明還提供了一種存儲介質(zhì),其中存儲有數(shù)據(jù)處理程序,該數(shù)據(jù)處理程序用于執(zhí)行本發(fā)明上述方法的任何一種實施例。
本發(fā)明實施例中的技術方案由于采用如下處理:
1、分時統(tǒng)計的方法,降低內(nèi)存占用量。(由于時間間隔短,累積的數(shù)據(jù)不會占用太大的內(nèi)存)。
2、數(shù)據(jù)以tlv格式進行傳輸,讓所有業(yè)務都通用。
3、分層統(tǒng)計的方法,能夠?qū)崿F(xiàn)海量數(shù)據(jù)的實時統(tǒng)計(先做單機分量統(tǒng)計,然后匯總所有統(tǒng)計分量,保證數(shù)據(jù)量再大也能實時處理)。
因此使得本發(fā)明實施例中的技術方案具有如下特點:
一、通用的統(tǒng)計服務。無論業(yè)務的邏輯是什么,實現(xiàn)怎樣的功能,都能調(diào)用本發(fā)明實施例中的業(yè)務數(shù)據(jù)發(fā)送應用程序接口(API)發(fā)送數(shù)據(jù)到本發(fā)明實施例中的統(tǒng)計服務器中進行統(tǒng)計。
二、實時的統(tǒng)計服務。當單機統(tǒng)計服務器以每秒發(fā)送一次單機匯總數(shù)據(jù)包的速度發(fā)送數(shù)據(jù)包給匯總服務器,而匯總服務器以每秒存儲一次統(tǒng)計結(jié)果的速度進行存儲的話,則只需2秒延遲即可觀察到業(yè)務的各種運行狀態(tài)。不需要等待業(yè)務的流水日志落地,然后推送hadoop,第二天才能看到前一天的業(yè)務數(shù)據(jù)報表。方便產(chǎn)品經(jīng)理能夠盡早做決策。實時性也非常適合實驗性質(zhì)的業(yè)務,能夠?qū)崟r得到業(yè)務的實驗數(shù)據(jù)。
三、兼容多業(yè)務同時使用的統(tǒng)計平臺。本發(fā)明能夠根據(jù)業(yè)務ID區(qū)分業(yè)務流水,根據(jù)id來區(qū)分同一業(yè)務下的不同維度的統(tǒng)計,保證各個統(tǒng)計項互不干擾,保證各個業(yè)務的流水相互獨立
四、海量數(shù)據(jù)的處理能力。本發(fā)明的單機統(tǒng)計層采用多機器并行處理,功能統(tǒng)一,方便平行擴展。能夠根據(jù)業(yè)務方的數(shù)據(jù)量動態(tài)調(diào)整集群規(guī)模。從架構(gòu)上保證擁有海量數(shù)據(jù)的處理能力。匯總層只接收單機統(tǒng)計層處理之后的單機統(tǒng)計分量。因此每個業(yè)務每個單機統(tǒng)計服務器每秒鐘內(nèi)只有1條數(shù)據(jù),數(shù)據(jù)量峰值時也是在匯總統(tǒng)計服務器單機可承受的范圍內(nèi)。
此外,本發(fā)明是對當前Hadoop系統(tǒng)在統(tǒng)計領域的速度上的一個補充。對屬性上報系統(tǒng)在監(jiān)控領域的細粒度監(jiān)控的一個補充,也是對Storm系統(tǒng)在實時統(tǒng)計領域的低成本低門檻的一個補充。只有全方位實時監(jiān)控,才能做到防患于未然,保證開發(fā)和運維人員不用再加班加點的定位分析線上問題。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。