本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種應(yīng)用的處理方法及裝置。
背景技術(shù):
目前,將應(yīng)用從大型機(jī)遷移到開放式平臺(tái)的市場(chǎng)價(jià)值巨大,所以,大型機(jī)的遷移方案越來(lái)越受重視。
對(duì)于開放式平臺(tái)而言,設(shè)置分布式緩存能夠?qū)?yīng)用間的數(shù)據(jù)共享方式改變?yōu)榧汗蚕矸绞剑瑥亩岣咂脚_(tái)上的各種應(yīng)用間的數(shù)據(jù)共享功能的實(shí)現(xiàn)的效率。
因此,如何實(shí)現(xiàn)遷移到開放式平臺(tái)的應(yīng)用與分布式緩存之間的對(duì)接,成為目前亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)?zhí)峁┝艘环N應(yīng)用的處理方法及裝置,目的在于解決如何實(shí)現(xiàn)從第一服務(wù)器遷移第二服務(wù)器的應(yīng)用與分布式緩存之間的對(duì)接的問(wèn)題。
為了實(shí)現(xiàn)上述目的,本申請(qǐng)?zhí)峁┝艘韵录夹g(shù)方案:
本申請(qǐng)的第一方面提供了一種應(yīng)用的處理方法,應(yīng)用于應(yīng)用從第一服務(wù)器向第二服務(wù)器遷移的過(guò)程中,包括:
在所述應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字,所述源關(guān)鍵字依據(jù)所述應(yīng)用的數(shù)據(jù)共享方式從預(yù)設(shè)的數(shù)據(jù)模型中查詢得到,所述預(yù)設(shè)的數(shù)據(jù)模型用于指示數(shù)據(jù)共享方式與源關(guān)鍵字間的對(duì)應(yīng)關(guān)系,所述源關(guān)鍵字用于所述應(yīng)用在遷移之前實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用所述第一服務(wù)器中的非分布式緩沖存儲(chǔ)器,所述目標(biāo)關(guān)鍵字用于在所述應(yīng)用遷 移之后,在所述源代碼被編譯運(yùn)行以實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用與所述第二服務(wù)器連接的分布式緩沖存儲(chǔ)器。
基于第一方面,在本申請(qǐng)的第一方面的第一種實(shí)現(xiàn)方式中,確定所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字的過(guò)程具體包括:
確定所述應(yīng)用的數(shù)據(jù)共享方式;
從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表;
從所述目標(biāo)數(shù)據(jù)模型中獲取關(guān)鍵字列表;
將包含在所述待轉(zhuǎn)換的代碼段中的所述關(guān)鍵字列表中的關(guān)鍵字作為所述源關(guān)鍵字。
基于本申請(qǐng)的第一方面的第一種實(shí)現(xiàn)方式,在本申請(qǐng)的第一方面的第二種實(shí)現(xiàn)方式中,所述預(yù)設(shè)的數(shù)據(jù)模型中的任意一個(gè)數(shù)據(jù)模型還包括:
用于指示源關(guān)鍵字替換為目標(biāo)關(guān)鍵字的替換規(guī)則;
所述使用目標(biāo)關(guān)鍵字替換所述待轉(zhuǎn)換的代碼段中的源關(guān)鍵字包括:
使用所述目標(biāo)數(shù)據(jù)模型中的替換規(guī)則,將所述源關(guān)鍵字替換為所述目標(biāo)關(guān)鍵字。
基于本申請(qǐng)的第一方面的第一種實(shí)現(xiàn)方式和第二種實(shí)現(xiàn)方式,在本申請(qǐng)的第一方面的第三種實(shí)現(xiàn)方式中,所述確定所述應(yīng)用的數(shù)據(jù)共享方式包括:確定所述應(yīng)用的數(shù)據(jù)共享方式為臨時(shí)存儲(chǔ)隊(duì)列TSQ;
則所述關(guān)鍵字列表包括以下關(guān)鍵字:
READQ:動(dòng)作類型;
QUEUE:隊(duì)列名稱;
QNAME:隊(duì)列名稱,與QUEUE二選一;
INTO:指定接收的數(shù)據(jù)區(qū);
SET:指明接收數(shù)據(jù)的指針,與INTO二選一;
LENGTH:接收數(shù)據(jù)區(qū)的長(zhǎng)度;
NUMITEMS:用來(lái)返回QUEUE里的紀(jì)錄的數(shù)量;
ITEM:指明讀第幾條紀(jì)錄;
NEXT:指明讀隊(duì)列的下一條紀(jì)錄,與ITEM二選一;
RESP:錯(cuò)誤碼;
RESP2:錯(cuò)誤碼詳細(xì)說(shuō)明;
SYSID:指明隊(duì)列所在遠(yuǎn)程客戶信息控制系統(tǒng)的名字。
基于本申請(qǐng)的第一方面的第一種實(shí)現(xiàn)方式和第二種實(shí)現(xiàn)方式,在本申請(qǐng)的第一方面的第四種實(shí)現(xiàn)方式中,所述確定所述應(yīng)用的數(shù)據(jù)共享方式包括:確定所述應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)緩存;
則所述關(guān)鍵字列表包括以下關(guān)鍵字:
SELECT:動(dòng)作類型,需要查詢的字段;
FROM:從哪些表取記錄;
INTO:需要賦值的字段;
WHERE:查詢的條件;
AND:與條件。
基于第一方面,在本申請(qǐng)的第一方面的第五種實(shí)現(xiàn)方式中,在所述應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段包括:
在所述應(yīng)用的數(shù)據(jù)共享方式為TSQ的情況下,將TSQ的開始標(biāo)記出現(xiàn)的代碼行作為代碼起始行,并將TSQ的結(jié)束標(biāo)記出現(xiàn)的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
在所述應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)數(shù)據(jù)緩存的情況下,將用戶標(biāo)記的起始位置所在的代碼行作為代碼起始行,并將用戶標(biāo)記的結(jié)束位置所在的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段。
基于第一方面、第一方面的第一種、第二種、第三種、第四種及第五種實(shí)現(xiàn)方式,在本申請(qǐng)的第一方面的第六種實(shí)現(xiàn)方式中,在所述使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,還包括:
編譯所述應(yīng)用的源代碼,生成遷移后的應(yīng)用;
依據(jù)第一指令,運(yùn)行所述遷移后的應(yīng)用,其中,在所述應(yīng)用運(yùn)行的過(guò)程中產(chǎn)生的數(shù)據(jù)被寫入所述分布式緩存中;
被寫入所述分布式緩存中的數(shù)據(jù),用于被與分所述布式緩存連接的第三服務(wù)器中運(yùn)行的應(yīng)用讀取。
基于第一方面、第一方面的第一種、第二種、第三種、第四種及第五種實(shí)現(xiàn)方式,在本申請(qǐng)的第一方面的第七種實(shí)現(xiàn)方式中,在所述使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,還包括:
編譯所述應(yīng)用的源代碼,生成遷移后的應(yīng)用;
依據(jù)第二指令,運(yùn)行所述遷移后的應(yīng)用,讀取所述分布式緩存中的數(shù)據(jù),其中,所述分布式緩存中的數(shù)據(jù)由與分所述布式緩存連接的第三服務(wù)器中運(yùn)行的應(yīng)用寫入。
本申請(qǐng)的第二方面提供了一種應(yīng)用的處理裝置,包括:
代碼段確認(rèn)模塊,用于在應(yīng)用從第一服務(wù)器向第二服務(wù)器遷移的過(guò)程中,在所述應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
替換模塊,用于使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字,所述源關(guān)鍵字依據(jù)所述應(yīng)用的數(shù)據(jù)共享方式從預(yù)設(shè)的數(shù)據(jù)模型中查詢得到,所述預(yù)設(shè)的數(shù)據(jù)模型用于指示數(shù)據(jù)共享方式與源關(guān)鍵字間的對(duì)應(yīng)關(guān)系,所述目標(biāo)關(guān)鍵字用于所述應(yīng)用在遷移之前實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用所述第一服務(wù)器中的非分布式緩沖存儲(chǔ)器,所述目標(biāo)關(guān)鍵字用于在所述應(yīng)用遷移之后,在所述源代碼被編譯運(yùn)行以實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用與所述第二服務(wù)器連接的分布式緩沖存儲(chǔ)器。
基于第二方面,在本申請(qǐng)的第二方面的第一種實(shí)現(xiàn)方式中,還包括:
關(guān)鍵字確認(rèn)模塊,用于確定所述應(yīng)用的數(shù)據(jù)共享方式;從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表;從所述目標(biāo)數(shù)據(jù)模型中獲取關(guān)鍵字列表;將包含在所述待轉(zhuǎn)換的代碼段中的所述關(guān)鍵字列表中的關(guān)鍵字作為所述源關(guān)鍵字。
基于本申請(qǐng)的第二方面的第一種實(shí)現(xiàn)方式,在本申請(qǐng)的第二方面的第二種實(shí)現(xiàn)方式中,所述關(guān)鍵字確認(rèn)模塊用于從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型集合中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表包括:
所述關(guān)鍵字確認(rèn)模塊具體用于,從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表,以及用于指示源關(guān)鍵字替換為目標(biāo)關(guān)鍵字的替換規(guī)則;
所述替換模塊用于使用目標(biāo)關(guān)鍵字替換所述待轉(zhuǎn)換的代碼段中的源關(guān)鍵字包括:
使用所述目標(biāo)數(shù)據(jù)模型中的替換規(guī)則,將所述源關(guān)鍵字替換為所述目標(biāo)關(guān)鍵字。
基于本申請(qǐng)的第二方面的第一種實(shí)現(xiàn)方式和第二種實(shí)現(xiàn)方式,在本申請(qǐng)的第二方面的第三種實(shí)現(xiàn)方式中,所述關(guān)鍵字確認(rèn)模塊用于確定所述應(yīng)用的數(shù)據(jù)共享方式;從所述預(yù)設(shè)的數(shù)據(jù)模型中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表包括:
所述關(guān)鍵字確認(rèn)模塊具體用于,確定所述應(yīng)用的數(shù)據(jù)共享方式為TSQ;從所述預(yù)設(shè)的數(shù)據(jù)模型中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表,所述關(guān)鍵字列表包括以下關(guān)鍵字:
READQ:動(dòng)作類型;
QUEUE:隊(duì)列名稱;
QNAME:隊(duì)列名稱,與QUEUE二選一;
INTO:指定接收的數(shù)據(jù)區(qū);
SET:指明接收數(shù)據(jù)的指針,與INTO二選一;
LENGTH:接收數(shù)據(jù)區(qū)的長(zhǎng)度;
NUMITEMS:用來(lái)返回QUEUE里的紀(jì)錄的數(shù)量;
ITEM:指明讀第幾條紀(jì)錄;
NEXT:指明讀隊(duì)列的下一條紀(jì)錄,與ITEM二選一;
RESP:錯(cuò)誤碼;
RESP2:錯(cuò)誤碼詳細(xì)說(shuō)明;
SYSID:指明隊(duì)列所在遠(yuǎn)程客戶信息控制系統(tǒng)的名字。
基于本申請(qǐng)的第二方面的第一種實(shí)現(xiàn)方式和第二種實(shí)現(xiàn)方式,在本申請(qǐng)的第二方面的第四種實(shí)現(xiàn)方式中,所述關(guān)鍵字確認(rèn)模塊用于確定所述應(yīng)用的數(shù)據(jù)共享方式;從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表包括:
所述關(guān)鍵字確認(rèn)模塊具體用于,確定所述應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)緩存;從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表,所述關(guān)鍵字列表包括以下關(guān)鍵字:
SELECT:動(dòng)作類型,需要查詢的字段;
FROM:從哪些表取記錄;
INTO:需要賦值的字段;
WHERE:查詢的條件;
AND:與條件。
基于第二方面,在本申請(qǐng)的第二方面的第五種實(shí)現(xiàn)方式中,所述代碼段確認(rèn)模塊用于在所述應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段包括:
所述代碼段確認(rèn)模塊具體用于,在所述應(yīng)用的數(shù)據(jù)共享方式為TSQ的情況下,將TSQ的開始標(biāo)記出現(xiàn)的代碼行作為代碼起始行,并將TSQ的結(jié)束標(biāo)記出現(xiàn)的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;在所述應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)數(shù)據(jù)緩存的情況下,將用戶標(biāo)記的起始位置所在的代碼行作為代碼起始行,并將用戶標(biāo)記的結(jié)束位置所在的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段。
基于第二方面、第二方面的第一種、第二種、第三種、第四種及第五種實(shí)現(xiàn)方式,在本申請(qǐng)的第二方面的第六種實(shí)現(xiàn)方式中,還包括:
編譯模塊,用于在所述替換模塊使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,編譯所述應(yīng)用的源代碼,生成遷移后的應(yīng)用;
第一運(yùn)行控制模塊,用于依據(jù)第一指令,運(yùn)行所述遷移后的應(yīng)用,其中,在所述應(yīng)用運(yùn)行的過(guò)程中產(chǎn)生的數(shù)據(jù)被寫入所述分布式緩存中,被寫入所述分布式緩存中的數(shù)據(jù),用于被與分所述布式緩存連接的第三服務(wù)器中運(yùn)行的應(yīng)用讀取。
基于第二方面、第二方面的第一種、第二種、第三種、第四種及第五種實(shí)現(xiàn)方式,在本申請(qǐng)的第二方面的第七種實(shí)現(xiàn)方式中,還包括:
編譯模塊,用于在所述替換模塊使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,編譯所述應(yīng)用的源代碼,生成遷移后的應(yīng)用;
第二運(yùn)行控制模塊,用于依據(jù)第二指令,運(yùn)行所述遷移后的應(yīng)用,讀取所述分布式緩存中的數(shù)據(jù),其中,所述分布式緩存中的數(shù)據(jù)由與分所述布式緩存連接的第三服務(wù)器中運(yùn)行的應(yīng)用寫入。
本申請(qǐng)所述的應(yīng)用的處理方法及裝置,在應(yīng)用從第一服務(wù)器向第二服務(wù)器遷移的過(guò)程中,在應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段,并使用目標(biāo)關(guān)鍵字替換用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字,其中,源關(guān)鍵字從預(yù)設(shè)的指示數(shù)據(jù)共享方式與源關(guān)鍵字間的對(duì)應(yīng)關(guān)系的數(shù)據(jù)模型中查詢,源關(guān)鍵字用于所述應(yīng)用在遷移之前實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用所述第一服務(wù)器中的非分布式緩沖存儲(chǔ)器,目標(biāo)關(guān)鍵字用于在所述應(yīng)用遷移之后,在所述源代碼被編譯運(yùn)行以實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用與所述第二服務(wù)器連接的分布式緩沖存儲(chǔ)器,所以,使用本申請(qǐng)所述的方法及裝置,通過(guò)對(duì)應(yīng)用的源代碼的轉(zhuǎn)換,可以實(shí)現(xiàn)此應(yīng)用與分布式緩存之間的對(duì)接,從而使得應(yīng)用調(diào)用分布式緩存實(shí)現(xiàn)數(shù)據(jù)共享功能。
附圖說(shuō)明
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為一種分布式緩存的架構(gòu)圖;
圖2為本申請(qǐng)實(shí)施例公開的一種應(yīng)用的處理方法的流程圖;
圖3為一種應(yīng)用間數(shù)據(jù)共享方式的示意圖;
圖4為本申請(qǐng)實(shí)施例公開的又一種應(yīng)用的處理方法的流程圖;
圖5為本申請(qǐng)實(shí)施例公開的使用對(duì)接裝置實(shí)現(xiàn)應(yīng)用與分布式緩存的通信的架構(gòu)示意圖;
圖6為一種應(yīng)用間數(shù)據(jù)共享方式的示意圖;
圖7本申請(qǐng)實(shí)施例公開的又一種應(yīng)用的處理方法的流程圖;
圖8本申請(qǐng)實(shí)施例公開的一種應(yīng)用的處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本申請(qǐng)實(shí)施例公開了一種應(yīng)用的處理方法及裝置,可以應(yīng)用在應(yīng)用從第一服務(wù)器(例如大型機(jī))向第二服務(wù)器的遷移過(guò)程中,其中,所述第二服務(wù)器可以采用X86架構(gòu),并且第二服務(wù)器預(yù)先與分布式緩沖存儲(chǔ)器(簡(jiǎn)稱分布式緩存)相連接。
具體地,所述分布式緩沖存儲(chǔ)器以集群的方式提供高性能、高可靠性的分布式對(duì)象緩存能力,加速數(shù)據(jù)讀訪問(wèn)、減少對(duì)數(shù)據(jù)庫(kù)的依賴。分布式緩沖存儲(chǔ)器常用的方式是提供鍵值(KEY VALUE,KV)數(shù)據(jù)存儲(chǔ)接口將數(shù)據(jù)存儲(chǔ)到各節(jié)點(diǎn)的內(nèi)存中,提供緩存的新增、查詢、修改、刪除等應(yīng)用程序編程接口(Application Programming Interface,API)。主流的分布式緩存有Memcached、Redis以及distributed cache Systyem(DCS)。圖1為一種分布式緩存與服務(wù)器連接的架構(gòu)圖,其中,應(yīng)用服務(wù)器為應(yīng)用運(yùn)行的服務(wù)器,本申請(qǐng)以下的實(shí)施例中,第二服務(wù)器和第三服務(wù)器均為應(yīng)用服務(wù)器,緩存服務(wù)器為分布式緩存集群中用于實(shí)現(xiàn)緩存功能的服務(wù)器,各個(gè)應(yīng)用服務(wù)器中設(shè)置有緩存客戶端,用于將此應(yīng)用服務(wù)器中的數(shù)據(jù)寫入緩存服務(wù)器中,各個(gè)緩存服務(wù)器中的數(shù)據(jù)可以相互復(fù)制。
下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
本申請(qǐng)實(shí)施例公開的一種應(yīng)用的處理方法,如圖2所示,包括:
S201:在應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
S202:使用目標(biāo)關(guān)鍵字替換用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字。
本實(shí)施例中,源關(guān)鍵字的功能為:在應(yīng)用遷移之前實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用第一服務(wù)器中的非分布式緩沖存儲(chǔ)器,也就是說(shuō),源關(guān)鍵字為用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中,用于調(diào)用第一服務(wù)器中的非分布式緩沖存儲(chǔ)器的函數(shù)、字段或參數(shù)。
具體地,源關(guān)鍵字依據(jù)所述應(yīng)用的數(shù)據(jù)共享方式從預(yù)設(shè)的數(shù)據(jù)模型中查詢得到,預(yù)設(shè)的數(shù)據(jù)模型用于指示應(yīng)用的數(shù)據(jù)共享方式與源關(guān)鍵字間的對(duì)應(yīng)關(guān)系。
本實(shí)施例中,目標(biāo)關(guān)鍵字用于在所述應(yīng)用遷移之后,在所述源代碼被編譯運(yùn)行以實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用與所述第二服務(wù)器連接的分布式緩存。
需要說(shuō)明的是,除了第二服務(wù)器,分布式緩存還可以與其它服務(wù)器(例如第三服務(wù)器)相連,使用本實(shí)施例中所述的方法,則應(yīng)用在被遷移到第三服務(wù)器中的過(guò)程中,同樣可以通過(guò)修改其源代碼的方式,實(shí)現(xiàn)第三服務(wù)器中的應(yīng)用在數(shù)據(jù)共享的過(guò)程中調(diào)用此分布式緩存的目的,在此情況下,第一服務(wù)器在使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,還可以編譯應(yīng)用的源代碼,并依據(jù)第一指令,運(yùn)行所述應(yīng)用,因?yàn)槭褂帽緦?shí)施例所述的方法對(duì)源代碼進(jìn)行了修改,所以,在所述應(yīng)用運(yùn)行的過(guò)程中產(chǎn)生的數(shù)據(jù)被寫入所述分布式緩存中,第三服務(wù)器中的應(yīng)用可以從分布式緩存中讀取被第二服務(wù)器中的應(yīng)用寫入的數(shù)據(jù),以實(shí)現(xiàn)所述第二服務(wù)器中的應(yīng)用與所述第三服務(wù)器中的應(yīng)用間的數(shù)據(jù)共享。
或者,第一服務(wù)器在使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,還可以編譯應(yīng)用的源代碼,并依據(jù)第二指令,運(yùn)行所述應(yīng)用,因?yàn)槭褂帽緦?shí)施例所述的方法對(duì)源代碼進(jìn)行了修改,所以,在所述應(yīng)用運(yùn)行的過(guò)程中,所述應(yīng)用從所述分布式緩存中讀取由第三服務(wù)器中的應(yīng)用寫入的數(shù)據(jù),以實(shí)現(xiàn)所述第二服務(wù)器中的應(yīng)用與所述第三服務(wù)器中的應(yīng)用間的數(shù)據(jù)共享。
換句話說(shuō),應(yīng)用被遷入到第三服務(wù)器的過(guò)程,和應(yīng)用被遷入到第二服務(wù)器的過(guò)程完全相同。為了節(jié)約篇幅,本發(fā)明實(shí)施例僅詳細(xì)描述應(yīng)用被遷入第二服務(wù)器的過(guò)程。第二服務(wù)器和第三服務(wù)器都和分布式緩存連接,共享分布式緩存提供的存儲(chǔ)空間。
第二服務(wù)器和第三服務(wù)器,可以對(duì)分布式緩存中的同一數(shù)據(jù)進(jìn)行增加(寫入數(shù)據(jù))、刪除、查找或修改,實(shí)現(xiàn)了不同服務(wù)器的應(yīng)用對(duì)同一個(gè)數(shù)據(jù)的共享。第二服務(wù)器中,進(jìn)行數(shù)據(jù)共享操作的是第二服務(wù)器中的的遷入后應(yīng)用。第三服務(wù)武器中,第二服務(wù)器中,進(jìn)行數(shù)據(jù)共享操作的是第三服務(wù)器中的的遷入后應(yīng)用,也可以是其他應(yīng)用。第二服務(wù)器和第三服務(wù)器中的遷移后應(yīng)用,均由第一服務(wù)器中的應(yīng)用基于同樣的遷移方法生成。
例如,遷入第二服務(wù)器的應(yīng)用運(yùn)行時(shí),寫入分布式緩存的數(shù)據(jù)可以被遷入第三服務(wù)器的應(yīng)用讀取。同樣的,第二服務(wù)器運(yùn)行遷入第三服務(wù)器的應(yīng)用時(shí),寫入分布式緩存的數(shù)據(jù)可以被遷入第二服務(wù)器的應(yīng)用讀取。
可見,本實(shí)施例中所述方法,將應(yīng)用的源代碼中的源關(guān)鍵字替換為目標(biāo)關(guān)鍵字,也就是將可調(diào)用分布式緩存的函數(shù)、字段或者參數(shù)封裝進(jìn)應(yīng)用的源代碼中,因此,在應(yīng)用運(yùn)行的過(guò)程中,可以實(shí)現(xiàn)與分布式緩存的通信,從而使用分布式緩存實(shí)現(xiàn)數(shù)據(jù)共享,以獲得更高的數(shù)據(jù)讀寫效率。
進(jìn)一步地,本實(shí)施例中,可以使用現(xiàn)有的Rehosting方式將應(yīng)用遷移到第二服務(wù)器中,此種遷移方式的宗旨為不改或少修改應(yīng)用的源代碼,因此,工作量小,遷移效率高,在此種遷移方式中引入本實(shí)施例所述的方法,使得遷移后的應(yīng)用可以使用分布式緩存進(jìn)行數(shù)據(jù)的讀寫,從而實(shí)現(xiàn)不同應(yīng)用間的數(shù)據(jù)集群共享,以解決Rehosting方式無(wú)法實(shí)現(xiàn)集群共享的問(wèn)題。
下面將結(jié)合不同的數(shù)據(jù)共享場(chǎng)景,對(duì)圖2所示的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
本申請(qǐng)實(shí)施例公開的又一種應(yīng)用的處理方法,應(yīng)用在以臨時(shí)存儲(chǔ)隊(duì)列(Temporary Storage Queue,TSQ)為數(shù)據(jù)共享方式的應(yīng)用的遷移過(guò)程中。
交易信息的共享為一種典型的TSQ數(shù)據(jù)共享方式,如圖3所示,三個(gè)節(jié)點(diǎn)中的多只聯(lián)機(jī)交易(例如A交易)的初始化數(shù)據(jù)是一樣的,初始化一次后續(xù)的交易直接讀內(nèi)存里的數(shù)據(jù),為了數(shù)據(jù)的一致性,圖3所示的三個(gè)節(jié)點(diǎn)讀到的內(nèi)存里的數(shù)據(jù)都要是一樣的。TSQ數(shù)據(jù)共享方式是把共享的數(shù)據(jù)放到TSQ隊(duì)列里(以Enterprise Server中間件舉例),這種方式只能實(shí)現(xiàn)單節(jié)點(diǎn)內(nèi)的數(shù)據(jù)共享,而無(wú)法實(shí)現(xiàn)多節(jié)點(diǎn)間的數(shù)據(jù)同步,如果要同步多個(gè)節(jié)點(diǎn)以保證多節(jié)點(diǎn)間的數(shù)據(jù)同步,則需要設(shè)置應(yīng)用實(shí)現(xiàn)這部分功能,而設(shè)置應(yīng)用的過(guò)程非常繁瑣。
如圖4所示,本實(shí)施例中的方法包括以下步驟:
S401:確定被遷移的應(yīng)用的數(shù)據(jù)共享方式為TSQ;
S402:從預(yù)設(shè)的數(shù)據(jù)模型集合中查詢類型元數(shù)據(jù)為TSQ的目標(biāo)數(shù)據(jù)模型;
具體地,預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型均可以包括以下元數(shù)據(jù):
類型元數(shù)據(jù)、源關(guān)鍵字列表,功能元數(shù)據(jù)、關(guān)鍵字的類型、長(zhǎng)度和關(guān)鍵字之間的關(guān)系、以及轉(zhuǎn)換規(guī)則。
其中,類型元數(shù)據(jù)用于指示應(yīng)用的數(shù)據(jù)共享方式是TSQ還是數(shù)據(jù)庫(kù)緩存;功能元數(shù)據(jù)用于描述該應(yīng)用功能是讀緩存、寫緩存、更新緩存還是輸出緩存;關(guān)鍵字類型用于指示此關(guān)鍵字是否為入?yún)?;關(guān)鍵字之間的關(guān)系用于描述關(guān)鍵字與關(guān)鍵字之間的關(guān)聯(lián)關(guān)系,包括依賴關(guān)系、互斥關(guān)系、包含關(guān)系、關(guān)鍵字和關(guān)鍵字之間的排列順序(即什么關(guān)鍵字在前、什么關(guān)鍵字在后)、該關(guān)鍵字是否必需、關(guān)鍵字的參數(shù)能夠?yàn)榭盏龋晦D(zhuǎn)換規(guī)則用于指示源關(guān)鍵字轉(zhuǎn)換為目標(biāo)關(guān)鍵字的轉(zhuǎn)換規(guī)則。
在類型元數(shù)據(jù)為TSQ的數(shù)據(jù)模型中,關(guān)鍵字列表中可以包括以下關(guān)鍵字:
◆讀隊(duì)列READQ:動(dòng)作類型;
◆隊(duì)列QUEUE(name):隊(duì)列名稱;
◆隊(duì)列名QNAME(name):隊(duì)列名稱,與QUEUE二選一;
◆插入數(shù)據(jù)區(qū)INTO(data-area):指定接收的數(shù)據(jù)區(qū);
◆設(shè)置指針SET(ptr-ref):指明接收數(shù)據(jù)的指針,與INTO二選一;
◆數(shù)據(jù)長(zhǎng)度LENGTH(data-area):接收數(shù)據(jù)區(qū)的長(zhǎng)度;
◆記錄數(shù)NUMITEMS(data-area):用來(lái)返回QUEUE里一共有多少紀(jì)錄;
◆條目ITEM(data-value):指明讀第幾條紀(jì)錄;
◆下一條NEXT:指明讀隊(duì)列的下一條紀(jì)錄,與ITEM二選一;
◆響應(yīng)碼RESP:錯(cuò)誤碼;
◆響應(yīng)碼說(shuō)明RESP2:錯(cuò)誤碼詳細(xì)說(shuō)明;
◆系統(tǒng)標(biāo)識(shí)SYSID(system name):指明隊(duì)列所在遠(yuǎn)程客戶信息控制系統(tǒng)(Customer Information Control System,CICS)的名字。
需要說(shuō)明的是,以上各個(gè)關(guān)鍵字之后的括號(hào)中的字段表示此關(guān)鍵字的參數(shù)(入?yún)?。
功能元數(shù)據(jù)、關(guān)鍵字的類型、長(zhǎng)度和關(guān)鍵字之間的關(guān)系用來(lái)檢查要替換的代碼的語(yǔ)法,詞法和語(yǔ)義的正確性。
S403:從所述目標(biāo)數(shù)據(jù)模型中獲取關(guān)鍵字列表;
S404:在所述待轉(zhuǎn)換的代碼段中依次查找所述關(guān)鍵字列表中的關(guān)鍵字,將找到的關(guān)鍵字確定為所述源關(guān)鍵字;
S405:將TSQ的開始標(biāo)記出現(xiàn)的代碼行作為代碼起始行,并將TSQ的結(jié)束標(biāo)記出現(xiàn)的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
具體地,可以使用現(xiàn)有的搜索引擎搜索“EXEC CICS WRITEQ TS”、“EXEC WRITEQ TS REWRITE”、“EXEC READQ TS”、“EXEC READQ TS NEXT”、或“EXEC DELETEQ TS”標(biāo)記出現(xiàn)的代碼行,并在此代碼行添加開始注解符作為代碼起始行,然后從代碼起始行逐行搜索“END-EXEC”標(biāo)記出現(xiàn)的代碼行,并在次代碼行添加結(jié)束注解符作為代碼結(jié)束行。結(jié)合分布式緩存主要的API,抽取8個(gè)注解@add cache begin,@update cache begin,@delete cache begin,@read cache begin,@add cache end,@update cache end, @delete cache end,@read cache end分別對(duì)應(yīng)分布式緩存的新增、更新、刪除、讀取操作的開始和結(jié)束。
其中,S405與S403或S404的順序不做限定。
S406:使用所述目標(biāo)數(shù)據(jù)模型中的替換規(guī)則,將所述源關(guān)鍵字替換為所述目標(biāo)關(guān)鍵字。
本實(shí)施例中,目標(biāo)關(guān)鍵字用于指示對(duì)接裝置上的API,所述對(duì)接裝置為分布式緩存與第二服務(wù)器間的連接橋梁,實(shí)現(xiàn)第二服務(wù)器中的應(yīng)用與分布式緩存的連接。
使用對(duì)接裝置實(shí)現(xiàn)應(yīng)用與分布式緩存的通信的架構(gòu)示意圖如圖5所示,因?yàn)槟壳爸髁鞯姆植际骄彺娴目蛻舳艘话悴捎肑AVA和C進(jìn)行編譯,而Rehosting遷移的應(yīng)用通常采用COBOL進(jìn)行編譯,所以,對(duì)接裝置的目的在于封裝API(例如Webservice、Restful接口),這些API用于應(yīng)用與分布式緩存進(jìn)行通信,包括應(yīng)用與分布式緩存間的連接及初始化等過(guò)程。
對(duì)接裝置如何與各種分布式緩存對(duì)接可以參見現(xiàn)有技術(shù)。目前對(duì)分布式緩存的使用,主要是對(duì)分布式緩存的寫、讀、更新以及刪除操作上,結(jié)合TSQ和數(shù)據(jù)庫(kù)場(chǎng)景,對(duì)緩存數(shù)據(jù)的操作也集中在寫、讀、更新及刪除操作上,所以,對(duì)接裝置也只需封裝以上4種接口即可。
從上述說(shuō)明可以看出,本實(shí)施例中所述的方法,通過(guò)建立元數(shù)據(jù)模型,界定代碼范圍和代碼轉(zhuǎn)換流程,COBOL應(yīng)用中就自動(dòng)引入了分布式緩存,基于分布式緩存的特性,多個(gè)應(yīng)用節(jié)點(diǎn)可以共享數(shù)據(jù),而無(wú)需對(duì)應(yīng)用進(jìn)行改進(jìn),因此,使得多應(yīng)用節(jié)點(diǎn)共享數(shù)據(jù)的方式變得簡(jiǎn)單易行。
本申請(qǐng)實(shí)施例公開的又一種應(yīng)用的處理方法,應(yīng)用在以數(shù)據(jù)庫(kù)緩存為數(shù)據(jù)共享方式的應(yīng)用的遷移過(guò)程中。
聯(lián)機(jī)交易里有分頁(yè)查詢的交易,以某銀行對(duì)公客戶系統(tǒng)為例,目前的做法是把查詢的中間結(jié)果放到數(shù)據(jù)庫(kù),分頁(yè)查詢的時(shí)候再對(duì)中間結(jié)果查詢。如圖6所示,三個(gè)交易(A交易、B交易和C交易)每次都要取T表的前10條 記錄,而這些記錄的變動(dòng)小,如果每次都取數(shù)據(jù)庫(kù)查詢無(wú)疑是種浪費(fèi),效率比較低,大數(shù)據(jù)量的查詢時(shí)又增加了數(shù)據(jù)庫(kù)網(wǎng)絡(luò)交互的次數(shù),降低了數(shù)據(jù)庫(kù)性能。
本申請(qǐng)實(shí)施例公開的又一種應(yīng)用的處理方法,如圖7所示,包括以下步驟:
S701:確定被遷移的應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)緩存;
S702:從預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為數(shù)據(jù)庫(kù)緩存;
同上一實(shí)施例,預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型均可以包括以下元數(shù)據(jù):
類型元數(shù)據(jù)、源關(guān)鍵字列表,功能元數(shù)據(jù)、關(guān)鍵字的類型、長(zhǎng)度和關(guān)鍵字之間的關(guān)系、以及轉(zhuǎn)換規(guī)則。
與上述實(shí)施例不同的是,在類型元數(shù)據(jù)為數(shù)據(jù)庫(kù)緩存的數(shù)據(jù)模型下,關(guān)鍵字列表中可以包括以下關(guān)鍵字:
◆選擇SELECT:動(dòng)作類型,需要查詢的字段;
◆哪些FROM:從哪些表取記錄;
◆插入數(shù)據(jù)區(qū)INTO:需要賦值的字段;
◆哪里WHERE:查詢的條件;
◆與AND:與條件。
S703:將用戶標(biāo)記的起始位置所在的代碼行作為代碼起始行,并將用戶標(biāo)記的結(jié)束位置所在的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
具體地,由于不是所有的SQL都需要緩存,開始行的位置無(wú)法通過(guò)搜索的方式獲取,所以需要用戶指定好使用共享緩存的代碼位置,并依據(jù)用戶的指定,在開始位置和結(jié)束位置加上注解符號(hào)。
S704:從所述目標(biāo)數(shù)據(jù)模型中獲取關(guān)鍵字列表;
S705:在所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中依次查找所述關(guān)鍵字列表中的關(guān)鍵字,將找到的關(guān)鍵字確定為所述源關(guān)鍵字;
S706:檢查所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字的語(yǔ)法是否正確,如果是,執(zhí)行S707,如果否,執(zhí)行S708;
例如包括READQ關(guān)鍵字的情況下,ITEM關(guān)鍵字和NEXT關(guān)鍵字不能并存,QUEUE不能為空;又例如在元數(shù)據(jù)類型為數(shù)據(jù)緩存的情況下,WHERE關(guān)鍵字不能在FROM關(guān)鍵字前,INTO關(guān)鍵字不能為空等。語(yǔ)法判斷的依據(jù)來(lái)自于數(shù)據(jù)模型里的關(guān)鍵字類型和長(zhǎng)度、關(guān)鍵字之間的關(guān)系。
S707:使用所述目標(biāo)數(shù)據(jù)模型中的替換規(guī)則,將所述源關(guān)鍵字替換為所述目標(biāo)關(guān)鍵字。
S708:發(fā)出語(yǔ)法錯(cuò)誤提示。
從上述步驟可以看出,使用本實(shí)施例所述的方法將被遷移的應(yīng)用的源代碼進(jìn)行轉(zhuǎn)換后,使得應(yīng)用與分布式緩存對(duì)接,在此應(yīng)用進(jìn)行分頁(yè)查詢的時(shí)候,可以直接從分布式緩存中讀取數(shù)據(jù),從而能夠提高查詢的效率。
與上述方法相對(duì)應(yīng)地,本申請(qǐng)實(shí)施例還提供了一種應(yīng)用的處理裝置,如圖8所示,包括:
代碼段確認(rèn)模塊801,用于在應(yīng)用從第一服務(wù)器向第二服務(wù)器遷移的過(guò)程中,在所述應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;
替換模塊802,用于使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字,所述源關(guān)鍵字依據(jù)所述應(yīng)用的數(shù)據(jù)共享方式從預(yù)設(shè)的數(shù)據(jù)模型中查詢得到,所述預(yù)設(shè)的數(shù)據(jù)模型用于指示數(shù)據(jù)共享方式與源關(guān)鍵字間的對(duì)應(yīng)關(guān)系,所述目標(biāo)關(guān)鍵字用于所述應(yīng)用在遷移之前實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用所述第一服務(wù)器中的非分布式緩沖存儲(chǔ)器,所述目標(biāo)關(guān)鍵字用于在所述應(yīng)用遷移之后,在所述源代碼被編譯運(yùn)行以實(shí)現(xiàn)數(shù)據(jù)共享功能的過(guò)程中,調(diào)用與所述第二服務(wù)器連接的分布式緩沖存儲(chǔ)器。
可選地,本實(shí)施例所述裝置還可以包括:
關(guān)鍵字確認(rèn)模塊803,用于確定所述應(yīng)用的數(shù)據(jù)共享方式;從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表;從所述目標(biāo)數(shù)據(jù)模型中獲取關(guān)鍵字列表;將包含在所述待轉(zhuǎn)換的代碼段中的所述關(guān)鍵字列表中的關(guān)鍵字作為所述源關(guān)鍵字。
編譯模塊804,用于在所述替換模塊使用目標(biāo)關(guān)鍵字替換所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段中的源關(guān)鍵字之后,編譯所述應(yīng)用的源代碼,生成遷移后的應(yīng)用;
以及第一運(yùn)行控制模塊805和/或第二運(yùn)行控制模塊806。
其中,第一運(yùn)行控制模塊用于依據(jù)第一指令,運(yùn)行所述遷移后的應(yīng)用,其中,在所述應(yīng)用運(yùn)行的過(guò)程中產(chǎn)生的數(shù)據(jù)被寫入所述分布式緩存中,被寫入所述分布式緩存中的數(shù)據(jù),用于被與分所述布式緩存連接的第三服務(wù)器中運(yùn)行的應(yīng)用讀取。
第二運(yùn)行控制模塊用于依據(jù)第二指令,運(yùn)行所述遷移后的應(yīng)用,讀取所述分布式緩存中的數(shù)據(jù),其中所述分布式緩存中的數(shù)據(jù)由與分所述布式緩存連接的第三服務(wù)器中運(yùn)行的應(yīng)用寫入。
具體地,關(guān)鍵字確認(rèn)模塊確認(rèn)源關(guān)鍵字的具體實(shí)現(xiàn)方式可以為:從所述預(yù)設(shè)的數(shù)據(jù)模型集合中查詢目標(biāo)數(shù)據(jù)模型,所述目標(biāo)數(shù)據(jù)模型中的類型元數(shù)據(jù)為所述應(yīng)用的數(shù)據(jù)共享方式,所述預(yù)設(shè)的數(shù)據(jù)模型集合中的任意一個(gè)數(shù)據(jù)模型包括類型元數(shù)據(jù)及關(guān)鍵字列表,以及用于指示源關(guān)鍵字替換為目標(biāo)關(guān)鍵字的替換規(guī)則;替換模塊使用目標(biāo)關(guān)鍵字替換所述待轉(zhuǎn)換的代碼段中的源關(guān)鍵字的具體實(shí)現(xiàn)方式可以為:使用所述目標(biāo)數(shù)據(jù)模型中的替換規(guī)則,將所述源關(guān)鍵字替換為所述目標(biāo)關(guān)鍵字。
進(jìn)一步地,關(guān)鍵字確認(rèn)模塊可以依據(jù)不同的數(shù)據(jù)共享方式,確定出不同的關(guān)鍵字列表,具體地:
關(guān)鍵字確認(rèn)模塊確定所述應(yīng)用的數(shù)據(jù)共享方式為TSQ,則所述關(guān)鍵字列表包括以下關(guān)鍵字:
READQ:動(dòng)作類型;
QUEUE:隊(duì)列名稱;
QNAME:隊(duì)列名稱,與QUEUE二選一;
INTO:指定接收的數(shù)據(jù)區(qū);
SET:指明接收數(shù)據(jù)的指針,與INTO二選一;
LENGTH:接收數(shù)據(jù)區(qū)的長(zhǎng)度;
NUMITEMS:用來(lái)返回QUEUE里的紀(jì)錄的數(shù)量;
ITEM:指明讀第幾條紀(jì)錄;
NEXT:指明讀隊(duì)列的下一條紀(jì)錄,與ITEM二選一;
RESP:錯(cuò)誤碼;
RESP2:錯(cuò)誤碼詳細(xì)說(shuō)明;
SYSID:指明隊(duì)列所在遠(yuǎn)程客戶信息控制系統(tǒng)的名字。
關(guān)鍵字確認(rèn)模塊確定所述應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)緩存;
則所述關(guān)鍵字列表包括以下關(guān)鍵字:
SELECT:動(dòng)作類型,需要查詢的字段;
FROM:從哪些表取記錄;
INTO:需要賦值的字段;
WHERE:查詢的條件;
AND:與條件。
具體地,代碼段確認(rèn)模塊在所述應(yīng)用的源代碼中確認(rèn)用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段的具體實(shí)現(xiàn)方式可以為:在所述應(yīng)用的數(shù)據(jù)共享方式為TSQ的情況下,將TSQ的開始標(biāo)記出現(xiàn)的代碼行作為代碼起始行,并將TSQ的結(jié)束標(biāo)記出現(xiàn)的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段;在所述應(yīng)用的數(shù)據(jù)共享方式為數(shù)據(jù)庫(kù)數(shù)據(jù)緩存的情況下,將用戶標(biāo)記的起始位置所在的代碼行作為代 碼起始行,并將用戶標(biāo)記的結(jié)束位置所在的代碼行作為代碼結(jié)束行,所述代碼起始行和所述代碼結(jié)束行之間的代碼段為所述用于實(shí)現(xiàn)數(shù)據(jù)共享功能的代碼段。
本實(shí)施例所述的裝置,可以通過(guò)在應(yīng)用的遷移過(guò)程中修改應(yīng)用的源代碼,將實(shí)現(xiàn)數(shù)據(jù)共享功能過(guò)程中調(diào)用的非分布式存儲(chǔ)器替換為分布式緩存,從而提高數(shù)據(jù)共享的效率。
本申請(qǐng)實(shí)施例方法所述的功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算設(shè)備可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本申請(qǐng)實(shí)施例對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,移動(dòng)計(jì)算設(shè)備或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見即可。
對(duì)所公開的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請(qǐng)。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請(qǐng)的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請(qǐng)將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。