TWI726041B - 指標統計方法和裝置 - Google Patents
指標統計方法和裝置 Download PDFInfo
- Publication number
- TWI726041B TWI726041B TW106102470A TW106102470A TWI726041B TW I726041 B TWI726041 B TW I726041B TW 106102470 A TW106102470 A TW 106102470A TW 106102470 A TW106102470 A TW 106102470A TW I726041 B TWI726041 B TW I726041B
- Authority
- TW
- Taiwan
- Prior art keywords
- level
- structured
- index
- name
- indicator
- Prior art date
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明實施例提供了一種指標統計方法和一種指標統計裝置,涉及實時計算技術領域。所述方法包括:對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。本發明實施例邏輯簡單,能夠降低系統消耗,並且由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
Description
本發明關於實時計算技術領域,特別是關於指標統計方法和指標統計裝置。
伴隨著資訊科技日新月異的發展,資訊呈現出爆發式的膨脹,人們獲取資訊的途徑也更加多樣、更加便捷,同時對於資訊的時效性要求也越來越高。舉個搜索場景中的例子,當電子商務網站中一個賣家發佈了一條商品資訊時,該賣家當然希望是這個商品資訊馬上就可以被買家搜索出來、點擊、購買,相反,如果這個商品資訊要等到第二天或者更久才可以被搜出來,對於賣家來說,其資訊太滯後,特別影響該商品資訊的實時性。基於該需求,產生了實時計算系統,比如jstorm/storm等分層的實時計算系統。
其中,Storm是apache社區下的分布式開源實時計算系統,採用clojure語言(Clojure是一種運行在Java(Java是一種可以撰寫跨平臺應用程序的面向對象的程序設計語言)平臺上的Lisp語言(Lisp是一種以表達性和功能強大 著稱的編程語言))開發。Storm可被用於“流處理”之中,實時處理消息;也可被用於“連續計算(continuous computation)”,對資料流做連續處理,在計算時就將結果以流的形式輸出給用戶;它還可被用於“分布式RPC(Remote Procedure Call Protocol,遠程過程調用協議)”,以並行的方式執行運算。JStorm是基於Storm開發的實時計算系統,其兼容Storm。
在實時計算系統中,為了衡量應用的運行狀況和性能,通常需要對應用的各項指標進行測量和統計。如應用的發送消息量(Emitted),每秒發送量(TPS)等指標。
在jstorm/storm這種分層的實時計算系統下,由於很多實時計算系統都具有層級結構。但是傳統的統計方法,對於一個指標來說,只能統計一個層級的資料。如果需要統計所有層級的資料,需要在特定層級上單獨定義指標;不同層級間的指標的資料匯總、合併也需要額外的複雜邏輯來實現,其計算過程複雜、系統資源消耗大。
鑒於上述問題,提出了本發明實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種指標統計方法和相應的一種指標統計裝置。
為了解決上述問題,本發明公開了一種指標統計方法,其特徵在於,包括:對於一拓撲作業的一指標,針對對應所述指標各層級 節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。
本發明還公開了一種指標統計裝置,包括:結構化標識創建模組,用於對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;底層指標監控模組,用於當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;逐層匯總模組,用於基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。
本發明實施例包括以下優點:本發明實施例對於實時計算系統的拓撲作業的待統計的指標,針對對應所述指標各層級節點創建結構化指標名稱,而該結構化指標名稱用來確定各個層級節點之間的層級關係。然後本發明實施例監控該指標的最底層的資料,在最底層的結構化指標名稱下統計該資料,然後根據各結 構化指標名稱之間的層級關係,基於最底層的統計資料,逐級匯總至上一層級的結構化指標名稱下。如此,本發明實施例可以通過結構化指標名稱的層級關係,簡單的對各個層級的指標進行統計,邏輯簡單,能夠降低系統消耗,並且由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
310‧‧‧結構化標識創建模組
320‧‧‧底層指標監控模組
330‧‧‧逐層匯總模組
410‧‧‧調度伺服器
420‧‧‧計算機節點
430‧‧‧資料庫
421‧‧‧註冊模組
422‧‧‧底層指標分隔創建模組
423‧‧‧上層指標分隔創建模組
424‧‧‧底層指標監控模組
425‧‧‧逐層匯總模組
411‧‧‧匯總模組
412‧‧‧資料儲存子模組
圖1是本發明的一種指標統計方法實施例的步驟流程圖;圖2是本發明的一種指標統計方法實施例的步驟流程圖;圖3是本發明的一種指標統計裝置實施例的結構框圖;圖4是本發明的一種指標統計系統實施例的結構框圖。
為使本發明的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本發明作進一步詳細的說明。
為了更方便的描述本發明實施例,以jstorm或storm實時計算系統為例,介紹本發明實施例涉及的相關術語。
topology:拓撲作業,其為運行於jstorm或storm系 統上的應用程序。一個拓撲作業提交到storm或jstorm實時計算系統中後,可不間斷運行。
component:一個topology由多個組件組成,每個組件稱之為component。storm和jstorm的component分為spout和bolt兩種。其中spout組件表示處理的資料的來源,如一個spout可以從外部的消息組件中獲取資料,也可以從資料庫獲取資料,廣義地說,spout可以從任何外部資料源中不間斷地獲取資料,並將資料發送至下游,該下游比如bolt,Bolt從Spout中接收資料並進行處理。
Task:任務。一個Task表示一個邏輯處理單元,也就是實現的spout/bolt實例。一個component可能包括多個Task。
Stream:資料流。Stream是jstorm和storm中進行指標統計的最小單位。一個Task可能包括多個Stream。
在實際應用中,jstorm和storm實時計算系統中具有層級結構,如stream→task→component→topology。在stream中統計各指標的資料。
本發明實施例的核心構思之一在於,對於實時計算系統,由於其處理資料時具備層級結構,而為了實時計算系統能夠快捷的對所有層級的指標進行統計,對於一個指標的各個層級的層級節點,本發明實施例為各個層級節點創建了結構化指標名稱,通過結構化指標名稱本身確定各層級節點之間的層級關係。從而只需要統計最底層的結構化指標名稱的資料,即可按照結構化指標名稱之間的層級關 係逐級進行匯總,得到對應該指標的各個層級的資料。從而本發明實施例可以通過結構化指標名稱的層級關係,簡單的對各個層級的指標進行統計,邏輯簡單,能夠降低系統消耗,並且由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
參照圖1,示出了本發明的一種指標統計方法實施例的步驟流程圖,具體可以包括如下步驟:步驟110,對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;在本發明實施例中,以jstorm對資料進行實時處理的過程為例,jstorm首先可接收某個拓撲作業topology,即啟動某個應用程序。那麼本發明實施例則需要統計topology處理過程中各個層級的各種指標,比如各個層級的發送消息量(Emitted),各個層級每秒發送量(TPS)等等。那麼本發明實施例則可針對對應所述指標各層級節點創建結構化指標名稱,並通過結構化指標名稱確定各層級節點之間的層級關係。
比如前述的層級結構stream→task→component→topology。本發明可預先定義結構化指標名稱的結構如:topology @ component @ Task @Stream @ name
其中topology、component、task、stream表示節點標識所在位置,name表示指標標識所在位置。
假設topology這個層級節點為tp1。topology包括一個層級節點component,該component的節點標識為spout。component包括兩個層級節點Task0、Task1。Task0下包括兩個層級節點Steam0、Steam1。Task0下包括兩個層級節點Steam2、Steam3。統計的指標標識為Emitted。
那麼,可以為各個層級節點創建結構化指標名稱如:對應Steam0的結構化指標名稱為:tp1@spout@Task0@Stream0@Emitted;表示統計Stream0的Emitted值。
對應Steam1的結構化指標名稱為:tp1@spout@Task0@Stream1@Emitted;表示統計Stream1的Emitted值。
對應Task0的結構化指標名稱為:tp1@spout@Task0@@Emitted;表示統計Task0的Emitted值。
對應Steam2的結構化指標名稱為:tp1@spout@Task1@Stream2@Emitted;表示統計Stream2的Emitted值。
對應Steam3的結構化指標名稱為:tp1@spout@Task1@Stream3@Emitted;表示統計Stream3的Emitted值。
對應Task1的結構化指標名稱為:tp1@spout@Task1@@Emitted;表示統計Task1的Emitted值。
對應spout的結構化指標名稱為:tp1@spout@@@Emitted;表示統計spout的Emitted值。
對應tp1的結構化指標名稱為:tp1@@@@Emitted;表示統計tp1的Emitted值。
那麼對應Task0的結構化指標名由對應Steam0和Steam1的結構化指標名稱縮減而來,有明確的上下級關係。而tp1@spout@Task0@Stream0@Emitted和tp1@spout@Task0@Stream1@Emitted是平級關係。同理,tp1@spout@@@Emitted由Task0和Task1的結構化指標名稱縮減而來,有明確的上下級關係。而tp1@spout@Task0@@Emitted和tp1@spout@Task1@@Emitted是平級關係。上述結構化指標名稱可以明確各個層級節點之間的層級關係。
在本發明較佳的另外一個實施例中,步驟110包括:子步驟A11,對於一拓撲作業的一指標,將最頂層層級節點到最底層層級節點的節點標識和所述指標的指標標識,按序組合為最底層的結構化指標名稱;在本發明實施例中,為了計算方便,對於一個topology的指標,首先按照預先定義的結構化指標名稱的結構,將最底層的將最頂層層級節點到最底層層級節點的 節點標識和所述指標的指標標識,按序組合為最底層的結構化指標名稱。如上述Steam0是最底層的層級節點,優先設置其結構化指標名稱:tp1@spout@Task0@Stream0@Emitted。其他幾個最底層的層級節點類似。
該最底層的結構化指標名稱表示了從最頂層到最底層的層級路徑。
子步驟A12,基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中的當前層級的層級節點設置為空,得到上一層級的結構化指標名稱。
在設置了最底層的結構化指標名稱後,再逐級向上計算每個層級節點對於的結構化指標名稱。
比如Stream的上一級是Task,那麼本發明實施對於Stream上一級中相同的Task進行歸併。如將tp1@spout@Task0@Stream0@Emitted中的Stream0設置為空,或者將tp1@spout@Task0@Stream1@Emitted,得到層級節點Task0的結構化指標名稱tp1@spout@Task0@@Emitted。同理得到Task1的結構化指標名稱tp1@spout@Task1@@Emitted。然後基於Task層級節點向上一層級,將tp1@spout@Task0@@Emitted中的Task0或者tp1@spout@Task1@@Emitted中的Task1置為空,得到spout的結構化指標名稱tp1@spout@@@Emitted。以此類推,直到最上層的結構化 指標名稱產生。
可以理解,上述示例中,符號@作為分隔符,是為了更方便的對結構化指標名稱進行歸併,以產生上一層級的結構化指標名稱。在實際應用中,也可以不設置類似@的符號,此時,可以將各層級節點的節點標識及所屬層級提供給實時計算系統,使實時計算系統可以根據各層級的節點標識執行子步驟A12。
較佳的,在本發明另一較佳的實施例中,子步驟A11包括:A111,基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中,當前層級的分隔符所對應的層級節點設置為空,得到上一層級的結構化指標名稱。
在本發明實施例中,為了防止採用各層級節點的節點標識以及指標標識直接組合所得到全名,出現重名和歧義,本發明實施例在任意個層級的節點標識之間添加了分隔符,在最底層的節點標識和指標標識之間也添加了分隔符。如前述的tp1@spout@Task0@Stream0@Emitted中的@,即為添加的分隔符。在產生上一層級的結構化指標名稱時,可以只將指標標識置為空,保留分隔符,以更方便的確定各結構化指標名稱之間的層級關係。因為,比如由tp1@spout@Task0@Stream0@Emitted產生的上一層的tp1@spout@Task0@ @Emitted,從而在後續歸併時,只需要判斷第3、4分隔符之間為空,就可以確定 tp1@spout@Task0@ @Emitted名稱是統計Task0之下的所有Steam的Emitted的值。
當然,本發明實施例的分隔符還可採用其他的符號,本發明實施例不對其加以限制。
較佳的,在本發明另一較佳的實施例中,步驟110之前,還包括:B11,向系統註冊對應最底層的層級節點的指標標識。
在實際應用中,調度伺服器在將topology分配到各個計算節點執行時,每個計算節點執行的worker可根據需求在本計算節點的系統註冊對應最底層的層級節點的指標標識。比如註冊Stream層級的各層級節點的指標標識Emitted。然後本發明實施例的計算節點可以在應最底層的層級節點的指標標識被註冊後,根據前述結構化指標名稱的結構定義,自動產生各層級的層級節點的結構化指標名稱,比如對於stream層級的Stream0,在步驟A11產生如前述tp1@spout@Task0@Stream0@Emitted等,然後進入步驟A12,產生直到產生各層級節點的結構化指標名稱。
上述只通知計算節點向系統註冊對應最底層的層級節點的指標標識的方式,可以只給計算節點一個簡單的通知,不用向計算節點各層級節點的結構化指標資料,減少傳輸開銷。
在本發明實施例中,結構化指標名稱的結構定義可以 在實時計算系統的調度伺服器中配置,然後再由調度伺服器傳輸給各計算節點。技術人員可以根據需要更改調度伺服器中配置的結構化指標名稱的結構定義,從而更改層級結構,相應更改各層級節點的結構化指標名稱。
比如,對於正常的層級,需要加上在指標標識之上加上指標分組group,那麼可以定義結構化指標名稱的結構為:topology @ component @Task @Stream @ group @name。
以Emitted為例,該group如根據不同業務的需求對Emitted的統計進行分組,比如業務A需求發10條消息,結構化指標名稱+1,而業務B需求發1條消息,結構化指標名稱+1。那麼不同的group,相應的結構化指標的值不同。
可以理解,上述結構化指標名稱的結構定義可以更新到調度伺服器,然後由調度伺服器分發到各個計算節點。當然也可以與原有的結構化指標定義一起使用。
當然,本發明實施例還可以根據實際需要更改上述結構化指標名稱的結構定義,本發明不對其加以限制。
步驟120,當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;在本發明實施例中,以jstorm的實時計算系統為例,在jstorm中創建了一個topology,那麼jstorm的被調度系統可將該topology劃分成多個worker,每個worker代 表一個執行具體任務的進程。上述worker分佈在jstorm的計算集群的不同計算節點上,並行地執行,所有實際的資料處理工作最後都在worker中執行完成。因此,對於每個計算節點來說,對topology按層級結構進行處理,從而本發明實施例,每個計算節點都會獲取上述的對應所述指標各層級節點的結構化指標名稱,然後在各個結構化指標名稱之下對指標進行統計。
在實際應用中,每個worker可運行至少一個spout和/或至少一個bolt。在worker中,將spout或bolt劃分給task執行,task以stream的形式處理資料。
那麼本發明實施例監控stream中出現的與指標相關的資料,比如對於發送消息量(Emitted),監控到stream層級節點stream0傳遞一次Tuple(Tuple:一次消息傳遞的基本單元),則在對應Steam0的結構化指標名稱tp1@spout@Task0@Stream0@Emitted值更新為1。
可以理解,本發明實施例中,可以通知系統監控最底層的層級節點的指標,最底層之上的不用監控。
步驟130,基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。
假設是第一次記錄,最底層之上的各層的結構化指標名稱的初始值都為0,那麼基於上述記錄:tp1@spout@Task0@Stream0@Emitted:1
則可以根據tp1@spout@Task0@Stream0@Emitted的 結構,則查找到與該結構化名稱對應的各層結構化名稱為:tp1@spout@Task0@@Emitted,tp1@spout@@@Emitted,tp1@@@@Emitted,那麼將該三者的值更新為1。
又假設在步驟120中,監控到stream層級節點stream0傳遞一次Tuple(Tuple:一次消息傳遞的基本單元),則在對應Steam1的結構化指標名稱tp1@spout@Task0@Stream0@Emitted值更新為2。
此時在步驟130中,則根據層級關係,逐級向上層匯總,其匯總順序和結果如下:tp1@spout@Task0@@Emitted:2
tp1@spout@@@Emitted:2
tp1@@@@Emitted:2
又假設在步驟120中,監控到stream層級節點stream3傳遞一次Tuple(Tuple:一次消息傳遞的基本單元),則在對應Steam0的結構化指標名稱tp1@spout@Task1@Stream3@Emitted值更新為1。
此時在步驟130中,則根據層級關係,逐級向上層匯總,其匯總順序和結果如下:tp1@spout@Task1@@Emitted:1
tp1@spout@@@Emitted:3
tp1@@@@Emitted:3
在本發明實施例中,由於實時計算系統各自都以各層級節點的結構化指標名稱進行了相應的統計。
而為了得到整個實時計算系統的各層級的整體的統計資料,本發明實施例則會將各個計算節點的結構化指標名稱下的記錄進行匯總。
比如有兩個計算節點1、2,對於計算節點1的記錄為:tp1@spout@Task0@Stream0@Emitted:10
tp1@spout@Task1@Stream3@Emitted:10
tp1@spout@Task0@@Emitted:10
tp1@spout@Task1@@Emitted:10
tp1@spout@@@Emitted:20
tp1@@@@Emitted:20
比如對於計算節點2的記錄為:tp1@spout@Task0@Stream1@Emitted:20
tp1@spout@Task1@Stream3@Emitted:10
tp1@spout@Task0@@Emitted:20
tp1@spout@Task1@@Emitted:10
tp1@spout@@@Emitted:30
tp1@@@@Emitted:30
那麼匯總得到整個實時計算系統對於tp1的各層級的Emitted的統計記錄為:tp1@spout@Task0@Stream0@Emitted:10
tp1@spout@Task0@Stream1@Emitted:20
tp1@spout@Task1@Stream3@Emitted:20
tp1@spout@Task0@@Emitted:30
tp1@spout@Task1@@Emitted:20
tp1@spout@@@Emitted:50
tp1@@@@Emittod:50
在實際應用中,實時計算系統對於各結構化指標,統計一分鐘內的資料。然後可以不斷將每分鐘的統計資料輸出。比如以日誌的形式資料。
較佳的,在本發明另一實施例中,在步驟130之後,還包括:步驟140,將各個結構化指標名稱下的統計資料,導出到資料庫中進行儲存。
在本發明實施例中,由於實時計算系統不具備資料庫的功能,其統計結果不方便查詢。
並且,由於該結構化指標名稱的結構化的方式,適合很多大資料處理工具和框架來處理,如HBase、Hadoop、Hive等,因此,本發明可以將各個結構化指標名稱下的統計資料導出到HBase、Hadoop、Hive等資料庫中。
較佳的,在本發明另一較佳的實施例中,步驟140包括:子步驟C11,將各個結構化指標名稱下的統計資料,導出到資料庫中,以結構化指標名稱和時間戳為關鍵字並以統計資料為關鍵值進行儲存。
在實際應用中,實時計算系統對於各結構化指標,其是統計一個時間週期內的資料,比如1分鐘,到達時間週期後,後該結構化指標名稱下的記錄將會被刷新,重新記 錄。因此,實際上對於每個結構化指標名稱,在上述時間週期結束時,其會有一個時間戳,本發明實施例則在時間週期結束時,將結構化指標名稱及其統計資料,以結構化指標名稱和時間戳為關鍵字key,以統計資料為關鍵值value,存入到資料庫中,比如HBase資料庫中。那麼可以通過時間戳,很方便的查出一段時間內的各層級的指標值。該時間戳為每個時間週期結束時的系統時間。
為了進一步說明本發明實施例的優點。以一個jstorm的topology為例,topology的層級標識為tp1;tp1有一個component,層級標識為spout;該component下面有5個task,每個task都有一個id與之對應,相應的層級標識分別為Task0~Task4;同時,每個task下都有2個stream,相應的層級標識分別為Stream0,Stream1。那麼其層次關係為:Stream[0~1] → Task[0~4] → spout → tp1
傳統技術中如果要統計spout的消息量,則需要定義一個指標,名為SpoutEmitted,並在每次發送消息的時候,更新這個值;如果需要統計task0的消息量,則需要定義名為Task0Emitted,同樣地更新這個值;如果需要統計task0中stream0的消息量,則需要定義名為Stream0Emitted,其他情況,依次類推。但是,SpoutEmitted實際上跟Task0Emitted~Task4Emitted是有層次關係的,相當於SpoutEmitted=Task0Emitted+Task1Emitted+Task2Emitted+Task3Emitted+ Task4Emitted;類似地,Task0Emitted=Stream0Emitted+Stream1Emitted。而傳統指標統計方法並沒有體現上述層次關係以及計算邏輯,如果需要實現這種分層的邏輯,需要做許多額外的複雜邏輯判斷和計算。同時,傳統的方法還需要小心地選擇指標名稱,以避免重複而導致資料不準確。
而本發明實施例,於實時計算系統,由於其處理資料時具備層級結構,而為了實時計算系統能夠快捷的對所有層級的指標進行統計,對於一個指標的各個層級的層級節點,本發明實施例為各個層級節點創建了結構化指標名稱,通過結構化指標名稱本身確定各層級節點之間的層級關係,從而確定了匯總關係。從而只需要統計最底層的結構化指標名稱的資料,即可按照結構化指標名稱之間的層級關係逐級進行匯總,得到對應該指標的各個層級的資料。從而本發明實施例可以通過結構化指標名稱的層級關係,簡單的對各個層級的指標進行統計,邏輯簡單,能夠降低系統消耗,並且由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
參照圖2,示出了本發明的較佳的一種指標統計方法實施例的步驟流程圖,具體可以包括如下步驟:步驟210,各計算節點向本計算節點的系統對應最底 層的層級節點的指標標識。
在本發明實施例中,實時計算系統可以採用分布式計算系統,該分布式計算系統包括調度伺服器、各計算節點。
其中,可以將結構化指標名稱的結構定義可以在實時計算系統的調度伺服器中配置,然後再由調度伺服器配置給各計算節點,以使各個計算節點可以按照上述定義對最底層的結構化指標名稱進行處理。
在本發明實施例中,以Jstorm為例,調度伺服器在將topology分配到各個計算節點執行時,每個計算節點執行的worker可根據需求在本計算節點的系統註冊對應最底層的層級節點的指標標識。
而對於一個topology的指標,實際上可以分為兩部分:1. Jstorm計算框架內部已經定義好的系統指標;2.用戶自定義的業務相關指標。
那麼如果用戶選擇了系統指標,則可以在worker初始化時在計算節點的系統中進行註冊。如果用戶選擇了用戶自定義的業務指標,則可以在worker將用戶代碼初始化時在計算節點的系統中進行註冊。
在每個計算節點上註冊指標,以jstorm為例,對於一個stream,調用jstorm提供的worker內一個全域靜態方法:registerStreamMetrics(metric相關參數),然後即可在系統內部根據metric相關參數,註冊該stream的指標標識。然後即可進入步驟220,逐層產生各層的結構化指 標名稱。
步驟220,各計算節點對於一拓撲作業的指標,採用分隔符將最頂層到最底層的層級節點的節點標識和所述指標的指標標識,按序拼接為最底層的結構化指標名稱;各計算節點在註冊了最底層的指標標識後,計算節點即可根據結構化的指標名稱,和在系統中記錄的各層級節點的上下層級關係,產生最底層的結構化指標名稱。
步驟230,各計算節點基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中的當前層級的層級節點設置為空,得到上一層級的結構化指標名稱。
步驟240,各計算節點當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;步驟250,各計算節點基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。
各計算節點按時間週期統計各結構化指標名稱下的資料,比如以1分鐘為週期,在時間週期結束時,將週期的各結構化指標名稱的統計資料發送給調度伺服器。
步驟260,調度伺服器從各計算節點獲取各結構化指標名稱的統計資料,並進行匯總。
調度伺服器獲取到各計算節點獲取各結構化指標名稱的統計資料,然後可以進行匯總。
步驟270,調度伺服器將匯總後的各個結構化指標名稱下的統計資料,導出到資料庫中,以結構化指標名稱和時間戳為關鍵字並以統計資料為關鍵值進行儲存。
在實際應用中,各個計算節點的各層級的指標統計資料,可以匯總到集群的調度伺服器上。而由於實際應用中,各計算節點每隔1個時間週期,比如1分鐘,將指標統計資料匯總到調度伺服器,而由於調度伺服器並不充當儲存伺服器,資料會不斷被新的指標統計資料覆蓋,因此只能看到最近一個時間週期的匯總的指標統計資料。
那麼,為了能夠看到更長時間甚至所有歷史的指標統計資料,本發明實施例的調度伺服器將匯總的指標統計資料儲存到外部的資料庫中。如對於匯總後的各個結構化指標名稱下的統計資料,以結構化指標名稱+時間戳為key,統計資料為value,儲存到資料庫中。
而本發明實施例,具備以下優點:
1、本發明由於是從最頂層到最底層的層級節點路徑,將該層級節點路徑中的各層級節點的層級標識,以及指標標識,結合分隔符組合為了結構化指標名稱的層級關係,簡單的對各個層級的指標進行統計,邏輯簡單,能夠降低系統消耗。
2、由於上述的結構化指標名稱的結構化形式,由於實際上每個topology的標識不同,各層級節點的層級節點也不盡相同,因此用戶在定義指標名稱時,不需要小心選擇指標名稱,降低出錯幾率。
3、本發明由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
4、本發明只需向計算機節點的系統註冊對應最底層的層級節點的指標標識,即可自動產生對應各層級的各層級節點的結構化指標名稱,傳輸開銷小,操作簡單。
需要說明的是,對於方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施例並不受所描述的動作順序的限制,因為依據本發明實施例,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬較佳實施例,所涉及的動作並不一定是本發明實施例所必須的。
參照圖3,示出了本發明的一種指標統計裝置實施例的結構框圖,具體可以包括如下模組:結構化標識創建模組310,用於對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;底層指標監控模組320,用於當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計; 逐層匯總模組330,用於基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。
在本發明另一較佳的實施例中,所述結構化標識創建模組310包括:底層指標創建子模組,用於對於一拓撲作業的一指標,將最頂層層級節點到最底層層級節點的節點標識和所述指標的指標標識,按序組合為最底層的結構化指標名稱;上層指標創建子模組,用於基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中的當前層級的層級節點設置為空,得到上一層級的結構化指標名稱。
在本發明另一較佳的實施例中,所述底層指標創建子模組包括:底層指標分隔創建子模組,用於對於一拓撲作業的指標,採用分隔符將最頂層到最底層的層級節點的節點標識和所述指標的指標標識,按序拼接為最底層的結構化指標名稱。
在本發明另一較佳的實施例中,所述上層指標創建子模組包括:上層指標分隔創建子模組,用於基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中,當前層級的分隔符所對應的層級節點設置為 空,得到上一層級的結構化指標名稱。
在本發明另一較佳的實施例中,所述結構化標識創建模組310之前,還包括:註冊模組,用於向系統註冊對應最底層的層級節點的指標標識。
在本發明另一較佳的實施例中,在逐層匯總模組330之後,還包括:資料儲存模組,用於將各個結構化指標名稱下的統計資料,導出到資料庫中進行儲存。
在本發明另一較佳的實施例中,所述資料儲存模組,包括:資料儲存子模組,用於將各個結構化指標名稱下的統計資料,導出到資料庫中,以結構化指標名稱和時間戳為關鍵字並以統計資料為關鍵值進行儲存。
而本發明實施例,於實時計算系統,由於其處理資料時具備層級結構,而為了實時計算系統能夠快捷的對所有層級的指標進行統計,對於一個指標的各個層級的層級節點,本發明實施例為各個層級節點創建了結構化指標名稱,通過結構化指標名稱本身確定各層級節點之間的層級關係,從而確定了匯總關係。從而只需要統計最底層的結構化指標名稱的資料,即可按照結構化指標名稱之間的層級關係逐級進行匯總,得到對應該指標的各個層級的資料。從而本發明實施例可以通過結構化指標名稱的層級關係,簡單的對各個層級的指標進行統計,邏輯簡單,能夠 降低系統消耗,並且由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
參照圖4,示出了本發明的一種指標統計系統實施例的結構框圖,具體可以包括:調度伺服器410,各計算節點420,資料庫430。
圖4中示例性的展示了各計算機節點420,實際應用中計算機節點可能根據集群需要進行設置。每個計算機節點包括註冊模組421、底層指標分隔創建模組422、上層指標分隔創建模組423、底層指標監控模組424、逐層匯總模組425。調度伺服器包括匯總模組411和資料儲存子模組412。當然各計算機節點還可包括其他需求的模組,本發明實施例不對其加以限制。
上述調度伺服器410包括:匯總模組411,用於從各計算節點獲取各結構化指標名稱的統計資料,並進行匯總資料儲存子模組412,用於將各個結構化指標名稱下的統計資料,導出到資料庫430中,在資料庫430中以結構化指標名稱和時間戳為關鍵字並以統計資料為關鍵值進行儲存。
每個計算節點420包括:註冊模組421,用於向本計算節點的系統註冊對應最 底層的層級節點的指標標識。
底層指標分隔創建模組422,用於對於一拓撲作業的指標,採用分隔符將最頂層到最底層的層級節點的節點標識和所述指標的指標標識,按序拼接為最底層的結構化指標名稱。
上層指標分隔創建模組423,用於基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中,當前層級的分隔符所對應的層級節點設置為空,得到上一層級的結構化指標名稱。
底層指標監控模組424,用於當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;逐層匯總模組425,用於基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下。
本發明實施例,具備以下優點:
1、本發明由於是從最頂層到最底層的層級節點路徑,將該層級節點路徑中的各層級節點的層級標識,以及指標標識,結合分隔符組合為了結構化指標名稱的層級關係,簡單的對各個層級的指標進行統計,邏輯簡單,能夠降低系統消耗。
2、由於上述的結構化指標名稱的結構化形式,由於實際上每個topology的標識不同,各層級節點的層級節點也不盡相同,因此用戶在定義指標名稱時,不需要小心選 擇指標名稱,降低出錯幾率。
3、本發明由於是按照結構化指標名稱構建的層級關係,可以很方便的添加或者刪除某個或者某幾個層級,方便擴展。
4、本發明只需向計算機節點的系統註冊對應最底層的層級節點的指標標識,即可自動產生對應各層級的各層級節點的結構化指標名稱,傳輸開銷小,操作簡單。
對於裝置實施例而言,由於其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本發明實施例的實施例可提供為方法、裝置、或計算機程序產品。因此,本發明實施例可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明實施例可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用儲存媒體(包括但不限於磁盤記憶體、CD@ROM、光學記憶體等)上實施的計算機程序產品的形式。
在一個典型的配置中,所述計算機設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和隨機存取記憶體。記憶體可能包括計算機可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性隨機存取記憶 體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。隨機存取記憶體是計算機可讀媒體的示例。計算機可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是計算機可讀指令、資料結構、程序的模組或其他資料。計算機的儲存媒體的例子包括,但不限於相變隨機存取記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可編程唯讀記憶體(EEPROM)、快閃記憶體或其他隨機存取記憶體技術、唯讀光碟唯讀記憶體(CD@ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁盤儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備訪問的資訊。按照本文中的界定,計算機可讀媒體不包括非持續性的電腦可讀媒體(transitory media),如調製的資料信號和載波。
本發明實施例是參照根據本發明實施例的方法、終端設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程資料處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程資料處理終端設備的處理器執行的指令 產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可儲存在能引導計算機或其他可編程資料處理終端設備以特定方式工作的計算機可讀記憶體中,使得儲存在該計算機可讀記憶體中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程資料處理終端設備上,使得在計算機或其他可編程終端設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程終端設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
儘管已描述了本發明實施例的較佳實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附申請專利範圍意欲解釋為包括較佳實施例以及落入本發明實施例範圍的所有變更和修改。
最後,還需要說明的是,在本文中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的 包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,並不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本發明所提供的一種指標統計方法、一種指標統計裝置和一種指標統計系統,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均可有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
Claims (10)
- 一種指標統計方法,包括:對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下;其中,所述對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱的步驟,包括:對於一拓撲作業的一指標,將最頂層層級節點到最底層層級節點的節點標識和所述指標的指標標識,按序組合為最底層的結構化指標名稱;基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中的當前層級的層級節點設置為空,得到上一層級的結構化指標名稱;以及其中,所述對於一拓撲作業的一指標,將最頂層層級節點到最底層層級節點的節點標識和所述指標的指標標識,按序組合為最底層的結構化指標名稱的步驟,包括:對於一拓撲作業的指標,採用分隔符將最頂層到最底層的層級節點的節點標識和所述指標的指標標識,按序拼接為最底層的結構化指標名稱。
- 根據申請專利範圍第1項所述的方法,其中,所述基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中的當前層級的層級節點設置為空,得到上一層級的結構化指標名稱的步驟,包括:基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中,當前層級的分隔符所對應的層級節點設置為空,得到上一層級的結構化指標名稱。
- 根據申請專利範圍第1-2項其中之一所述的方法,其中,所述對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱之前,還包括:向系統註冊對應最底層的層級節點的指標標識。
- 根據申請專利範圍第1-2項其中之一所述的方法,其中,還包括:將各個結構化指標名稱下的統計資料,導出到資料庫中進行儲存。
- 根據申請專利範圍第4項所述的方法,其中,所述將各個結構化指標名稱下的統計資料,導出到資料庫中進行儲存的步驟,包括:將各個結構化指標名稱下的統計資料,導出到資料庫中,以結構化指標名稱和時間戳為關鍵字並以統計資料為關鍵值進行儲存。
- 一種指標統計裝置,包括: 結構化標識創建模組,用於對於一拓撲作業的一指標,針對對應所述指標各層級節點創建結構化指標名稱;其中,通過結構化指標名稱確定各層級節點之間的層級關係;底層指標監控模組,用於當監控到所述指標所對應的最底層的資料後,在相應最底層的結構化指標名稱下進行統計;逐層匯總模組,用於基於最底層的結構化指標名稱下的統計資料,根據各結構化指標名稱之間的層級關係,逐級匯總至上一層級的結構化指標名稱下;其中,所述結構化標識創建模組包括:底層指標創建子模組,用於對於一拓撲作業的一指標,將最頂層層級節點到最底層層級節點的節點標識和所述指標的指標標識,按序組合為最底層的結構化指標名稱;上層指標創建子模組,用於基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中的當前層級的層級節點設置為空,得到上一層級的結構化指標名稱;以及其中,所述底層指標創建子模組包括:底層指標分隔創建子模組,用於對於一拓撲作業的指標,採用分隔符將最頂層到最底層的層級節點的節點標識和所述指標的指標標識,按序拼接為最底層的結構化指標名稱。
- 根據申請專利範圍第6項所述的裝置,其中,所述上層指標創建子模組包括:上層指標分隔創建子模組,用於基於最底層的結構化指標名稱,對每一層級的結構化指標名稱,將所述結構化指標名稱中,當前層級的分隔符所對應的層級節點設置為空,得到上一層級的結構化指標名稱。
- 根據申請專利範圍第6-7項其中之一所述的裝置,其中,所述結構化標識創建模組之前,還包括:註冊模組,用於向系統註冊對應最底層的層級節點的指標標識。
- 根據申請專利範圍第6-7項其中之一所述的裝置,其中,還包括:資料儲存模組,用於將各個結構化指標名稱下的統計資料,導出到資料庫中進行儲存。
- 根據申請專利範圍第9項所述的裝置,其中,所述資料儲存模組,包括:資料儲存子模組,用於將各個結構化指標名稱下的統計資料,導出到資料庫中,以結構化指標名稱和時間戳為關鍵字並以統計資料為關鍵值進行儲存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106102470A TWI726041B (zh) | 2017-01-23 | 2017-01-23 | 指標統計方法和裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106102470A TWI726041B (zh) | 2017-01-23 | 2017-01-23 | 指標統計方法和裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201828195A TW201828195A (zh) | 2018-08-01 |
TWI726041B true TWI726041B (zh) | 2021-05-01 |
Family
ID=63960532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106102470A TWI726041B (zh) | 2017-01-23 | 2017-01-23 | 指標統計方法和裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI726041B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060285543A1 (en) * | 2003-12-12 | 2006-12-21 | British Telecommunications Public Limited Company | Distributed computer system |
CN102637200A (zh) * | 2012-03-07 | 2012-08-15 | 江苏引跑网络科技有限公司 | 一种使多级关联数据分配到集群相同节点的方法 |
CN102841891A (zh) * | 2011-06-21 | 2012-12-26 | 金蝶软件(中国)有限公司 | 一种树状结构节点的排序方法、装置及查询系统 |
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
CN102929587A (zh) * | 2012-09-28 | 2013-02-13 | 用友软件股份有限公司 | 数据处理系统和数据处理方法 |
TW201426584A (zh) * | 2012-12-27 | 2014-07-01 | Chunghwa Telecom Co Ltd | 多維樹狀架構之會計科目模組 |
-
2017
- 2017-01-23 TW TW106102470A patent/TWI726041B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060285543A1 (en) * | 2003-12-12 | 2006-12-21 | British Telecommunications Public Limited Company | Distributed computer system |
CN102841891A (zh) * | 2011-06-21 | 2012-12-26 | 金蝶软件(中国)有限公司 | 一种树状结构节点的排序方法、装置及查询系统 |
CN102637200A (zh) * | 2012-03-07 | 2012-08-15 | 江苏引跑网络科技有限公司 | 一种使多级关联数据分配到集群相同节点的方法 |
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
CN102929587A (zh) * | 2012-09-28 | 2013-02-13 | 用友软件股份有限公司 | 数据处理系统和数据处理方法 |
TW201426584A (zh) * | 2012-12-27 | 2014-07-01 | Chunghwa Telecom Co Ltd | 多維樹狀架構之會計科目模組 |
Also Published As
Publication number | Publication date |
---|---|
TW201828195A (zh) | 2018-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11799741B2 (en) | Systems and methods for enterprise information technology (IT) monitoring | |
AU2017202952B2 (en) | System for linking diverse data systems | |
US10447772B2 (en) | Managed function execution for processing data streams in real time | |
Zheng et al. | Service-generated big data and big data-as-a-service: an overview | |
US7953713B2 (en) | System and method for representing and using tagged data in a management system | |
US8286191B2 (en) | Dynamically composing data stream processing applications | |
CN107229619B (zh) | 互联网业务链路调用情况的统计、展示方法及装置 | |
US9201700B2 (en) | Provisioning computer resources on a network | |
Tas et al. | An approach to standalone provenance systems for big social provenance data | |
Taherkordi et al. | From IoT big data to IoT big services | |
CN107145489A (zh) | 一种基于云平台的客户端应用的信息统计方法和装置 | |
WO2017092600A1 (zh) | 一种指标统计方法和装置 | |
Jeong et al. | An IoT platform for civil infrastructure monitoring | |
US11816511B1 (en) | Virtual partitioning of a shared message bus | |
US11853330B1 (en) | Data structure navigator | |
TW201727517A (zh) | 資料儲存與業務處理的方法及裝置 | |
Theeten et al. | Chive: Bandwidth optimized continuous querying in distributed clouds | |
TWI726041B (zh) | 指標統計方法和裝置 | |
Chowdhury et al. | An approach for data pipeline with distributed query engine for industrial applications | |
CN113806169A (zh) | 业务异常处理方法及装置 | |
Jayanthi et al. | A framework for real-time streaming analytics using machine learning approach | |
CN110532248B (zh) | 一种基于cmdb的服务器应用信息获取及调整方法 | |
Gorton et al. | Gridoptics (tm) a novel software framework for integrating power grid data storage, management and analysis | |
CN113672660B (zh) | 一种数据查询方法、装置及设备 | |
US20140143278A1 (en) | Application programming interface layers for analytical applications |