本技術(shù)涉及分布式系統(tǒng),特別涉及一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法,還涉及一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計裝置、電子設(shè)備以及計算機可讀存儲介質(zhì)。
背景技術(shù):
1、在當(dāng)今互聯(lián)網(wǎng)時代,分布式系統(tǒng)已經(jīng)成為支撐各類大規(guī)模應(yīng)用的關(guān)鍵基礎(chǔ)設(shè)施。隨著用戶數(shù)量的急劇增長和業(yè)務(wù)的日益復(fù)雜,對系統(tǒng)性能的要求也越來越高。客戶端作為與用戶直接交互的端點,其性能表現(xiàn)直接影響著用戶體驗和業(yè)務(wù)的成功與否。準(zhǔn)確、全面地統(tǒng)計客戶端性能數(shù)據(jù),對于了解系統(tǒng)的運行狀況、發(fā)現(xiàn)潛在問題、優(yōu)化系統(tǒng)性能以及保障服務(wù)質(zhì)量具有至關(guān)重要的意義。
2、某些分布式系統(tǒng)計應(yīng)用軟件在提交任務(wù)運行的過程中,會將應(yīng)用任務(wù)由一個主節(jié)點進行任務(wù)的劃分,劃分為多個子任務(wù),這些子任務(wù)被分發(fā)到集群的每個從節(jié)點上進行運行計算,最終運行結(jié)果反饋給主節(jié)點。在這一過程中,一部分軟件自帶有性能統(tǒng)計功能,另外一部分則沒有。在最終結(jié)果展示的過程中,或者在技術(shù)人員對問題定位分析的過程中,任務(wù)運作過程中的性能數(shù)據(jù)是其中非常重要的一部分數(shù)據(jù),但是,由于分布式集群客戶端節(jié)點之間的隔離,使得這部分報告難以生成,現(xiàn)有的統(tǒng)計報告無外乎都是將本節(jié)點運行子任務(wù)的性能數(shù)據(jù)存入自身節(jié)點。由于各個應(yīng)用軟件之間差異巨大,分布式系統(tǒng)中沒有一個統(tǒng)一的管理機制,使得每個應(yīng)用軟件都要維護一套自己的性能統(tǒng)計代碼,非常不方便,不利于分布式計算系統(tǒng)的發(fā)展。
3、因此,如何在分布式系統(tǒng)中實現(xiàn)任意應(yīng)用軟件的性能數(shù)據(jù)統(tǒng)計,保證分布式系統(tǒng)的系統(tǒng)性能,提高其應(yīng)用價值是本領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)的目的是提供一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法,該分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法可以在分布式系統(tǒng)中實現(xiàn)任意應(yīng)用軟件的性能數(shù)據(jù)統(tǒng)計,保證分布式系統(tǒng)的系統(tǒng)性能,提高其應(yīng)用價值;本技術(shù)的另一目的是提供一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計裝置、電子設(shè)備、計算機可讀存儲介質(zhì)以及計算機程序產(chǎn)品,均具有上述有益效果。
2、第一方面,本技術(shù)提供了一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法,所述分布式系統(tǒng)包括一個主節(jié)點和多個從節(jié)點,所述主節(jié)點與各所述從節(jié)點通信連接,所述方法應(yīng)用于所述分布式系統(tǒng)中的任一從節(jié)點,包括:
3、接收所述主節(jié)點發(fā)送的目標(biāo)子任務(wù);其中,所述目標(biāo)子任務(wù)由所述主節(jié)點對應(yīng)用任務(wù)進行子任務(wù)劃分得到;
4、執(zhí)行所述目標(biāo)子任務(wù),并獲取所述目標(biāo)子任務(wù)在執(zhí)行過程中產(chǎn)生的執(zhí)行日志;
5、對本地日志文件加鎖,并確定加鎖結(jié)果;
6、若所述加鎖結(jié)果為加鎖成功,則確定加鎖時間,并將所述加鎖時間之前的臨時日志和所述執(zhí)行日志保存至本地日志文件;
7、若所述加鎖結(jié)果為加鎖失敗,則將所述執(zhí)行日志作為臨時日志生成對應(yīng)的臨時日志文件;
8、當(dāng)接收到所述主節(jié)點發(fā)送的日志拉取請求時,根據(jù)所述日志拉取請求將所述本地日志文件上傳至所述主節(jié)點,以使所述主節(jié)點對各所述從節(jié)點上傳的本地日志文件進行合并處理,獲得所述應(yīng)用任務(wù)的日志文件。
9、可選地,若所述加鎖結(jié)果為加鎖失敗,則將所述執(zhí)行日志作為臨時日志生成對應(yīng)的臨時日志文件,包括:
10、若所述加鎖結(jié)果為加鎖失敗,則確定所述執(zhí)行日志的生成時間;
11、將所述執(zhí)行日志作為所述臨時日志生成對應(yīng)的臨時日志文件;
12、確定所述臨時日志文件對應(yīng)的唯一標(biāo)識,并利用所述生成時間和所述唯一標(biāo)識為所述臨時日志文件命名;
13、相應(yīng)地,若將所述加鎖時間之前的臨時日志和所述執(zhí)行日志保存至本地日志文件,包括:
14、根據(jù)各所述臨時日志文件的文件名稱中的時間信息,確定所述加鎖時間之前的目標(biāo)臨時日志文件;
15、將各所述目標(biāo)臨時日志文件中的臨時日志和所述執(zhí)行日志保存至所述本地日志文件;
16、相應(yīng)地,若將所述加鎖時間之前的臨時日志和所述執(zhí)行日志保存至本地日志文件之后,還包括:
17、將各所述目標(biāo)臨時日志文件清空,并刪除各所述目標(biāo)臨時日志文件。
18、可選地,所述分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法還包括:
19、對所述主節(jié)點進行心跳監(jiān)測,以確定所述主節(jié)點的運行狀態(tài);
20、當(dāng)所述主節(jié)點的運行狀態(tài)為異常狀態(tài)時,聯(lián)合所述分布式系統(tǒng)中的其他各所述從節(jié)點選舉新的主節(jié)點。
21、可選地,對所述主節(jié)點進行心跳監(jiān)測,以確定所述主節(jié)點的運行狀態(tài),包括:
22、發(fā)送心跳信號至所述主節(jié)點,判斷是否接收到所述主節(jié)點反饋的心跳響應(yīng)信號;
23、若接收到所述主節(jié)點反饋的所述心跳響應(yīng)信號,則確定所述主節(jié)點的運行狀態(tài)為正常狀態(tài);
24、若未接收到所述主節(jié)點反饋的所述心跳響應(yīng)信號,則統(tǒng)計當(dāng)前心跳監(jiān)測次數(shù);
25、若當(dāng)前心跳監(jiān)測次數(shù)未達到預(yù)設(shè)次數(shù),則返回發(fā)送心跳信號至所述主節(jié)點,判斷是否接收到所述主節(jié)點反饋的心跳響應(yīng)信號的步驟;
26、若當(dāng)前心跳監(jiān)測次數(shù)達到所述預(yù)設(shè)次數(shù),則確定所述主節(jié)點的運行狀態(tài)為所述異常狀態(tài)。
27、可選地,當(dāng)所述主節(jié)點的運行狀態(tài)為異常狀態(tài)時,聯(lián)合所述分布式系統(tǒng)中的其他各所述從節(jié)點選舉新的主節(jié)點,包括:
28、當(dāng)所述主節(jié)點的運行狀態(tài)為異常狀態(tài)時,發(fā)送主節(jié)點選舉通知至所述分布式系統(tǒng)中的其他各所述從節(jié)點;
29、接收其他各所述從節(jié)點反饋的選舉結(jié)果,并根據(jù)各所述選舉結(jié)果確定選舉票數(shù)最高的從節(jié)點作為所述新的主節(jié)點。
30、可選地,所述分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法還包括:
31、接收所述主節(jié)點下發(fā)的所述應(yīng)用任務(wù)的日志文件;
32、利用所述日志文件對所述本地日志文件進行數(shù)據(jù)同步。
33、可選地,所述分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法還包括:
34、當(dāng)接收到所述主節(jié)點發(fā)送的日志清理通知時,根據(jù)所述日志清理通知將所述本地日志文件清空;
35、其中,所述日志清理通知由所述主節(jié)點在接收到所有所述從節(jié)點上傳的本地日志文件之后下發(fā)至各所述從節(jié)點。
36、第二方面,本技術(shù)還公開了一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計裝置,所述分布式系統(tǒng)包括一個主節(jié)點和多個從節(jié)點,所述主節(jié)點與各所述從節(jié)點通信連接,所述裝置應(yīng)用于所述分布式系統(tǒng)中的任一從節(jié)點,包括:
37、接收模塊,用于接收所述主節(jié)點發(fā)送的目標(biāo)子任務(wù);其中,所述目標(biāo)子任務(wù)由所述主節(jié)點對應(yīng)用任務(wù)進行子任務(wù)劃分得到;
38、執(zhí)行模塊,用于執(zhí)行所述目標(biāo)子任務(wù),并獲取所述目標(biāo)子任務(wù)在執(zhí)行過程中產(chǎn)生的執(zhí)行日志;
39、加鎖模塊,用于對本地日志文件加鎖,并確定加鎖結(jié)果;
40、保存模塊,用于若所述加鎖結(jié)果為加鎖成功,則確定加鎖時間,并將所述加鎖時間之前的臨時日志和所述執(zhí)行日志保存至本地日志文件;
41、生成模塊,用于若所述加鎖結(jié)果為加鎖失敗,則將所述執(zhí)行日志作為臨時日志生成對應(yīng)的臨時日志文件;
42、上傳模塊,用于當(dāng)接收到所述主節(jié)點發(fā)送的日志拉取請求時,根據(jù)所述日志拉取請求將所述本地日志文件上傳至所述主節(jié)點,以使所述主節(jié)點對各所述從節(jié)點上傳的本地日志文件進行合并處理,獲得所述應(yīng)用任務(wù)的日志文件。
43、第三方面,本技術(shù)還公開了一種電子設(shè)備,包括:
44、存儲器,用于存儲計算機程序;
45、處理器,用于執(zhí)行所述計算機程序時實現(xiàn)如上所述的任一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法的步驟。
46、第四方面,本技術(shù)還公開了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上所述的任一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法的步驟。
47、第五方面,本發(fā)明還公開了一種計算機程序產(chǎn)品,包括計算機程序/指令,所述計算機程序/指令被處理器執(zhí)行時實現(xiàn)如上所述的任一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法的步驟。
48、本技術(shù)提供了一種分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計方法,所述分布式系統(tǒng)包括一個主節(jié)點和多個從節(jié)點,所述主節(jié)點與各所述從節(jié)點通信連接,所述方法應(yīng)用于所述分布式系統(tǒng)中的任一從節(jié)點,包括:接收所述主節(jié)點發(fā)送的目標(biāo)子任務(wù);其中,所述目標(biāo)子任務(wù)由所述主節(jié)點對應(yīng)用任務(wù)進行子任務(wù)劃分得到;執(zhí)行所述目標(biāo)子任務(wù),并獲取所述目標(biāo)子任務(wù)在執(zhí)行過程中產(chǎn)生的執(zhí)行日志;對本地日志文件加鎖,并確定加鎖結(jié)果;若所述加鎖結(jié)果為加鎖成功,則確定加鎖時間,并將所述加鎖時間之前的臨時日志和所述執(zhí)行日志保存至本地日志文件;若所述加鎖結(jié)果為加鎖失敗,則將所述執(zhí)行日志作為臨時日志生成對應(yīng)的臨時日志文件;當(dāng)接收到所述主節(jié)點發(fā)送的日志拉取請求時,根據(jù)所述日志拉取請求將所述本地日志文件上傳至所述主節(jié)點,以使所述主節(jié)點對各所述從節(jié)點上傳的本地日志文件進行合并處理,獲得所述應(yīng)用任務(wù)的日志文件。
49、應(yīng)用本技術(shù)所提供的技術(shù)方案,主節(jié)點在將應(yīng)用任務(wù)劃分為多個目標(biāo)子任務(wù)下發(fā)至不同的從節(jié)點之后,每一個從節(jié)點均可以在執(zhí)行相應(yīng)目標(biāo)子任務(wù)的過程中記錄其產(chǎn)生的日志信息至本地日志文件,并反饋給主節(jié)點,使得主節(jié)點可以綜合各個從節(jié)點反饋的本地日志文件得到應(yīng)用任務(wù)的日志文件,以實現(xiàn)該應(yīng)用任務(wù)的性能數(shù)據(jù)統(tǒng)計。其中,從節(jié)點在進行日志記錄的過程中,為避免本地日志文件正在被讀寫導(dǎo)致日志記錄失敗進而造成日志丟失的問題,可以創(chuàng)建臨時日志文件進行日志信息的臨時記錄,并在本地日志文件空閑時將其合并至本地日志文件,并且,為避免臨時日志文件并發(fā)重復(fù)問題,還參照時間信息實現(xiàn)了日志合并操作,保證了性能數(shù)據(jù)統(tǒng)計結(jié)果的準(zhǔn)確性。由此可見,本技術(shù)方案可以在分布式系統(tǒng)中實現(xiàn)任意應(yīng)用軟件的性能數(shù)據(jù)統(tǒng)計,有效地保證了分布式系統(tǒng)的系統(tǒng)性能,進一步提高了其應(yīng)用價值。
50、在本技術(shù)的一個實施例中,由于分布式系統(tǒng)中的主節(jié)點只有一個,一旦主節(jié)點發(fā)生故障,將會導(dǎo)致分布式系統(tǒng)中應(yīng)用任務(wù)的中斷,為避免此問題,提出了一種主節(jié)點選舉機制,分布式系統(tǒng)中的任意從節(jié)點均可以對主節(jié)點進行心跳監(jiān)測,以確定主節(jié)點的運行狀態(tài),一旦主節(jié)點運行狀態(tài)異常,則立即觸發(fā)主節(jié)點選舉機制,以從剩余的從節(jié)點中重新選舉新的主節(jié)點承接舊的主節(jié)點的管理任務(wù)??梢?,本技術(shù)方案可以有效保證主節(jié)點實時在線,避免系統(tǒng)內(nèi)任務(wù)中斷的問題。
51、本技術(shù)所提供的分布式系統(tǒng)中的數(shù)據(jù)統(tǒng)計裝置、電子設(shè)備、計算機可讀存儲介質(zhì)以及計算機程序產(chǎn)品,同樣具有上述技術(shù)效果,本技術(shù)在此不再贅述。