一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法及裝置制造方法
【專利摘要】本發(fā)明涉及一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法及裝置,包括以下步驟:遠(yuǎn)程調(diào)用客戶端向遠(yuǎn)程調(diào)用服務(wù)器發(fā)送調(diào)用請求,請求調(diào)用命令腳本文件;遠(yuǎn)程調(diào)用服務(wù)器根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,轉(zhuǎn)入步驟3,否則,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果;獲取遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件;將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,讀取調(diào)用結(jié)果,刪除緩存文件,否則,休眠預(yù)定的時間后繼續(xù)檢測。本發(fā)明能夠加快大數(shù)據(jù)量遠(yuǎn)程數(shù)據(jù)調(diào)用的速度,提高系統(tǒng)工作效率。
【專利說明】一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)遠(yuǎn)程調(diào)用方法,特別涉及一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法及裝置。
【背景技術(shù)】
[0002]用Java編寫應(yīng)用時,如果需要在程序中調(diào)用另一個現(xiàn)成的可執(zhí)行程序或系統(tǒng)命令,可以通過組合使用Java提供的Runtime類和Process類的方法實(shí)現(xiàn)。下面是一種比較典型的程序模式:
[0003]Process process=Runtime.getRuntime ().exec (〃.//p.exe〃);
[0004]在上面的程序中,第一行的//p.exe”是要執(zhí)行的程序名,Runtime.getRuntime ()返回當(dāng)前應(yīng)用程序的Runtime對象,該對象的exec O方法指示Java虛擬機(jī)創(chuàng)建一個子進(jìn)程執(zhí)行指定的可執(zhí)行程序,并返回與該子進(jìn)程對應(yīng)的Process對象實(shí)例。通過Process可以控制該子進(jìn)程的執(zhí)行或獲取該子進(jìn)程的信息。
[0005]上述方法是JDK提供的唯一可以調(diào)用外部的應(yīng)用和程序的途徑。在調(diào)用外部程序或系統(tǒng)命令的過程中,需要將執(zhí)行返回的結(jié)果返回給調(diào)用者本身,此過程稱為數(shù)據(jù)交換。數(shù)據(jù)交換較小的時候,使用Runtime.getRuntime 0.exec O方法調(diào)用速度較快,但是如果需要交換大數(shù)據(jù)量較大,則Runtime.getRuntime 0.exec O方法運(yùn)行速度極慢。當(dāng)數(shù)據(jù)交換的量達(dá)到臨界值時,Runtime.getRuntime 0.exec O方法執(zhí)行將無限制等待,無法返回結(jié)果。通過實(shí)際測試,在數(shù)據(jù)交換超過IOK時,其執(zhí)行速度已經(jīng)超過了 30s。當(dāng)數(shù)據(jù)超過150K時,則30分鐘都無法執(zhí)行完成。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問題是提供一種提高大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用時執(zhí)行速度的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法及裝置。
[0007]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法,包括以下步驟:
[0008]步驟1:遠(yuǎn)程調(diào)用客戶端向遠(yuǎn)程調(diào)用服務(wù)器發(fā)送調(diào)用請求,請求調(diào)用遠(yuǎn)程調(diào)用服務(wù)器上的命令腳本文件;
[0009]步驟2:遠(yuǎn)程調(diào)用服務(wù)器根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,轉(zhuǎn)入步驟3,否則,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果;
[0010]步驟3:遠(yuǎn)程調(diào)用服務(wù)器獲取遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件;
[0011]步驟4:遠(yuǎn)程調(diào)用服務(wù)器將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,并檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,轉(zhuǎn)入步驟5,否則,休眠預(yù)定的時間后繼續(xù)檢測;[0012]步驟5:遠(yuǎn)程調(diào)用服務(wù)器讀取緩存文件中的調(diào)用結(jié)果,刪除緩存文件。
[0013]本發(fā)明的有益效果是:利用緩存的方式提高大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用的執(zhí)行速度及工作效率。
[0014]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0015]進(jìn)一步,所述步驟2中配置文件,用于記錄調(diào)用結(jié)果所需存儲空間的大小大于預(yù)定值的命令腳本文件。所述預(yù)設(shè)值為2K。
[0016]進(jìn)一步,所述命令腳本文件中包括系統(tǒng)命令或腳本文件。
[0017]進(jìn)一步,一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用裝置,包括遠(yuǎn)程調(diào)用客戶端,遠(yuǎn)程調(diào)用服務(wù)器;
[0018]所述遠(yuǎn)程調(diào)用客戶端,用于向遠(yuǎn)程調(diào)用服務(wù)器發(fā)送調(diào)用請求,請求調(diào)用遠(yuǎn)程調(diào)用服務(wù)器上的命令腳本文件;
[0019]所述遠(yuǎn)程調(diào)用服務(wù)器,用于接收調(diào)用請求,根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,將遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳發(fā)送給遠(yuǎn)程調(diào)用客戶端,將調(diào)用結(jié)果發(fā)送給遠(yuǎn)程調(diào)用客戶端;否則,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果,獲取遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件,將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,并檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,讀取緩存文件中的調(diào)用結(jié)果,刪除緩存文件,否則,休眠預(yù)定的時間后繼續(xù)檢測。
[0020]采用上述進(jìn)一步方案的有益效果是利用緩存的方式提高大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用的執(zhí)行速度及工作效率。
[0021]進(jìn)一步,所述遠(yuǎn)程調(diào)用服務(wù)器中的配置文件,用于記錄調(diào)用結(jié)果所需存儲空間的大小大于預(yù)定值的命令腳本文件。所述預(yù)設(shè)值為2K。
[0022]進(jìn)一步,所述命令腳本文件中包括系統(tǒng)命令或腳本文件。
【專利附圖】
【附圖說明】
[0023]圖1為本發(fā)明方法步驟流程圖;
[0024]圖2為本發(fā)明裝置結(jié)構(gòu)圖。
[0025]附圖中,各標(biāo)號所代表的部件列表如下:
[0026]1、遠(yuǎn)程調(diào)用客戶端,2、遠(yuǎn)程調(diào)用服務(wù)器。
【具體實(shí)施方式】
[0027]以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0028]如圖1所示,為本發(fā)明方法步驟流程圖;圖2為本發(fā)明裝置結(jié)構(gòu)圖。
[0029]實(shí)施例1
[0030]一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法,包括以下步驟:
[0031]步驟1:遠(yuǎn)程調(diào)用客戶端向遠(yuǎn)程調(diào)用服務(wù)器發(fā)送調(diào)用請求,請求調(diào)用遠(yuǎn)程調(diào)用服務(wù)器上的命令腳本文件;
[0032]步驟2:遠(yuǎn)程調(diào)用服務(wù)器根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,轉(zhuǎn)入步驟3,否則,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果;
[0033]步驟3:遠(yuǎn)程調(diào)用服務(wù)器獲取遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件;
[0034]步驟4:遠(yuǎn)程調(diào)用服務(wù)器將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,并檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,轉(zhuǎn)入步驟5,否則,休眠預(yù)定的時間后繼續(xù)檢測;
[0035]步驟5:遠(yuǎn)程調(diào)用服務(wù)器讀取緩存文件中的調(diào)用結(jié)果,刪除緩存文件。
[0036]所述步驟2中配置文件,用于記錄調(diào)用結(jié)果所需存儲空間的大小大于預(yù)定值的命令腳本文件。所述預(yù)設(shè)值為2K。所述命令腳本文件中包括系統(tǒng)命令或腳本文件。
[0037]—種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用裝置,包括遠(yuǎn)程調(diào)用客戶端1,遠(yuǎn)程調(diào)用服務(wù)器2 ;
[0038]所述遠(yuǎn)程調(diào)用客戶端1,用于向遠(yuǎn)程調(diào)用服務(wù)器發(fā)送調(diào)用請求,請求調(diào)用遠(yuǎn)程調(diào)用服務(wù)器上的命令腳本文件;
[0039]所述遠(yuǎn)程調(diào)用服務(wù)器2,用于接收調(diào)用請求,根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,將遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳發(fā)送給遠(yuǎn)程調(diào)用客戶端1,將調(diào)用結(jié)果發(fā)送給遠(yuǎn)程調(diào)用客戶端I ;否貝U,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果,獲取遠(yuǎn)程調(diào)用服務(wù)器2上本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件,將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,并檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,讀取緩存文件中的調(diào)用結(jié)果,刪除緩存文件,否則,休眠預(yù)定的時間后繼續(xù)檢測。
[0040]所述遠(yuǎn)程調(diào)用服務(wù)器2中的配置文件,用于記錄調(diào)用結(jié)果所需存儲空間的大小大于預(yù)定值的命令腳本文件。所述預(yù)設(shè)值為2K。所述命令腳本文件中包括系統(tǒng)命令或腳本文件。
[0041]在使用rpc開發(fā)維護(hù)操作平臺的產(chǎn)品時,rpc服務(wù)端在收到客戶端發(fā)送的請求時,需要通過Runtime.getRuntime 0.exec O方法調(diào)用外部腳本或系統(tǒng)命令。當(dāng)調(diào)用外部腳本返回的數(shù)據(jù)較大時,發(fā)現(xiàn)Runtime.getRuntime 0.exec O方法無法返回。于是改成緩存方式。
[0042]第一步,先在系統(tǒng)配置文件里配置上哪些系統(tǒng)命令需要走緩存方式。
[0043]<Conf igltem>
<ConfigName>REMOTE_ORDER</ConfigName>
<Conf igParam>
<ParamName>SPECIAL_ORDER</ParamName>
<ParamValue>more, pg, cat</ParamValue>
<Para mDe sc>需要走異步方式的特殊命令〈/ Pa raniDe sc>
</ConfigParam〉
<Conf igParam>
<ParamName>TMP-1O-FILE</ParamName>
<ParamValue>tt.tmp</ParamValue>
〈Pa ramDe sc>命令執(zhí)行結(jié)果臨時存放文件名稱</ParamDesc>
</ConfIgParam>
</Conf igltem>
[0044]配置項(xiàng)more, pg, cat是需要做緩存的系統(tǒng)命令。tt.tmp是緩存的臨時文件。
[0045]第二步,根據(jù)時間戳建立緩存文件。String tmpFileName=DEFAULT_IO_FILENAME+System.currentTimeMi11i s O ;
[0046]第三步,將命令返回的數(shù)據(jù)存入臨時緩存文件。cmd=cmdContent+〃>〃+tmpFiIeName;
[0047]調(diào)用process=Runtime.getRuntime 0.exec (cmd)方法,調(diào)用系統(tǒng)命令。
[0048]第四步,當(dāng)命令完畢后。讀取緩存文件內(nèi)容。
[0049]
BufferedReader reader = nuw BufferedReader (newFileReader (f i l.e));
String Iine = null;
wh i Ie ((line = reader.readLi ne ()) != null) {
returnStr += Iine;
}
[0050]第五步,刪除緩存文件。file, delete O ;
[0051 ] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法,其特征在于,包括以下步驟: 步驟1:遠(yuǎn)程調(diào)用客戶端向遠(yuǎn)程調(diào)用服務(wù)器發(fā)送調(diào)用請求,請求調(diào)用遠(yuǎn)程調(diào)用服務(wù)器上的命令腳本文件; 步驟2:遠(yuǎn)程調(diào)用服務(wù)器根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,轉(zhuǎn)入步驟3,否則,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果; 步驟3:遠(yuǎn)程調(diào)用服務(wù)器獲取本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件; 步驟4:遠(yuǎn)程調(diào)用服務(wù)器將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,并檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,轉(zhuǎn)入步驟5,否則,休眠預(yù)定的時間后繼續(xù)檢測; 步驟5:遠(yuǎn)程調(diào)用服務(wù)器讀取緩存文件中的調(diào)用結(jié)果,刪除緩存文件。
2.根據(jù)權(quán)利要求1所述的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法,其特征在于:所述步驟2中配置文件,用于記錄調(diào)用結(jié)果所需存儲空間的大小大于預(yù)定值的命令腳本文件。
3.根據(jù)權(quán)利要求2任一所述的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法,其特征在于:所述預(yù)設(shè)值為2K。
4.根據(jù)權(quán)利要求1至3任一所述的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用方法,其特征在于:所述命令腳本文件中包括系統(tǒng)命令或腳本文件。
5.一種大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用裝置,其特征在于:包括遠(yuǎn)程調(diào)用客戶端(1),遠(yuǎn)程調(diào)用服務(wù)器(2); 所述遠(yuǎn)程調(diào)用客戶端(1),用于向遠(yuǎn)程調(diào)用服務(wù)器(2)發(fā)送調(diào)用請求,請求調(diào)用遠(yuǎn)程調(diào)用服務(wù)器上的命令腳本文件; 所述遠(yuǎn)程調(diào)用服務(wù)器(2),用于接收調(diào)用請求,根據(jù)調(diào)用請求確定命令腳本文件,判斷命令腳本文件是否在遠(yuǎn)程調(diào)用服務(wù)器中的配置文件中,如果是,將遠(yuǎn)程調(diào)用服務(wù)器上本地時間的緩存時間戳發(fā)送給遠(yuǎn)程調(diào)用客戶端(I ),將調(diào)用結(jié)果發(fā)送給遠(yuǎn)程調(diào)用客戶端(I);否貝U,采用遠(yuǎn)程調(diào)用方式獲得調(diào)用命令腳本生成的調(diào)用結(jié)果,獲取遠(yuǎn)程調(diào)用服務(wù)器(2)上本地時間的緩存時間戳,根據(jù)緩存時間戳生成緩存文件,將通過調(diào)用命令腳本文件生成的調(diào)用結(jié)果存儲在緩存文件中,并檢測命令腳本文件是否調(diào)用完畢,如果調(diào)用完畢,讀取緩存文件中的調(diào)用結(jié)果,刪除緩存文件,否則,休眠預(yù)定的時間后繼續(xù)檢測。
6.根據(jù)權(quán)利要求5所述的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用裝置,其特征在于:所述遠(yuǎn)程調(diào)用服務(wù)器(2)中的配置文件,用于記錄調(diào)用結(jié)果所需存儲空間的大小大于預(yù)定值的命令腳本文件。
7.根據(jù)權(quán)利要求6所述的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用裝置,其特征在于:所述預(yù)設(shè)值為2K。
8.根據(jù)權(quán)利要求5至7任一所述的大數(shù)據(jù)量數(shù)據(jù)遠(yuǎn)程調(diào)用裝置,其特征在于:所述命令腳本文件中包括系統(tǒng)命令或腳本文件。
【文檔編號】G06F9/455GK103473116SQ201310412634
【公開日】2013年12月25日 申請日期:2013年9月11日 優(yōu)先權(quán)日:2013年9月11日
【發(fā)明者】張厚瑞 申請人:北京思特奇信息技術(shù)股份有限公司