本發(fā)明涉及銀行日志監(jiān)控處理技術(shù)領(lǐng)域,尤其涉及一種銀行運行日志數(shù)據(jù)監(jiān)控方法及系統(tǒng)。
背景技術(shù):
當(dāng)前,在現(xiàn)有的銀行應(yīng)用系統(tǒng)中,總線系統(tǒng)起著至關(guān)重要的作用,銀行所有的應(yīng)用系統(tǒng)幾乎都要通過總線系統(tǒng)進行連接??偩€系統(tǒng)邏輯復(fù)雜、通訊協(xié)議繁多、交易壓力大,因此,保障總線系統(tǒng)安全穩(wěn)定運行就成了當(dāng)前銀行日常運維工作的重點。
在銀行日常運維故障排查中,總線系統(tǒng)也起到了協(xié)調(diào)的作用,即通過查詢并分析總線系統(tǒng)的運行日志,可以有助于快速定位銀行應(yīng)用系統(tǒng)故障點,及時解決應(yīng)用系統(tǒng)的問題及隱患。目前,銀行總線系統(tǒng)的數(shù)據(jù)處理壓力巨大。以中國銀行為例,中國銀行總線系統(tǒng)日均交易量在2億筆以上,每秒事務(wù)處理量(Transaction Per Second,簡稱TPS)峰值可以達(dá)到6000筆/秒,日均產(chǎn)生日志數(shù)據(jù)4TB以上,日志條目大于600億,按歷史日志保存30天計算,需要整個日志系統(tǒng)能夠加工及處理大于100TB的數(shù)據(jù),這對銀行日志數(shù)據(jù)監(jiān)控系統(tǒng)存儲及檢索萬億級的日志條目,提出了非常高的性能要求。當(dāng)前,如何及時高效地處理海量銀行運行日志數(shù)據(jù)成為了一個亟待解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提供一種銀行運行日志數(shù)據(jù)監(jiān)控方法及系統(tǒng),以解決當(dāng)前如何及時高效地處理海量銀行運行日志數(shù)據(jù)的問題。
為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:
一種銀行運行日志數(shù)據(jù)監(jiān)控方法,應(yīng)用于一銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),所述系統(tǒng)包括多個應(yīng)用系統(tǒng)節(jié)點、多個索引節(jié)點或路由節(jié)點、多個存儲節(jié)點以及訪問客戶端和集群管理器;所述多個應(yīng)用系統(tǒng)節(jié)點與所述訪問客戶端連接;所述訪問客戶端與所述集群管理器連接;所述集群管理器與所述多個索引節(jié)點或路由節(jié)點連接;所述多個索引節(jié)點或路由節(jié)點分別與各存儲節(jié)點連接;
所述方法包括:
應(yīng)用系統(tǒng)節(jié)點將銀行運行日志數(shù)據(jù)通過所述訪問客戶端和集群管理器發(fā)送至各索引節(jié)點或路由節(jié)點;
所述索引節(jié)點或路由節(jié)點從所述銀行運行日志數(shù)據(jù)中獲取跟蹤身份標(biāo)識,并根據(jù)所述跟蹤身份標(biāo)識進行一致性哈希計算,確定銀行運行日志數(shù)據(jù)對應(yīng)的哈希值,并根據(jù)所述哈希值確定存儲節(jié)點的第一存儲地址;
所述索引節(jié)點或路由節(jié)點根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)存儲到所述第一存儲地址對應(yīng)的存儲節(jié)點處;
應(yīng)用系統(tǒng)節(jié)點通過所述訪問客戶端和集群管理器向索引節(jié)點或路由節(jié)點發(fā)送數(shù)據(jù)查詢請求;所述數(shù)據(jù)查詢請求包括數(shù)據(jù)查詢條件;
所述索引節(jié)點或路由節(jié)點根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的第二存儲地址;
所述索引節(jié)點或路由節(jié)點將所述數(shù)據(jù)查詢請求發(fā)送至所述第二存儲地址對應(yīng)的存儲節(jié)點,以使得所述存儲節(jié)點將所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)反饋到所述應(yīng)用系統(tǒng)節(jié)點。
具體的,根據(jù)所述哈希值確定存儲節(jié)點的第一存儲地址,包括:
所述索引節(jié)點或路由節(jié)點根據(jù)所述哈希值確定多個存儲節(jié)點的第一存儲地址。
具體的,所述索引節(jié)點或路由節(jié)點根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)存儲到所述第一存儲地址對應(yīng)的存儲節(jié)點處,包括:
所述索引節(jié)點或路由節(jié)點判斷所述銀行運行日志數(shù)據(jù)的數(shù)據(jù)指令類型;
若所述數(shù)據(jù)指令類型為存儲指令,所述索引節(jié)點或路由節(jié)點根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)均勻存儲到多個第一存儲地址對應(yīng)的存儲節(jié)點處,以使得所述存儲節(jié)點將銀行運行日志數(shù)據(jù)的數(shù)據(jù)塊存儲到各自存儲節(jié)點的散列鏈表文件尾部。
進一步的,在所述索引節(jié)點或路由節(jié)點判斷所述銀行運行日志數(shù)據(jù)的數(shù)據(jù)指令類型之后,還包括:
若所述數(shù)據(jù)指令類型為提交指令,所述索引節(jié)點將所述提交指令發(fā)送至所述提交指令對應(yīng)的存儲節(jié)點,以使得所述存儲節(jié)點根據(jù)所述跟蹤身份標(biāo)識查找所述存儲節(jié)點自身的鏈表頭部地址,將所述鏈表頭部地址作為第三存儲地址,并向所述索引節(jié)點反饋所述第三存儲地址;
所述索引節(jié)點根據(jù)所述第三存儲地址生成所述存儲節(jié)點的數(shù)據(jù)索引;所述數(shù)據(jù)索引用于保存所述第三存儲地址。
具體的,所述索引節(jié)點或路由節(jié)點根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的第二存儲地址,包括:
所述索引節(jié)點或路由節(jié)點根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,并確定是否檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù);
若檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù),所述檢索節(jié)點或路由節(jié)點判斷所述銀行運行日志數(shù)據(jù)的存儲類型;所述存儲類型包括多數(shù)據(jù)塊存儲和單數(shù)據(jù)塊存儲;
若所述銀行運行日志數(shù)據(jù)的存儲類型為多數(shù)據(jù)塊存儲,所述檢索節(jié)點或路由節(jié)點確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的多個第二存儲地址;
若所述銀行運行日志數(shù)據(jù)的存儲類型為單數(shù)據(jù)塊存儲,所述檢索節(jié)點或路由節(jié)點確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的單個第二存儲地址。
進一步的,在確定是否檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)之后,還包括:
若未檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù),所述檢索節(jié)點或路由節(jié)點向所述應(yīng)用系統(tǒng)節(jié)點反饋檢索失敗結(jié)果。
一種銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),包括多個應(yīng)用系統(tǒng)節(jié)點、多個索引節(jié)點或路由節(jié)點、多個存儲節(jié)點以及訪問客戶端和集群管理器;所述多個應(yīng)用系統(tǒng)節(jié)點與所述訪問客戶端連接;所述訪問客戶端與所述集群管理器連接;所述集群管理器與所述多個索引節(jié)點或路由節(jié)點連接;所述多個索引節(jié)點或路由節(jié)點分別與各存儲節(jié)點連接;
所述應(yīng)用系統(tǒng)節(jié)點,用于將銀行運行日志數(shù)據(jù)通過所述訪問客戶端和集群管理器發(fā)送至各索引節(jié)點或路由節(jié)點;
所述索引節(jié)點或路由節(jié)點,用于從所述銀行運行日志數(shù)據(jù)中獲取跟蹤身份標(biāo)識,并根據(jù)所述跟蹤身份標(biāo)識進行一致性哈希計算,確定銀行運行日志數(shù)據(jù)對應(yīng)的哈希值,并根據(jù)所述哈希值確定存儲節(jié)點的第一存儲地址;根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)存儲到所述第一存儲地址對應(yīng)的存儲節(jié)點處;
應(yīng)用系統(tǒng)節(jié)點,還用于通過所述訪問客戶端和集群管理器向索引節(jié)點或路由節(jié)點發(fā)送數(shù)據(jù)查詢請求;所述數(shù)據(jù)查詢請求包括數(shù)據(jù)查詢條件;
所述索引節(jié)點或路由節(jié)點,還用于根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的第二存儲地址;將所述數(shù)據(jù)查詢請求發(fā)送至所述第二存儲地址對應(yīng)的存儲節(jié)點;
所述存儲節(jié)點,用于將所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)反饋到所述應(yīng)用系統(tǒng)節(jié)點。
具體的,所述銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)包括多個所述集群管理器;所述多個集群管理器用于同步所述銀行運行日志數(shù)據(jù)。
此外,所述銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)還包括前端管理工具終端,所述前端管理工具終端與所述集群管理器、多個存儲節(jié)點、多個索引節(jié)點及路由節(jié)點分別連接;
所述前端管理工具終端,用于監(jiān)控所述銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)的運行情況數(shù)據(jù),并根據(jù)所述運行情況數(shù)據(jù)進行故障分析和數(shù)據(jù)統(tǒng)計。
此外,所述索引節(jié)點或路由節(jié)點,具體用于根據(jù)所述哈希值確定多個存儲節(jié)點的第一存儲地址。
另外,所述索引節(jié)點或路由節(jié)點,具體用于判斷所述銀行運行日志數(shù)據(jù)的數(shù)據(jù)指令類型;在所述數(shù)據(jù)指令類型為存儲指令時,根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)均勻存儲到多個第一存儲地址對應(yīng)的存儲節(jié)點處;
所述存儲節(jié)點,具體用于將銀行運行日志數(shù)據(jù)的數(shù)據(jù)塊存儲到各自存儲節(jié)點的散列鏈表文件尾部。
另外,所述索引節(jié)點,具體用于在所述數(shù)據(jù)指令類型為提交指令時,將所述提交指令發(fā)送至所述提交指令對應(yīng)的存儲節(jié)點;
所述存儲節(jié)點,具體用于根據(jù)所述跟蹤身份標(biāo)識查找所述存儲節(jié)點自身的鏈表頭部地址,將所述鏈表頭部地址作為第三存儲地址,并向所述索引節(jié)點反饋所述第三存儲地址;
所述索引節(jié)點,還用于根據(jù)所述第三存儲地址生成所述存儲節(jié)點的數(shù)據(jù)索引;所述數(shù)據(jù)索引用于保存所述第三存儲地址。
另外,所述索引節(jié)點或路由節(jié)點,具體用于根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,并確定是否檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù);在檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)時,判斷所述銀行運行日志數(shù)據(jù)的存儲類型;所述存儲類型包括多數(shù)據(jù)塊存儲和單數(shù)據(jù)塊存儲;
所述索引節(jié)點或路由節(jié)點,還用于在所述銀行運行日志數(shù)據(jù)的存儲類型為多數(shù)據(jù)塊存儲時,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的多個第二存儲地址;在所述銀行運行日志數(shù)據(jù)的存儲類型為單數(shù)據(jù)塊存儲,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的單個第二存儲地址。
另外,所述檢索節(jié)點或路由節(jié)點,還用于在未檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)時,向所述應(yīng)用系統(tǒng)節(jié)點反饋檢索失敗結(jié)果。
本發(fā)明實施例提供了一種銀行運行日志數(shù)據(jù)監(jiān)控方法及系統(tǒng),能夠根據(jù)應(yīng)用系統(tǒng)節(jié)點的銀行運行日志數(shù)據(jù)的跟蹤身份標(biāo)識進行一致性哈希計算,從而將銀行運行日志數(shù)據(jù)分布式存儲入多個存儲節(jié)點。在需要查詢銀行運行日志數(shù)據(jù)時,又可實時從多個存儲節(jié)點獲取銀行運行日志數(shù)據(jù)。本發(fā)明能夠及時高效地處理海量銀行運行日志數(shù)據(jù)。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種銀行運行日志數(shù)據(jù)監(jiān)控方法的流程圖一;
圖2為本發(fā)明實施例提供的一種銀行運行日志數(shù)據(jù)監(jiān)控方法的流程圖二;
圖3為本發(fā)明實施例中的數(shù)據(jù)存儲結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供一種銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)的結(jié)構(gòu)示意圖一;
圖5為本發(fā)明實施例提供一種銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)的結(jié)構(gòu)示意圖二。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,本發(fā)明實施例提供的一種銀行運行日志數(shù)據(jù)監(jiān)控方法,應(yīng)用于一銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),所述系統(tǒng)包括多個應(yīng)用系統(tǒng)節(jié)點、多個索引節(jié)點或路由節(jié)點、多個存儲節(jié)點以及訪問客戶端和集群管理器;所述多個應(yīng)用系統(tǒng)節(jié)點與所述訪問客戶端連接;所述訪問客戶端與所述集群管理器連接;所述集群管理器與所述多個索引節(jié)點或路由節(jié)點連接;所述多個索引節(jié)點或路由節(jié)點分別與各存儲節(jié)點連接。
該方法包括:
步驟101、應(yīng)用系統(tǒng)節(jié)點將銀行運行日志數(shù)據(jù)通過訪問客戶端和集群管理器發(fā)送至各索引節(jié)點或路由節(jié)點。
步驟102、索引節(jié)點或路由節(jié)點從銀行運行日志數(shù)據(jù)中獲取跟蹤身份標(biāo)識,并根據(jù)跟蹤身份標(biāo)識進行一致性哈希計算,確定銀行運行日志數(shù)據(jù)對應(yīng)的哈希值,并根據(jù)哈希值確定存儲節(jié)點的第一存儲地址。
步驟103、索引節(jié)點或路由節(jié)點根據(jù)哈希值將銀行運行日志數(shù)據(jù)存儲到第一存儲地址對應(yīng)的存儲節(jié)點處。
步驟104、應(yīng)用系統(tǒng)節(jié)點通過訪問客戶端和集群管理器向索引節(jié)點或路由節(jié)點發(fā)送數(shù)據(jù)查詢請求。
其中,數(shù)據(jù)查詢請求包括數(shù)據(jù)查詢條件。
步驟105、索引節(jié)點或路由節(jié)點根據(jù)數(shù)據(jù)查詢條件檢索索引表,確定數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的第二存儲地址。
步驟106、索引節(jié)點或路由節(jié)點將數(shù)據(jù)查詢請求發(fā)送至第二存儲地址對應(yīng)的存儲節(jié)點,以使得存儲節(jié)點將數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)反饋到應(yīng)用系統(tǒng)節(jié)點。
本發(fā)明實施例提供了一種銀行運行日志數(shù)據(jù)監(jiān)控方法,能夠根據(jù)應(yīng)用系統(tǒng)節(jié)點的銀行運行日志數(shù)據(jù)的跟蹤身份標(biāo)識進行一致性哈希計算,從而將銀行運行日志數(shù)據(jù)分布式存儲入多個存儲節(jié)點。在需要查詢銀行運行日志數(shù)據(jù)時,又可實時從多個存儲節(jié)點獲取銀行運行日志數(shù)據(jù)。本發(fā)明能夠及時高效地處理海量銀行運行日志數(shù)據(jù)。
為了使本領(lǐng)域的技術(shù)人員更好的理解本發(fā)明,下面列舉一個更為具體的實施例,如圖2所示,本發(fā)明實施例提供的一種銀行運行日志數(shù)據(jù)監(jiān)控方法,應(yīng)用于上述的銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),該方法包括:
步驟201、應(yīng)用系統(tǒng)節(jié)點將銀行運行日志數(shù)據(jù)通過訪問客戶端和集群管理器發(fā)送至各索引節(jié)點或路由節(jié)點。
此處的索引節(jié)點可以是記錄銀行運行日志數(shù)據(jù)的數(shù)據(jù)塊的地址索引的節(jié)點,其可以是例如Hadoop分布式系統(tǒng)中的NameNode節(jié)點。
該路由節(jié)點可以提供與索引節(jié)點分擔(dān)網(wǎng)絡(luò)流量相同的功能,但是其不記錄索引。當(dāng)存儲節(jié)點達(dá)到一定數(shù)量時,索引節(jié)點的網(wǎng)絡(luò)傳輸壓力會增大,因此需要通過路由負(fù)載節(jié)點來分散網(wǎng)絡(luò)壓力。路由負(fù)載節(jié)點的數(shù)量需要根據(jù)集群的規(guī)模及處理壓力進行測算。
步驟202、索引節(jié)點或路由節(jié)點從銀行運行日志數(shù)據(jù)中獲取跟蹤身份標(biāo)識,根據(jù)跟蹤身份標(biāo)識進行一致性哈希計算,確定銀行運行日志數(shù)據(jù)對應(yīng)的哈希值,并根據(jù)哈希值確定多個存儲節(jié)點的第一存儲地址。
步驟203、索引節(jié)點或路由節(jié)點判斷銀行運行日志數(shù)據(jù)的數(shù)據(jù)指令類型。
若數(shù)據(jù)指令類型為存儲指令,執(zhí)行如下步驟204;否則,若數(shù)據(jù)指令類型為提交指令,執(zhí)行如下步驟205。
步驟204、索引節(jié)點或路由節(jié)點根據(jù)哈希值將銀行運行日志數(shù)據(jù)均勻存儲到多個第一存儲地址對應(yīng)的存儲節(jié)點處,以使得存儲節(jié)點將銀行運行日志數(shù)據(jù)的數(shù)據(jù)塊存儲到各自存儲節(jié)點的散列鏈表文件尾部。
該存儲節(jié)點可以是例如Hadoop分布式系統(tǒng)中的DataNode節(jié)點。例如,該存儲節(jié)點可以負(fù)責(zé)將數(shù)據(jù)塊按一定結(jié)構(gòu)存儲到磁盤文件中,目前實現(xiàn)的數(shù)據(jù)塊存儲是基于鏈表的,結(jié)構(gòu)可以如圖3所示,包括指針塊00和數(shù)據(jù)塊01。其中,每個指針塊均包含指向下一個存儲數(shù)據(jù)塊的指針,指針塊大小為12字節(jié),定義如下:第1位表示結(jié)束標(biāo)識0x00表示結(jié)束,0x01表示未結(jié)束;第2位表示存儲文件序號;第3-8位表示下一個數(shù)據(jù)塊地址,高位在前;第9-12位表示下一個數(shù)據(jù)塊大小,高位在前。
步驟205、索引節(jié)點將提交指令發(fā)送至提交指令對應(yīng)的存儲節(jié)點,以使得存儲節(jié)點根據(jù)跟蹤身份標(biāo)識查找存儲節(jié)點自身的鏈表頭部地址,將鏈表頭部地址作為第三存儲地址,并向索引節(jié)點反饋第三存儲地址。
步驟206、索引節(jié)點根據(jù)第三存儲地址生成存儲節(jié)點的數(shù)據(jù)索引。
其中,數(shù)據(jù)索引用于保存第三存儲地址。
步驟207、應(yīng)用系統(tǒng)節(jié)點通過訪問客戶端和集群管理器向索引節(jié)點或路由節(jié)點發(fā)送數(shù)據(jù)查詢請求。
其中,數(shù)據(jù)查詢請求包括數(shù)據(jù)查詢條件。該數(shù)據(jù)查詢條件可以為銀行運行日志數(shù)據(jù)中的交易時間、交易碼等。
步驟208、索引節(jié)點或路由節(jié)點根據(jù)數(shù)據(jù)查詢條件檢索索引表,并確定是否檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)。
若檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù),執(zhí)行步驟209。否則,若未檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù),執(zhí)行步驟210。
步驟209、檢索節(jié)點或路由節(jié)點判斷銀行運行日志數(shù)據(jù)的存儲類型。
存儲類型包括多數(shù)據(jù)塊存儲和單數(shù)據(jù)塊存儲。
在步驟209之后,可以執(zhí)行步驟211或者步驟212。
步驟210、檢索節(jié)點或路由節(jié)點向應(yīng)用系統(tǒng)節(jié)點反饋檢索失敗結(jié)果。
步驟211、若銀行運行日志數(shù)據(jù)的存儲類型為多數(shù)據(jù)塊存儲,檢索節(jié)點或路由節(jié)點確定數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的多個第二存儲地址。
步驟212、若銀行運行日志數(shù)據(jù)的存儲類型為單數(shù)據(jù)塊存儲,檢索節(jié)點或路由節(jié)點確定數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的單個第二存儲地址。
在上述步驟211和步驟212之后,可以執(zhí)行步驟213。
步驟213、索引節(jié)點或路由節(jié)點將數(shù)據(jù)查詢請求發(fā)送至第二存儲地址對應(yīng)的存儲節(jié)點,以使得存儲節(jié)點將數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)反饋到應(yīng)用系統(tǒng)節(jié)點。
在應(yīng)用系統(tǒng)節(jié)點獲取到銀行運行日志數(shù)據(jù)后,可以以動態(tài)圖表等形式進行展示。
本發(fā)明實施例提供了一種銀行運行日志數(shù)據(jù)監(jiān)控方法,能夠根據(jù)應(yīng)用系統(tǒng)節(jié)點的銀行運行日志數(shù)據(jù)的跟蹤身份標(biāo)識進行一致性哈希計算,從而將銀行運行日志數(shù)據(jù)分布式存儲入多個存儲節(jié)點,實現(xiàn)了數(shù)據(jù)存儲的一致性與軟負(fù)載均衡。在需要查詢銀行運行日志數(shù)據(jù)時,又可實時從多個存儲節(jié)點獲取銀行運行日志數(shù)據(jù)。本發(fā)明能夠及時高效地處理海量銀行運行日志數(shù)據(jù)。
對于上述圖2所述的各步驟,可以有如下的典型應(yīng)用場景。例如,對于銀行中TPS較高的交易每筆約產(chǎn)生150-200條監(jiān)控日志,同時產(chǎn)生一個交易索引,有些邏輯復(fù)雜的交易產(chǎn)生監(jiān)控日志較多,但這部分交易TPS較低,因此監(jiān)控日志產(chǎn)生速率平均約200-300TPS?;谥髁髋渲肞C機的測試結(jié)果,每條監(jiān)控日志在150字節(jié)左右(實際情況比該150字節(jié)要小),使用鏈表記錄數(shù)據(jù)塊,可以達(dá)到約260000TPS的記錄效率,對應(yīng)實際交易峰值大約為1250-1500TPS。存儲節(jié)點可以線性擴展,經(jīng)計算,在生產(chǎn)環(huán)境下,當(dāng)打開50%的交易監(jiān)控日志時,2個存儲節(jié)點即可滿足中國銀行總線系統(tǒng)的日志記錄需要。
數(shù)據(jù)檢索時,先通過索引節(jié)點查出數(shù)據(jù)塊起始位置,再從存儲節(jié)點中提取完整的數(shù)據(jù)塊。基于主流配置PC機的測試結(jié)果,每條數(shù)據(jù)150字節(jié)左右,每秒可以提取230000筆監(jiān)控日志。典型測試,提取1500筆監(jiān)控日志,數(shù)據(jù)量大小約215KB,提取耗時30毫秒左右。
存儲節(jié)點啟動時,通過集群管理器與索引節(jié)點建立連接,索引節(jié)點使用一致性哈希算法將數(shù)據(jù)塊均勻?qū)懭朊總€存儲節(jié)點中。由于應(yīng)用監(jiān)控日志系統(tǒng)主要記錄的是交易監(jiān)控日志,因此暫不考慮數(shù)據(jù)可靠性,存儲節(jié)點數(shù)據(jù)不做冗余處理。如果某個存儲節(jié)點失效,只會丟失當(dāng)前正在記錄的數(shù)據(jù)塊;如果某個存儲節(jié)點文件系統(tǒng)損壞,只會丟失本節(jié)點存儲的數(shù)據(jù),不會影響其他節(jié)點。
本發(fā)明可以使用多種手段進行性能調(diào)整及優(yōu)化,例如使用隨機讀寫性能較好的XFS、EXT4等文件系統(tǒng),根據(jù)磁盤陣列的配置,調(diào)整哈希散列文件數(shù)量以最大程度地利用磁盤陣列的性能等。
對應(yīng)于上述圖1、圖2所示的方法實施例,如圖4所示,本發(fā)明實施例提供一種銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),包括多個應(yīng)用系統(tǒng)節(jié)點31、多個索引節(jié)點或路由節(jié)點32、多個存儲節(jié)點33以及訪問客戶端34和集群管理器35。該多個應(yīng)用系統(tǒng)節(jié)點31與所述訪問客戶端34連接。該訪問客戶端34與所述集群管理器35連接。所述集群管理器35與所述多個索引節(jié)點或路由節(jié)點32連接;所述多個索引節(jié)點或路由節(jié)點32分別與各存儲節(jié)點33連接。
所述應(yīng)用系統(tǒng)節(jié)點31,用于將銀行運行日志數(shù)據(jù)通過所述訪問客戶端34和集群管理器35發(fā)送至各索引節(jié)點或路由節(jié)點32。
所述索引節(jié)點或路由節(jié)點32,用于從所述銀行運行日志數(shù)據(jù)中獲取跟蹤身份標(biāo)識,并根據(jù)所述跟蹤身份標(biāo)識進行一致性哈希計算,確定銀行運行日志數(shù)據(jù)對應(yīng)的哈希值,并根據(jù)所述哈希值確定存儲節(jié)點33的第一存儲地址;根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)存儲到所述第一存儲地址對應(yīng)的存儲節(jié)點33處。
應(yīng)用系統(tǒng)節(jié)點31,還用于通過所述訪問客戶端34和集群管理器35向索引節(jié)點或路由節(jié)點32發(fā)送數(shù)據(jù)查詢請求;所述數(shù)據(jù)查詢請求包括數(shù)據(jù)查詢條件。
此處的訪問客戶端34可以作為應(yīng)用系統(tǒng)節(jié)點查詢數(shù)據(jù)的接口。訪問客戶端分別提供Java語言及C語言的API接口,封裝底層通訊及協(xié)議,提供給應(yīng)用系統(tǒng)節(jié)點便捷的開發(fā)接口。采用Java語言的訪問客戶端可以使用RMI協(xié)議,簡化通訊協(xié)議開發(fā),但不如長連接效率高。
所述索引節(jié)點或路由節(jié)點32,還用于根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的第二存儲地址;將所述數(shù)據(jù)查詢請求發(fā)送至所述第二存儲地址對應(yīng)的存儲節(jié)點33。
所述存儲節(jié)點33,用于將所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)反饋到所述應(yīng)用系統(tǒng)節(jié)點31。
具體的,如圖5所示,該銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)可以包括多個所述集群管理器35;該多個集群管理器35用于同步所述銀行運行日志數(shù)據(jù)。例如,該集群管理器35可有2個。
此處的集群管理器35作為整個分布式集群的管理節(jié)點,負(fù)責(zé)管理集群中所有應(yīng)用系統(tǒng)節(jié)點的狀態(tài)、配置及共享數(shù)據(jù),同時在集群啟動時,負(fù)責(zé)協(xié)調(diào)并建立各個節(jié)點間的通訊連接。當(dāng)應(yīng)用系統(tǒng)節(jié)點發(fā)生變化時(節(jié)點失效、新增節(jié)點),負(fù)責(zé)通知集群所有運行中的應(yīng)用系統(tǒng)節(jié)點,以使用新的配置數(shù)據(jù)。由于當(dāng)前的Zookeeper機制比較復(fù)雜,參考資料不是很豐富,因此未采用Zookeeper機制。集群管理器采用雙節(jié)點(即上述采用2個集群管理器的方式)熱備份模式,數(shù)據(jù)自動同步。當(dāng)其中一個集群管理器節(jié)點失效時,不會影響整個集群的運行。集群管理器僅在系統(tǒng)啟動、節(jié)點發(fā)生變化時起到協(xié)調(diào)及通知的作用,如果所有的集群管理器節(jié)點均失效,不會影響正在運行中的集群,恢復(fù)集群管理器時,僅僅需要重新啟動進程即可。需要說明的是,在現(xiàn)有技術(shù)中,分布式系統(tǒng)的協(xié)調(diào)服務(wù)主要依賴于上述的ZooKeeper機制,本發(fā)明考慮到系統(tǒng)運維現(xiàn)狀,為了不增加運維人員的勞動強度,設(shè)計并采用了上述的集群管理器方案,基本可以實現(xiàn)ZooKeeper的大部分功能。
此外,如圖5所示,該銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)還包括前端管理工具終端36,所述前端管理工具終端36與所述集群管理器35、多個存儲節(jié)點33、多個索引節(jié)點及路由節(jié)點32分別連接;
所述前端管理工具終端36,用于監(jiān)控所述銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)的運行情況數(shù)據(jù),并根據(jù)所述運行情況數(shù)據(jù)進行故障分析和數(shù)據(jù)統(tǒng)計。
此外,所述索引節(jié)點或路由節(jié)點32,具體用于根據(jù)所述哈希值確定多個存儲節(jié)點33的第一存儲地址。
另外,所述索引節(jié)點或路由節(jié)點32,具體用于判斷所述銀行運行日志數(shù)據(jù)的數(shù)據(jù)指令類型;在所述數(shù)據(jù)指令類型為存儲指令時,根據(jù)所述哈希值將所述銀行運行日志數(shù)據(jù)均勻存儲到多個第一存儲地址對應(yīng)的存儲節(jié)點33處;
所述存儲節(jié)點33,具體用于將銀行運行日志數(shù)據(jù)的數(shù)據(jù)塊存儲到各自存儲節(jié)點33的散列鏈表文件尾部。
另外,所述索引節(jié)點32,具體用于在所述數(shù)據(jù)指令類型為提交指令時,將所述提交指令發(fā)送至所述提交指令對應(yīng)的存儲節(jié)點33。
所述存儲節(jié)點33,具體用于根據(jù)所述跟蹤身份標(biāo)識查找所述存儲節(jié)點33自身的鏈表頭部地址,將所述鏈表頭部地址作為第三存儲地址,并向所述索引節(jié)點反饋所述第三存儲地址。
所述索引節(jié)點32,還用于根據(jù)所述第三存儲地址生成所述存儲節(jié)點33的數(shù)據(jù)索引;所述數(shù)據(jù)索引用于保存所述第三存儲地址。
另外,所述索引節(jié)點或路由節(jié)點32,具體用于根據(jù)所述數(shù)據(jù)查詢條件檢索索引表,并確定是否檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù);在檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)時,判斷所述銀行運行日志數(shù)據(jù)的存儲類型;所述存儲類型包括多數(shù)據(jù)塊存儲和單數(shù)據(jù)塊存儲。
所述索引節(jié)點或路由節(jié)點32,還用于在所述銀行運行日志數(shù)據(jù)的存儲類型為多數(shù)據(jù)塊存儲時,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的多個第二存儲地址;在所述銀行運行日志數(shù)據(jù)的存儲類型為單數(shù)據(jù)塊存儲,確定所述數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)的單個第二存儲地址。
另外,所述檢索節(jié)點或路由節(jié)點32,還用于在未檢索到數(shù)據(jù)查詢請求對應(yīng)的銀行運行日志數(shù)據(jù)時,向所述應(yīng)用系統(tǒng)節(jié)點31反饋檢索失敗結(jié)果。
本發(fā)明實施例提供了一種銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),能夠根據(jù)應(yīng)用系統(tǒng)節(jié)點的銀行運行日志數(shù)據(jù)的跟蹤身份標(biāo)識進行一致性哈希計算,從而將銀行運行日志數(shù)據(jù)分布式存儲入多個存儲節(jié)點。在需要查詢銀行運行日志數(shù)據(jù)時,又可實時從多個存儲節(jié)點獲取銀行運行日志數(shù)據(jù)。本發(fā)明能夠及時高效地處理海量銀行運行日志數(shù)據(jù)。
值得說明的是,本發(fā)明的發(fā)明人在設(shè)計本發(fā)明實施例提供的銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)時,考慮到目前的銀行的生產(chǎn)運維現(xiàn)狀,不依賴于開源軟件如Hadoop、HBase、ZooKeeper,獨立設(shè)計了本發(fā)明的銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng),通過部署廉價的X86平臺應(yīng)用集群,可以實時加工并處理PB級的數(shù)據(jù),完全滿足生產(chǎn)環(huán)境的監(jiān)控需要。銀行運行日志數(shù)據(jù)監(jiān)控系統(tǒng)同時提供了Java語言及C語言的API接口,可以適用于較多產(chǎn)品系統(tǒng),并提供功能強大的前端管理工具,運維人員可以通過這些工具實時監(jiān)控應(yīng)用系統(tǒng)的運行情況,并根據(jù)需要實時采集應(yīng)用系統(tǒng)的日志用于故障分析及數(shù)據(jù)統(tǒng)計。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
本發(fā)明中應(yīng)用了具體實施例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。