本發(fā)明涉及云監(jiān)控領(lǐng)域,尤其涉及一種計算時間分布的方法及裝置。
背景技術(shù):
:云監(jiān)控的數(shù)據(jù)形成業(yè)務(wù)結(jié)構(gòu)大體上可以分為三個階段:采集、分析、入庫。如圖1所示,多個agent(代理)在海量的服務(wù)器上采集多種指標(biāo),將實時采集的采樣數(shù)據(jù)通過gateway(網(wǎng)關(guān))上報給analysis(分析)模塊,由分析模塊進(jìn)行處理后入庫。采樣數(shù)據(jù)中包括不同指標(biāo)的指標(biāo)樣本;指標(biāo)樣本是在某一個時間點采集的相應(yīng)指標(biāo)的數(shù)值,雖然不能完全代表全面的數(shù)據(jù),但是可以作為一種趨勢展現(xiàn)給用戶,達(dá)到監(jiān)控的目標(biāo)。比如采集的指標(biāo)樣本包括cpu數(shù)值和內(nèi)存數(shù)值時,agent上報的采樣數(shù)據(jù)如表一所示。表一、采樣數(shù)據(jù)分析模塊根據(jù)采樣數(shù)據(jù)得到時間序列,進(jìn)行實際時間分布的計算;所述時間序列是指將同一指標(biāo)的數(shù)值按其發(fā)生的時間先后順序排列而成的數(shù)列。時間序列分析的主要目的是根據(jù)已有的歷史數(shù)據(jù)對未來進(jìn)行預(yù)測;時間分布是指將在監(jiān)控系統(tǒng)中的時間序列分布在不同的聚會周期中;計算時間分布是指根據(jù)時間戳計算出采樣數(shù)據(jù)所在的聚合周期,其中,所在的聚合周期可以采用具體的時刻表示,即:時間分布的計算結(jié)果為用于表示某一個聚合周期的具體時刻,比如對于時間戳為2015年12月18日15點45分23秒125毫秒的采樣數(shù)據(jù),如果聚合周期的長度為一分鐘,則時間分布的計算結(jié)果為2015年12月18日15點45分,該具體時刻“2015年12月18日15點45分”表示的是長度為一分鐘的一個聚合周期:從“2015年12月18日15點45分整”到“2015年12月18日15點45分59秒999毫秒”。分別用于表示相鄰的兩個聚合周期的兩個具體時刻之間為固定時間間隔,該固定時間間隔即聚合周期的長度;所述聚合周期的長度可以根據(jù)用戶的期望設(shè)置。如果用戶期望看到每分鐘的指標(biāo)波動,則固定時間間隔為1分鐘,得到的每個聚合周期的指標(biāo)樣本如表二所示。表二、固定時間間隔為1分鐘時每個聚合周期的指標(biāo)樣本編號聚合周期服務(wù)器cpu數(shù)值內(nèi)存數(shù)值12015年12月18日15點45分i-hz-01-cm23%1230m22015年12月18日15點46分i-hz-01-cm18%1330m32015年12月18日15點47分i-hz-01-cm12%1250m42015年12月18日15點48分i-hz-01-cm11%1330m52015年12月18日15點49分i-hz-01-cm08%1340m62015年12月18日15點50分i-hz-01-cm99%1380m72015年12月18日15點51分i-hz-01-cm12%803m82015年12月18日15點52分i-hz-01-cm23%1530m如果用戶期望看到每5分鐘的指標(biāo)波動,則固定時間間隔為5分鐘,得到的每個聚合周期的指標(biāo)樣本如表三所示。表三、固定時間間隔為5分鐘時每個聚合周期的指標(biāo)樣本如果用戶期望看到天的指標(biāo)波動,則固定時間間隔為一天(24小時),得到的每個聚合周期的指標(biāo)樣本如表四所示。表四、固定時間間隔為一天時每個聚合周期的指標(biāo)樣本編號聚合周期服務(wù)器cpu數(shù)值內(nèi)存數(shù)值12015年12月18日i-hz-01-cm23%1230m22015年12月19日i-hz-01-cm25%1310m32015年12月20日i-hz-01-cm19%990m42015年12月21日i-hz-01-cm27%1510m如上表所示,用戶在不同場景下期望看到不同粒度的采樣數(shù)據(jù)波動展示時,可以通過設(shè)置相應(yīng)的聚合周期實現(xiàn)。計算時間分布即根據(jù)時間戳計算采樣數(shù)據(jù)屬于哪個聚合周期的過程?,F(xiàn)有技術(shù)中,在java技術(shù)范疇內(nèi)計算時間分布的方式如下,使用date類型對象記錄時間戳,這個時間戳是指標(biāo)樣本采集實際發(fā)生的時間,一般都是一個散列時間,比如4分13秒,15分01秒等。而用戶期望看到的是每1分鐘的數(shù)據(jù)、每幾分鐘的數(shù)據(jù)、每幾小時的數(shù)據(jù)等。因此分析模塊需要將時間戳根據(jù)固定時間間隔進(jìn)行時間分布的計算。目前比較常用的計算方法的代碼如下:datedata=newdate();calendarc1=calendar.getinstance();c1.settime(newdate());c1.set(calendar.second,0);data=c1.gettime();//data數(shù)據(jù)已經(jīng)被抹去了秒數(shù)據(jù)這種計算方法的大概流程如下:首先將時間戳切分成年、月、日、小時、分鐘、秒、毫秒等幾個數(shù)值。一般是采用split()將一個字符串分割成字符串?dāng)?shù)組,比如將時間戳“2015 年12月18日15點45分23秒125毫秒”切分為“2015年”、“12月”、“18日”、“15點”、“45分”、“23秒”和“125毫秒”。然后根據(jù)時間分布的要求(即固定時間間隔的長度),將上述幾個數(shù)值中的一個或幾個分別進(jìn)行重置。比如固定時間間隔為1分鐘時,將毫秒和秒的數(shù)值置為0。接下來將上述幾個數(shù)值重新合并為時間戳,比如合并后為“2015年12月18日15點45分0秒0毫秒”。最后根據(jù)時間戳獲取時間分布。上述方法的缺點包括:使用split將時間戳切分比較費時,也比較浪費內(nèi)存,需要記錄多個整型數(shù)據(jù),每一個整型數(shù)據(jù)將會占有8個字節(jié)。合并過程也比較浪費時間。而計算時間分布是在analysis階段最重要的一個環(huán)節(jié),該環(huán)節(jié)一旦阻塞,將會讓整個鏈路的吞吐降低,導(dǎo)致數(shù)據(jù)延時或者數(shù)據(jù)丟失。另外,需要用戶分別設(shè)計不同固定時間間隔對應(yīng)的算法。比如五分鐘間隔,需要用戶先將秒級數(shù)據(jù)清零,然后計算分鐘級別數(shù)據(jù)需要重置為多少后再進(jìn)行重置。對于不同的固定時間間隔無法通用一個算法。技術(shù)實現(xiàn)要素:本申請?zhí)峁┝艘环N計算時間分布的方法及裝置,可以解決如何快速的計算出時間分布的問題。本申請采用如下技術(shù)方案。一種計算時間分布的方法,包括:將采樣數(shù)據(jù)中的時間戳轉(zhuǎn)換成相對于預(yù)定起始時刻的時間偏移量;將所述時間偏移量處理為聚合周期的長度的整數(shù)倍;根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期??蛇x地,所述相對于預(yù)定起始時刻的時間偏移量的數(shù)據(jù)類型為長整形;所述聚合周期的長度的單位為毫秒??蛇x地,所述根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期包括:將處理后的時間偏移量作為長整形數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的時刻,所述時刻用于表示所述采樣數(shù)據(jù)所在聚合周期。可選地,所述將所述時間偏移量處理為聚合周期的長度的整數(shù)倍包括:使用所述時間偏移量除以所述聚合周期的長度,將得到的商取整后乘以所述時間偏移量,得到的乘積為所述處理后的時間偏移量??蛇x地,所述取整為向下取整。一種計算時間分布的裝置,包括:第一轉(zhuǎn)換模塊,用于將采樣數(shù)據(jù)中的時間戳轉(zhuǎn)換成相對于預(yù)定起始時刻的時間偏移量;計算模塊,用于將所述時間偏移量處理為聚合周期的長度的整數(shù)倍;第二轉(zhuǎn)換模塊,用于根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期??蛇x地,所述相對于預(yù)定起始時刻的時間偏移量的數(shù)據(jù)類型為長整形;所述聚合周期的長度的單位為毫秒。可選地,所述第二轉(zhuǎn)換模塊根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期包括:所述第二轉(zhuǎn)換模塊將處理后的時間偏移量作為長整形數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的時刻,所述時刻用于表示所述采樣數(shù)據(jù)所在聚合周期。可選地,所述計算模塊將所述時間偏移量處理為聚合周期的長度的整數(shù)倍包括:所述計算模塊使用所述時間偏移量除以所述聚合周期的長度,將得到的商取整后乘以所述時間偏移量,得到的乘積為所述處理后的時間偏移量??蛇x地,所述取整為向下取整。本申請包括以下優(yōu)點:本申請至少一個備選方案通過數(shù)值運算即可計算時間分布,不需要進(jìn)行字符串處理,計算過程中不需要針對一個時間戳構(gòu)造多個整型數(shù)據(jù),因此可以針對大規(guī)模采樣數(shù)據(jù)(比如單核cpu每秒十萬數(shù)據(jù)量)快速計算出時間分布,并且節(jié)省內(nèi)存及cpu資源。由于聚合周期的長度并不影響處理過程,因此可以適應(yīng)于任何長度的聚合周期,比如1分鐘、1小時等,甚至比較冷門的3分鐘、15分鐘等。本申請的又一個備選方案使用長整形的時間記錄表示時間戳,可以提高轉(zhuǎn)換速度。本申請的又一個備選方案只使用了計算機語言中最基礎(chǔ)的乘、除運算,處理性能的消耗和內(nèi)存消耗都非常小。當(dāng)然,實施本申請的任一產(chǎn)品必不一定需要同時達(dá)到以上所述的所有優(yōu)點。附圖說明圖1是現(xiàn)有技術(shù)中云監(jiān)控系統(tǒng)的示意圖;圖2是實施例一的計算時間分布的方法的流程示意圖;圖3是實施例二的一種計算時間分布的裝置的示意圖。具體實施方式下面將結(jié)合附圖及實施例對本申請的技術(shù)方案進(jìn)行更詳細(xì)的說明。需要說明的是,如果不沖突,本申請實施例以及實施例中的各個特征可以相互結(jié)合,均在本申請的保護(hù)范圍之內(nèi)。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。在一個典型的配置中,客戶端或認(rèn)證系統(tǒng)的計算設(shè)備可包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存(memory)。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flash ram)。內(nèi)存是計算機可讀介質(zhì)的示例。內(nèi)存可能包括模塊1,模塊2,……,模塊n(n為大于2的整數(shù))。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom),快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。實施例一、一種計算時間分布的方法,如圖2所示,包括步驟s110~s130。s110、將采樣數(shù)據(jù)中的時間戳轉(zhuǎn)換成相對于預(yù)定起始時刻的時間偏移量;s120、將所述時間偏移量處理為聚合周期的長度的整數(shù)倍;s130、根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期。本實施例中,所述聚合周期的長度可以根據(jù)用戶的期望或系統(tǒng)需求等情況自行設(shè)定。本實施例的一種備選方案中,所述步驟s110中,所述相對于預(yù)定起始時刻的時間偏移量的數(shù)據(jù)類型可以但不限于為長整形。長整形是unix、linux、java、oracle體系常用的記錄時間的方法。在unix體系下,將utc標(biāo)準(zhǔn)時間1970年1月1日零時當(dāng)作0,使用13位長整形記錄相對于所述預(yù)定起始時刻(本備選方案中即utc標(biāo)準(zhǔn)時間1970年1月1日零時)的時間偏移量,每過一毫秒所述長整形的時間記錄增加1,也就是每過一秒鐘增加1000。這種方式廣泛應(yīng)用于java、oracle等計算領(lǐng)域,成為記錄時間的一個技術(shù)級別的標(biāo)準(zhǔn)。在上述系統(tǒng)中,通過時間戳獲得長整形 的時間記錄的速度非??欤粫绊懙接嬎阈?。在其它備選方案中,也不排除使用自行設(shè)置的其它預(yù)定起始時刻來得到時間偏移量,實現(xiàn)原理都和本備選方案相同。本備選方案的一種實施方式中,所述聚合周期的長度的單位為毫秒。其它實施方式中,所述聚合周期的長度的單位也不排除為秒或其它單位,實現(xiàn)原理都是相同的。本備選方案的一種實施方式中,所述步驟s130可以包括:將處理后的時間偏移量作為長整形數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的時刻,所述時刻用于表示所述采樣數(shù)據(jù)所在聚合周期。本實施方式中,所述時刻的格式可以但不限于和所述時間戳的格式相同;比如采樣數(shù)據(jù)中的時間戳“2015年12月15日12點1分2秒235毫秒”轉(zhuǎn)換成的時間偏移量為“1450152062235”,聚合周期的長度為60000毫秒(1分鐘),處理為60000的整數(shù)倍后的時間偏移量為“1450152060000”,則對應(yīng)的時刻為“2015年12月15日12點1分整”,所述采樣數(shù)據(jù)所在的聚合周期就是這個時刻所代表的聚合周期。其它備選方案中,也可以直接采用處理后的時間偏移量來代表聚合周期,或者通過預(yù)定的對應(yīng)關(guān)系得到處理后的時間偏移量所對應(yīng)的聚合周期。本實施例的一種備選方案中,所述步驟s120包括:使用所述時間偏移量除以所述聚合周期的長度,將得到的商取整后乘以所述時間偏移量,得到的乘積為所述處理后的時間偏移量。本備選方案中,只采用乘、除運算即可實現(xiàn)步驟s120,處理性能的消耗和內(nèi)存消耗都非常小。本備選方案中,所述取整可以但不限于為向下取整,也可以是向上取整,可以根據(jù)需要自行設(shè)置。比如當(dāng)用于表示一個聚合周期的具體時刻是該聚合周期的開始時刻時,可以設(shè)置為向下取整;當(dāng)用于表示一個聚合周期的具體時刻是該聚合周期的結(jié)束時刻時,可以設(shè)置為向上取整。比如采樣數(shù)據(jù)中的時間戳為“2015年12月18日15點45分23秒125毫秒”,聚合周期的長度為1分鐘,設(shè)置為向下取整時,處理后的時間偏移量對應(yīng)的時刻是“2015 年12月18日15點45分”;如果設(shè)置為向上取整,則處理后的時間偏移量對應(yīng)的時刻是“2015年12月18日15點46分”。在其它備選方案中,也可以采用其它計算式實現(xiàn)所述步驟s120,比如先獲取所述時間偏移量除以所述聚合周期的長度得到的余數(shù),用所述時間偏移量減去所述余數(shù),得到的結(jié)果即處理后的時間偏移量。下面用一個實施示例說明上述實施例。本示例應(yīng)用于云監(jiān)控系統(tǒng)中的分析模塊,可以統(tǒng)計由固定時間間隔形成的多個時間段中分布的采樣數(shù)據(jù),供用戶作為監(jiān)控參考。在實際場景中單節(jié)點將最高達(dá)到10萬數(shù)據(jù)以上的采樣數(shù)據(jù)處理規(guī)模,針對于每一條采樣數(shù)據(jù)都將記錄其時間分布。當(dāng)所述云監(jiān)控系統(tǒng)中存在多個不同時區(qū)時,本示例的方法適用于任何聚合周期在一天以內(nèi)的時間分布的計算;當(dāng)聚合周期為一天或一天以上時,還需要考慮時區(qū)的影響。本示例中對于每條采樣數(shù)據(jù)的時間分布計算的過程包括步驟301~303。301、將采樣數(shù)據(jù)的時間戳轉(zhuǎn)換為長整形的時間記錄。本示例中時間戳和長整形的時間記錄的對應(yīng)關(guān)系如表五所示。表五、時間戳和對應(yīng)的長整形的時間記錄時間戳長整形的時間記錄2015-12-1512:01:02.23514501520622352015-12-1512:02:05.00114501521250012015-12-1512:03:12.23514501521922352015-12-1512:04:22.12414501522621242015-12-1512:05:52.04614501523520462015-12-1512:06:10.07114501523700712015-12-1512:07:12.85414501524328542015-12-1512:08:32.65114501525126512015-12-1512:09:41.52314501525815232015-12-1512:10:05.12314501526051232015-12-1512:11:21.78814501526817882015-12-1512:12:25.00114501527450012015-12-1512:13:02.93214501527829322015-12-1512:14:08.28914501528482892015-12-1512:15:03.90114501529039012015-12-1512:16:13.0831450152973083302、確認(rèn)聚合周期,根據(jù)用戶期望的聚合周期,形成以毫秒為單位的固定時間間隔。比如聚合周期為一秒則固定時間間隔是1000,聚合周期為1分鐘則固定時間間隔是60000,聚合周期為5分鐘則固定時間間隔是300000,以此類推。303、計算所述采樣數(shù)據(jù)所在的聚合周期,包括步驟3031~3033:3031、將所述采樣數(shù)據(jù)的長整形的時間記錄timestamp除以所述固定時間間隔inteval;3032、將得到的商向下取整,相當(dāng)于將余數(shù)清零。3033、將取整后的商乘以所述固定時間間隔inteval,根據(jù)乘積time得到所述采樣數(shù)據(jù)所在的聚合周期。具體的代碼如下:longtimestamp=1452603389504l;longinteval=60*1000;//一分鐘的間隔毫秒數(shù)longtime=timestamp/inteval*inteval;可以得到time為1452603360000。上述代碼中第一行結(jié)尾的“l(fā)”表示timestamp是一個長整形數(shù)據(jù),以區(qū)別于其它數(shù)據(jù)類型;第三行中的“/”的結(jié)果是已經(jīng)去掉余數(shù)后的商,即向下取整后的商。比如用戶設(shè)置的聚合周期是2分鐘,則inteval=120000,表五的數(shù)據(jù)進(jìn)行步驟303之后的結(jié)果如表六所示,聚合周期以時間點表示。表六、時間分布計算結(jié)果實施例二、一種計算時間分布的裝置,如圖3所示,包括:第一轉(zhuǎn)換模塊21,用于將采樣數(shù)據(jù)中的時間戳轉(zhuǎn)換成相對于預(yù)定起始時刻的時間偏移量;計算模塊22,用于將所述時間偏移量處理為聚合周期的長度的整數(shù)倍;第二轉(zhuǎn)換模塊23,用于根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期。本實施例中,所述第一轉(zhuǎn)換模塊21是所述裝置中負(fù)責(zé)將時間戳轉(zhuǎn)換為時間偏移量的部分,可以是軟件、硬件或兩者的結(jié)合。本實施例中,所述計算模塊22是所述裝置中負(fù)責(zé)對時間偏移量進(jìn)行處理的部分,可以是軟件、硬件或兩者的結(jié)合。本實施例中,所述第二轉(zhuǎn)換模塊23是所述裝置中負(fù)責(zé)根據(jù)處理后的時間偏移量確定聚合周期的部分,可以是軟件、硬件或兩者的結(jié)合。本實施例的一種備選方案中,所述相對于預(yù)定起始時刻的時間偏移量的數(shù)據(jù)類型可以為長整形;所述聚合周期的長度的單位可以為毫秒。本備選方案的一種實施方式中,所述第二轉(zhuǎn)換模塊根據(jù)處理后的時間偏移量確定所述采樣數(shù)據(jù)所在的聚合周期可以包括:所述第二轉(zhuǎn)換模塊將處理后的時間偏移量作為長整形數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的時刻,所述時刻用于表示所述采樣數(shù)據(jù)所在聚合周期。本備選方案的一種實施方式中,所述計算模塊將所述時間偏移量處理為聚合周期的長度的整數(shù)倍可以包括:所述計算模塊使用所述時間偏移量除以所述聚合周期的長度,將得到的商取整后乘以所述時間偏移量,得到的乘積為所述處理后的時間偏移量。其中,所述取整可以但不限于為向下取整。本實施例的其它實現(xiàn)細(xì)節(jié)可參見實施例一。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應(yīng)地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本申請不限制于任何特定形式的硬件和軟件的結(jié)合。當(dāng)然,本申請還可有其他多種實施例,在不背離本申請精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本申請作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本申請的權(quán)利要求的保護(hù)范圍。當(dāng)前第1頁12