專利名稱:一種分布式中間件與數(shù)據(jù)庫(kù)數(shù)據(jù)交互方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分布式中間件與數(shù)據(jù)庫(kù)的 交互方法,屬于分布式系統(tǒng)中間件fe^領(lǐng)域。
背景技術(shù):
隨著分布式計(jì)算系統(tǒng)的發(fā)豚中間fm術(shù)應(yīng)運(yùn)而生。中間件是在分布式系統(tǒng)環(huán)境中,實(shí)5I^S 互聯(lián)、資源共享的一類獨(dú)立的系統(tǒng)軟件劍艮務(wù)程序。中間件已經(jīng)成為分布式系統(tǒng)的關(guān)鍵性基礎(chǔ)軟 件,有了中間件以后,就可以更方便的開(kāi)發(fā)、運(yùn)行和管理分布式應(yīng)用系統(tǒng)。
在傳統(tǒng)的分布式系統(tǒng)中中間件與 庫(kù)^]£大都存在以下不足
1. 不可復(fù)用
目前很多的系統(tǒng)環(huán)境由多個(gè)開(kāi)發(fā)商,的產(chǎn)品組成其中的中間件產(chǎn)品只針對(duì)某H^定數(shù)據(jù)庫(kù) 以^Zffl禾驕進(jìn)行設(shè)沐當(dāng)產(chǎn)品之間產(chǎn)生差異,用,需求之間的差異以及系統(tǒng)框架改變后中間 件則無(wú)法啟用。
2. 微信息編碼解碼復(fù)雜
傳統(tǒng)中間件與應(yīng)用辦之間的信息〗輸以字符流(二進(jìn)制數(shù)據(jù))形式進(jìn)行,在程序設(shè)計(jì)前期需 要定制詳盡的信息編碼與解析方式,這樣大大減緩了系統(tǒng)的處理能力,在解碼過(guò)程中易產(chǎn)生錯(cuò)誤, 同時(shí)也不便于進(jìn)行^lf信息的錯(cuò)誤檢査。鄭州輕工業(yè)學(xué)院^m, 2008年第23期,名稱為《基于 1的異構(gòu)數(shù)據(jù)庫(kù)中間# 開(kāi)究》公開(kāi)了一種現(xiàn)有技術(shù)即為此列。
3. 數(shù)據(jù)請(qǐng)求沖突
分布式系統(tǒng)中當(dāng)應(yīng)用fiia量較多或fM^求的數(shù)據(jù)更新較多較快時(shí),易造成數(shù)據(jù)沖突和網(wǎng)絡(luò) 堵塞,極易導(dǎo)致系縦t瑰緩艦機(jī),成為齡系統(tǒng)性能的臓,同樣,大量的娜庫(kù)請(qǐng)求會(huì)產(chǎn)生 數(shù)據(jù)庫(kù)請(qǐng)求的,?!段⒂?jì)^m^用》,2008年第09期,名稱為《可復(fù)用可動(dòng)態(tài)加載,據(jù)庫(kù)中間 件的設(shè)計(jì)》公開(kāi)了一種現(xiàn)有技術(shù)即為此列。
ODBC (Open Database Connectivity,開(kāi)放l^庫(kù)互連)^是微軟公司開(kāi)柳艮務(wù)結(jié)構(gòu)(WOSA, Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它M5l了一組規(guī)范,并提 供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API (應(yīng)用,編程接口)。 一個(gè)基于ODBC的應(yīng)用禾辦對(duì)數(shù)據(jù)庫(kù)的操 作不繊頓隨,不直接與DBMS打交道,所有的數(shù)據(jù)庫(kù)操作由對(duì)應(yīng)的DBMS的ODBC驅(qū)動(dòng)辦完 成。也就是說(shuō),不論是FoxPro、 Access, MYSQL還是Oracle ,庫(kù),均可用ODBC API進(jìn)行訪問(wèn)。 由此可見(jiàn),ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處a0f有的數(shù)據(jù)庫(kù)。該技術(shù)的應(yīng)用增強(qiáng)本發(fā)明的可 復(fù)用性。
本發(fā)明使用了目前Internet環(huán)境中較為流行肌技術(shù),降低傳輸信息編碼解碼的復(fù)雜度,增 強(qiáng)了系統(tǒng)的復(fù)用性。XMLS^m平臺(tái)的,繊于內(nèi)容的M,是當(dāng)前處理結(jié)構(gòu)化數(shù)據(jù)信息的有力 工具。擴(kuò)展標(biāo)記語(yǔ)言XML是一種簡(jiǎn)單的娜存fii吾言,使用一系列簡(jiǎn)單的標(biāo)記描述翻,而這些標(biāo) 記可以用方便的方式^和解析,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML 極其簡(jiǎn)單易于掌握和使用。XML的簡(jiǎn)單使其易于在ft^應(yīng)用禾Sm中讀寫數(shù)據(jù),這使XML很快成為數(shù) 據(jù)交換的唯一公共語(yǔ)言,就意,禾S^可以更容易的與Windows、 Mac 0S, Linux以及其他平臺(tái)下 產(chǎn)生的信息結(jié)合,然后可以很容易加載肌數(shù)據(jù)至訴辨中并解析,并以XML格式輸出結(jié)果。
使用Cfr泛型技術(shù)組建和控制數(shù)據(jù)庫(kù)訪問(wèn)的線程,泛型最常見(jiàn)的用途是創(chuàng)建集合類,本技術(shù)使 用了Dictionary〈(0f〈(TKey, TValue》》泛型類,Dictionary〈(0f〈(TKey, TValue》》泛型類 提供了從一組鍵到一組值的鵬寸。字典中的旨添加項(xiàng)都由一個(gè),其相關(guān)聯(lián)的鍵組威ffi3i旨檢索值的速度是非??斓?,,于0(D,這是因?yàn)镈ictionary〈(Of〈(TKey, TValue〉)〉)類是作 為一個(gè)哈希表來(lái)實(shí)現(xiàn)的。對(duì)于本發(fā)明類似倉(cāng)犍了一個(gè)小型內(nèi)存數(shù)據(jù)庫(kù)通過(guò)獲得優(yōu)先級(jí)別方式緩解 請(qǐng)求的沖突。
發(fā)明內(nèi)容
本發(fā)明針對(duì)目前分布式系統(tǒng)中中間辨妝術(shù)的不足采用XML解析M Cff泛型^Sl ODBC (Open Database Connectivity,開(kāi)皿據(jù)庫(kù)互連)技術(shù)等多項(xiàng)先進(jìn)技術(shù),提出一種可復(fù)用、易解析、高效 性、以及兼容性及擴(kuò)展性,的一種分布式中間件與數(shù)據(jù)庫(kù)的高效數(shù)據(jù)交換方法。
本發(fā)明的技術(shù)方案如下-
一種分布式中間件,由請(qǐng)求監(jiān)聽(tīng)模塊、請(qǐng)求接收模塊、結(jié)果錢模塊、數(shù)據(jù)緩存模塊和數(shù)據(jù)訪 問(wèn)模i杉且成,其特征在于 緩存模塊分另,請(qǐng)求接收模塊、結(jié)果發(fā)送模:^1 訪問(wèn)模塊相連 接;請(qǐng)求監(jiān)聽(tīng)模塊和請(qǐng)求接收模塊相連接;結(jié)果錢模塊和請(qǐng)求監(jiān)聽(tīng)模塊分別艦TCP/IP通信協(xié) 議與應(yīng)用,相連接,以實(shí)現(xiàn)信息通信目的;數(shù)據(jù)訪問(wèn)模塊通過(guò)ODBC技斜嫩據(jù)庫(kù)相連接,以實(shí) 現(xiàn)其和數(shù)據(jù)庫(kù)的信息傳送。
如上所述的一種分布式中間件與數(shù)據(jù)庫(kù)的,交互方法,步驟如下
1) 開(kāi)始
2) 皿、接收請(qǐng)求
中間件分客戶端和服務(wù)端兩部分,在服務(wù)端指定端口創(chuàng)建客戶端,數(shù)據(jù)庫(kù)操作請(qǐng)求監(jiān)聽(tīng)程 序,針對(duì)接收到客戶端請(qǐng)求信息創(chuàng)建其對(duì)應(yīng)的M處翻艮務(wù),網(wǎng)絡(luò)連接狀態(tài)的判定為系統(tǒng)Jli共基礎(chǔ) 數(shù)據(jù)通訊支持,數(shù)據(jù)處劉艮務(wù)對(duì)皿的請(qǐng)求信息依據(jù)數(shù)據(jù)庫(kù)請(qǐng)求編碼與解析技術(shù)進(jìn)行信息的校正, 如接收的請(qǐng)求信息有誤會(huì)回執(zhí)客戶端錯(cuò)誤信息提示,請(qǐng)求信息準(zhǔn)確完整則將解析信息^S數(shù)據(jù)庫(kù)信 息處劉艮務(wù);
3) 信息通訊
信息通訊是以Cft異步通信fe7^乍為基礎(chǔ),■ Ctt異步通信技術(shù)可以避免網(wǎng)絡(luò)通信中的阻塞現(xiàn)
象,中間件客戶端在首次運(yùn)行時(shí)會(huì)向服務(wù)端錢粒異步通信的連銜青求,連^i青求內(nèi)容包括客戶 端IP地址以皿訊信息接收和皿端口 ,月艮務(wù)端解析接收的連^i青求信息M套接字與客戶端建 立信息通訊鏈接;
4) 數(shù)據(jù)庫(kù)請(qǐng),碼與解析
在客戶端中定義字符串對(duì)象;將 庫(kù)請(qǐng)求信息以可擴(kuò)展標(biāo)記語(yǔ)言XML形式填充至該字符串, 依據(jù)可擴(kuò)展杏^B語(yǔ)言XML的語(yǔ)法規(guī)則, 庫(kù)請(qǐng)求信息以如下的格式進(jìn)行編碼 <CMD METH0D="數(shù)據(jù)庫(kù)i青求類型(SELECT、 DELETE、 UPDATE)"〉 數(shù)據(jù)庫(kù)請(qǐng)求信息內(nèi)容(結(jié)構(gòu)化査詢語(yǔ)言) </CMD>
此方式改變以往以幀格式進(jìn),彌信信息編解碼,簡(jiǎn)化了通訊信息內(nèi)容的帝啶的錢度,4頓 XML可擴(kuò)展標(biāo)記語(yǔ)言駄中的XralNode類方法讀取節(jié)點(diǎn)內(nèi)容,這樣大娥短編解離息時(shí)間,對(duì)接 收的信息進(jìn)行相應(yīng)語(yǔ)法規(guī)則的M即能判定接收信息請(qǐng)求的完整性;
5) 數(shù)據(jù)庫(kù)請(qǐng)求信息處理
接收客戶端皿的完 據(jù)庫(kù)請(qǐng)求,將接收的完整 庫(kù)請(qǐng)求信息依據(jù)請(qǐng)求時(shí)間的先后暫存入 繊緩存中,服務(wù)端艦ODBC開(kāi)放數(shù)據(jù)庫(kù)互連技術(shù)創(chuàng)建數(shù)據(jù)庫(kù)麟,^f昔助ODBC開(kāi)微據(jù)庫(kù)互連 技術(shù)中提供的OdbcCommand類ExecuteNonQuery方法,以O(shè)DBC開(kāi)放ic^庫(kù)互連技術(shù)為基礎(chǔ),使 用ExecuteNonQuery方法來(lái)執(zhí)行多個(gè)數(shù)據(jù)庫(kù)操作i夠并返回?cái)?shù)據(jù)庫(kù)請(qǐng)求信息處理結(jié)果,這樣大大提高了本服務(wù)端的數(shù)據(jù)庫(kù)請(qǐng)求信息的處理能力,根據(jù) 緩存中的 庫(kù)請(qǐng)求優(yōu)先級(jí)別進(jìn)行數(shù)據(jù)庫(kù) 相應(yīng)操作,避免了多請(qǐng)求訪問(wèn)數(shù)據(jù)庫(kù)造成的 庫(kù)訪問(wèn)效率的下降; 6)請(qǐng)求結(jié)果皿
將數(shù)據(jù)庫(kù)請(qǐng)求結(jié)果以亂方式進(jìn)行編碼,〈CMDTABLE^"表名"METH0D="請(qǐng)求類型" >執(zhí)行狀 態(tài)〈/CMD〉為請(qǐng)求結(jié)果信息開(kāi)始標(biāo)志,如果數(shù)據(jù)請(qǐng)求操作正常則以〈RES TABLE="表名"〉結(jié)果內(nèi)容 〈/RES〉形式進(jìn)行填充,通過(guò)創(chuàng)建與客戶端的套接字鏈接發(fā)超客戶端應(yīng)用禾歸。
上面所述的〈CMD〉是^"可擴(kuò)展^iB語(yǔ)言XML語(yǔ)法規(guī)則的文檔元素(document element),它 是該字符串中最外面的t碟即主+蔬。所有其他的豐碟必須包含在這個(gè)標(biāo)簽之內(nèi)來(lái)組成一個(gè)有效的 可擴(kuò)展硫語(yǔ)言文件。
METHOD為可擴(kuò)展^"E語(yǔ)言XML標(biāo)簽的屬性即CMD標(biāo)簽的屬性,在本發(fā)明中標(biāo)記了客戶端的請(qǐng) 求類型即 庫(kù)操作類型如SELECT、 INSERT、 UPDATE等。
數(shù)據(jù)庫(kù)請(qǐng)求信息內(nèi)容,依據(jù)結(jié)構(gòu)化gi旬語(yǔ)言(Structured Query Language)的語(yǔ)法規(guī)貝卿可滿 足本發(fā)明的要求。
如±^述的一種分布式中間件與數(shù)據(jù)庫(kù)的 交互方法,其服務(wù)端工作方法,步驟如下
1) 服務(wù)端工作開(kāi)始;
2) 監(jiān)聽(tīng)通訊端口;
3) 判斷是否監(jiān)聽(tīng)到請(qǐng)求;若是,貝l』進(jìn)行下一步,否則轉(zhuǎn)到步驟2)繼續(xù)監(jiān)聽(tīng);
4) 創(chuàng)離接;
5) 接魏求;
6) 判斷是否接受到請(qǐng)求,若是,貝雌行下一步,否則轉(zhuǎn)到步驟5);
7) 解碼;
8) 存入數(shù)據(jù)緩存器;
9) 讀取請(qǐng)求;
10) 判斷是否得到正確請(qǐng)求信息,若是,貝IJ進(jìn)行下一步,否則轉(zhuǎn)到步驟9);
11) 訪問(wèn) 庫(kù);
12) 獲取數(shù)據(jù)結(jié)果;
13) ,數(shù)據(jù)結(jié)果;
14) 判斷皿是否超時(shí),若是,則進(jìn)行下一步,否則轉(zhuǎn)到步驟17);
15) 丟棄數(shù)據(jù)包;
16) 寫入日志,轉(zhuǎn)到步驟13),重新皿數(shù)據(jù)結(jié)果;
17) 縱成功;
18) 判斷是否斷開(kāi)連接,若是,則斷開(kāi)連接,結(jié)束工作,否則轉(zhuǎn)到步驟5)。
利用XML (Extensible Markup Language)即可擴(kuò)展標(biāo)記語(yǔ)言作為自主研發(fā)的"通信信息編碼 與解析組件"的基礎(chǔ),XML可以實(shí)^F臺(tái)的,這樣大大加強(qiáng)了本系統(tǒng)的可朋性,同時(shí)ML是一 種簡(jiǎn)單的 存儲(chǔ)語(yǔ)言,{^一系列簡(jiǎn)單的標(biāo)記描述 ,而這些標(biāo)記可以用方便的方式Ml,使 用該S^大大提高了本系統(tǒng)M通信中編碼和解碼的效率同時(shí)能,現(xiàn)的檢査系^ffl信中存在的 數(shù)據(jù)通信錯(cuò)誤。
中間件的目的是通過(guò)為異質(zhì)計(jì)算環(huán)境中的服務(wù)和資源提供統(tǒng)一、 一致的觀察結(jié)果,簡(jiǎn)化 用戶界面。中間件在為同一平臺(tái)或不同平臺(tái)上使用不同開(kāi)發(fā)商產(chǎn)品的最終用戶或者開(kāi)發(fā)人員 創(chuàng)造了渾然一體的連通性。因此,確切的說(shuō),它是透明的,開(kāi)發(fā)人員和用戶看不到它。中間件能滿足大量應(yīng)用的需要運(yùn)行于多種硬件和操作系統(tǒng)平臺(tái)支持分布計(jì)算,提供跨網(wǎng) 絡(luò)、硬件和操作系統(tǒng)平臺(tái)的透明性的應(yīng)用或服務(wù)的交互、支持標(biāo)準(zhǔn)的協(xié)議、支持標(biāo)準(zhǔn)的接口。
由于標(biāo)準(zhǔn)接口對(duì)于可移植性和標(biāo)準(zhǔn)協(xié)議對(duì)于互操作性的重要'fe中間件已成力許多標(biāo)準(zhǔn) 化工作的主要部分。對(duì)于應(yīng)用軟件開(kāi)發(fā),中間件遠(yuǎn)比操作系統(tǒng)和網(wǎng)絡(luò)服務(wù)更為重要,中間件 提供的程序接口定義了一個(gè)相對(duì)穩(wěn)定的高層應(yīng)用環(huán)境,不管底層的計(jì)算機(jī)硬件和系統(tǒng)軟件怎 樣更新?lián)Q代,只要將中間件升級(jí)更新,并保持中間件對(duì)外的接口定義不變,應(yīng)用軟件幾乎不 需任何修改,從而保護(hù)了企業(yè)在應(yīng)用軟件開(kāi)發(fā)和維護(hù)中的重大投資。
具體功能分如下幾個(gè)部分詳細(xì)介紹
1. 信息接收和發(fā)送
本技術(shù)憑借成熟、穩(wěn)定的套接字技術(shù)開(kāi)發(fā)一個(gè)服務(wù)器-客戶端模型,開(kāi)發(fā)原理 服務(wù)器,使用套接字服務(wù)端監(jiān)聽(tīng)指定的端口 (端口號(hào)55555),等待客戶連接請(qǐng)求,客
戶連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。
客戶端,使用套接字對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請(qǐng)求, 一旦連接成
功,打開(kāi)會(huì)話;會(huì)話完成后,關(guān)閉套接字??蛻舳瞬恍枰付ù蜷_(kāi)的端口,通常臨時(shí)的、動(dòng)
態(tài)的分配一個(gè)端口。
套接字接口是TCP/IP網(wǎng)絡(luò)的應(yīng)用程序接口,套接字接口定義了許多函數(shù)或例程,程序 員可以用它們來(lái)開(kāi)發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。
2. 通信信息編碼與解析
本技術(shù)在通訊的信息編碼方面借鑒了簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)語(yǔ)言可擴(kuò)展標(biāo)記語(yǔ)言技術(shù),將信息
以可擴(kuò)展豐^ia語(yǔ)言數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的形式進(jìn)行編碼。可擴(kuò)展標(biāo)記語(yǔ)言是Internet環(huán)境中跨平臺(tái) 的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴(kuò)展標(biāo)記語(yǔ)言是一種簡(jiǎn)單 的數(shù)據(jù)存儲(chǔ)語(yǔ)言,使用一系列簡(jiǎn)單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖 然可擴(kuò)展標(biāo)記語(yǔ)言占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但可擴(kuò)展fei己語(yǔ)言極其簡(jiǎn)單易 于掌握和使用。根據(jù)可擴(kuò)展*射己語(yǔ)言語(yǔ)法規(guī)范,將應(yīng)用程序發(fā)送的請(qǐng)求以如下格式進(jìn)行定義 <TM #認(rèn),"狐釘",狐釘*尸層嵐,蕭</譜,
格式解釋
< CM >是文檔元素(document element),它是文件中最外面的標(biāo)簽(我們認(rèn)為元素 (element)是起始標(biāo)簽和結(jié)束標(biāo)簽之間的內(nèi)容)。所有其他的標(biāo)簽必須包含在這個(gè)標(biāo)簽之內(nèi) 來(lái)組成一個(gè)有效的可擴(kuò)展標(biāo)記語(yǔ)言文件。
Jffi7M Z 為XML文檔元素的屬性,在本發(fā)明中標(biāo)記了客戶端的請(qǐng)求類型,我們根據(jù)請(qǐng)求 的類型進(jìn)行定義為SELECT、 INSERT、 UPDATE等。
52Z^T *所6¥ 7M巡M4^為請(qǐng)求的內(nèi)容,根據(jù)應(yīng)用程序的請(qǐng)求進(jìn)行添加。
3. 請(qǐng)求信息數(shù)據(jù)緩存的處理
以數(shù)據(jù)庫(kù)為中心的分布式系統(tǒng)有其優(yōu)點(diǎn),其編程思路比較簡(jiǎn)單清晰,容易被人理解和掌 握。對(duì)于網(wǎng)路信息交互量不多的系統(tǒng),可以采用以數(shù)據(jù)庫(kù)為中心的系統(tǒng),同時(shí)可以通過(guò)數(shù)據(jù) 規(guī)劃合理地分配各計(jì)算機(jī)的任務(wù),使用一些編程技術(shù)來(lái)降低網(wǎng)路的信息流量,提高系統(tǒng)的性 能。例如在程序中應(yīng)盡量使用全局變量創(chuàng)建公用數(shù)據(jù)庫(kù)連接,避免每次不必要的數(shù)據(jù)連接重 建時(shí)間。但是如果系統(tǒng)較大、網(wǎng)路信息交互量較多或?qū)ο到y(tǒng)實(shí)時(shí)性和可擴(kuò)展性要求較高時(shí), 應(yīng)采用中間件數(shù)據(jù)通訊的設(shè)計(jì)方案。在以數(shù)據(jù)庫(kù)為中心的系統(tǒng)設(shè)計(jì)方案中,由于數(shù)據(jù)的請(qǐng)求 訪問(wèn)直接由數(shù)據(jù)庫(kù)來(lái)完成。如果網(wǎng)路有多個(gè)應(yīng)用程序都需要知道該數(shù)據(jù)的變化,則都必須多次數(shù)據(jù)庫(kù)訪問(wèn)才能實(shí)現(xiàn)。這樣就浪費(fèi)了許多網(wǎng)絡(luò)資源,容量造成瓶頸。在采用中間件通訊的 設(shè)計(jì)方案中,通過(guò)中間件通訊來(lái)解決網(wǎng)絡(luò)中各應(yīng)用系統(tǒng)間的數(shù)據(jù)交互與刷新問(wèn)題,其中對(duì)于 多應(yīng)用系統(tǒng)都需要的數(shù)據(jù)變化通過(guò)網(wǎng)絡(luò)廣播的方5t以定時(shí)和數(shù)據(jù)變化實(shí)時(shí)觸發(fā)傳送的機(jī)制 向所需系統(tǒng)通知該數(shù)據(jù)巳發(fā)生變化和具體的數(shù)值。因此,與以數(shù)據(jù)庫(kù)為中心的方案相比,這 種設(shè)計(jì)方案減少了因數(shù)據(jù)刷新所需的多次訪問(wèn)問(wèn)題,大大減少了數(shù)據(jù)流量,同時(shí)網(wǎng)絡(luò)傳輸還 可以增加數(shù)據(jù)正確性和合法性校驗(yàn),為操作者或系統(tǒng)管理員及時(shí)提供系統(tǒng)信息和出錯(cuò)信息, 便于系統(tǒng)故障診斷和系統(tǒng)調(diào)試。
可見(jiàn),原數(shù)據(jù)庫(kù)模塊對(duì)于不同的數(shù)據(jù)請(qǐng)求都要經(jīng)過(guò)主線程的處理,并且只有一處數(shù)據(jù) 緩存;新的數(shù)據(jù)庫(kù)模塊根據(jù)表格的數(shù)量會(huì)生成相應(yīng)的線程,充分利用了多線程的優(yōu)勢(shì),并有 多個(gè)數(shù)據(jù)緩存,這樣就避免了多線對(duì)內(nèi)存造成的讀寫錯(cuò)誤。
本駄棚了Dictionary〈(Of〈(TKey, TValue》》Ctt泛型類,Dictionary《OfX(TKey, TValue〉)》泛型類提供了從一組鍵到一組值的映射。字典中的^h添加項(xiàng)都由一個(gè),其相關(guān)聯(lián) 的鍵組成,艦鍵來(lái)檢索值的速度是非??斓模炗贠(l),這是因?yàn)镈ictionary〈(Of〈(TKey, TValue〉)〉)類是作為一個(gè)哈希表來(lái)實(shí)現(xiàn)的。在本系統(tǒng)中將應(yīng)用系,數(shù)據(jù)庫(kù)的操作請(qǐng)求填充至 Dictionary類中,根據(jù)請(qǐng)求的先后順賴犍相應(yīng)的優(yōu)先級(jí),由數(shù)據(jù)訪問(wèn)模塊獲得優(yōu)先級(jí)進(jìn)行數(shù)據(jù) 的處SX作。
本系統(tǒng)的駄特征是基于高級(jí)編程語(yǔ)言開(kāi)發(fā)以及當(dāng)ltr^fe進(jìn)的可擴(kuò)展^E語(yǔ)言技斜B動(dòng)態(tài)
鏈接庫(kù)技術(shù)。采用自主研發(fā)的"通信信息編碼與解析組件"實(shí)現(xiàn)高效、可靠的l^通訊。采用異步 通訊獄搭駭統(tǒng)分布式通信架稱實(shí)現(xiàn)服務(wù)端與客戶端的l^傳渝;利用高級(jí)編程語(yǔ)言高性能的 數(shù)據(jù)處理能力和自主研發(fā)"數(shù)據(jù)緩存組件",實(shí)現(xiàn)了通信信息的準(zhǔn)確、高效編解碼。利用安全自
庫(kù)訪問(wèn)技術(shù)實(shí)現(xiàn)了中間件與多種自庫(kù)之間的數(shù)據(jù)^s;利用i^緩存技術(shù)在數(shù)據(jù)庫(kù)中創(chuàng)建存儲(chǔ)數(shù)
據(jù)緩存。
綜J^f述,本技術(shù)是一種可復(fù)用、高效的繊交互中間件技術(shù),采用模塊化設(shè)計(jì),各模塊間即 相對(duì)3蚊又相互協(xié)作,充分發(fā)揮數(shù)據(jù)共享、資源^5l機(jī)制的特性,使設(shè)計(jì)更合理,更便于擴(kuò)展和維 護(hù)。同時(shí)結(jié)合高級(jí)編程語(yǔ)言財(cái)、異步通訊技術(shù)、可擴(kuò)展標(biāo)記語(yǔ)言駄、文件I/0接口駄等國(guó)際 先進(jìn)姊縣統(tǒng)功能更強(qiáng)大!具有性能高、兼容性好、擴(kuò)展性強(qiáng)辦丄
本系統(tǒng)的優(yōu)點(diǎn)是集成自主研發(fā)的"通信信息編碼與解析組件"以及"數(shù)據(jù)緩存組件"為系統(tǒng) 麟高效可靠的 通訊功能采用異步通訊財(cái)搭駭統(tǒng)分布式處理架構(gòu)實(shí)現(xiàn)服務(wù)端與客戶端 的l^傳輸,實(shí)現(xiàn)系統(tǒng)分布式;利用高級(jí)編程語(yǔ)言的高效、安全mig庫(kù)訪問(wèn)技術(shù)實(shí)現(xiàn)了中間件與多 種麵庫(kù)之間的娜妊;利用M緩存技術(shù)在數(shù)據(jù)庫(kù)中創(chuàng)建存儲(chǔ)數(shù)據(jù)緩存系^^用程序模塊化 設(shè)計(jì)^l^共享、資源敝的機(jī)制,使系統(tǒng)設(shè)計(jì)更合理。
圖l是本發(fā)明一種分布式中間件的結(jié)構(gòu)示意圖o
其中1、中間件,2、數(shù)據(jù)緩存模塊,3、結(jié)果;E^模塊,4、請(qǐng)求接收模塊,5、繊訪問(wèn)模 塊,6、請(qǐng)求監(jiān)聽(tīng)模塊,7、應(yīng)用辦,8、鵬庫(kù)。
圖2是本發(fā)明所述的一種分布式中間件與 庫(kù)的 ^5方法,示意圖。
其中9—14表示該:^法的M步驟。
圖3是本發(fā)明方法中服務(wù)端工作^T法的,圖。 其中15—34表示該方法的各個(gè)步驟。
具體實(shí)施例方式
8下面結(jié)合附圖與實(shí)施例對(duì)本實(shí)用新型作進(jìn)一步說(shuō)明,但不限于此。 實(shí)施例l:(硬件實(shí)施例)
如圖1所示,一種分布式中間件,由請(qǐng)求監(jiān)聽(tīng)模塊6、請(qǐng)求接收模塊4、結(jié)果皿模塊3、數(shù) 據(jù)緩存模塊2和數(shù)據(jù)訪問(wèn)模塊5組成,,征在于M緩存模塊2分另,請(qǐng)求接收模塊4、結(jié)果發(fā) 送模塊3及數(shù)據(jù)訪問(wèn)模塊5相連接;請(qǐng)求監(jiān)聽(tīng)模塊6和請(qǐng)求接收模塊4相連接;結(jié)果發(fā)送模塊3 和請(qǐng)求監(jiān)聽(tīng)模塊6分別通過(guò)TCP/IP通信協(xié)議與應(yīng)用,7相連接,以實(shí)現(xiàn)信息通信目的;數(shù)據(jù)訪 問(wèn)模±央5通過(guò)ODBC ^SI數(shù)據(jù)庫(kù)8相連接,以實(shí)現(xiàn)其和 庫(kù)8的信息傳送。
實(shí)施例2:(施實(shí)施例)
如圖2所示, 一種分布式中間件與數(shù)據(jù)庫(kù)的數(shù)據(jù)^S方法,步驟如下
9) 開(kāi)始
10) 縱、接收請(qǐng)求
中間件分客戶端和服務(wù)端兩部分,在服務(wù)端指定端口創(chuàng)建客戶端,數(shù)據(jù)庫(kù)操作請(qǐng)求監(jiān)聽(tīng)程 序,針對(duì)接收到客戶端請(qǐng)求信息創(chuàng)建其對(duì)應(yīng)的娜處測(cè)艮務(wù),網(wǎng)絡(luò)連接狀態(tài)的判定為系統(tǒng)^i乓基礎(chǔ) 數(shù)據(jù)通1歧持,數(shù)據(jù)處翻艮務(wù)對(duì)錢的請(qǐng)求信息依據(jù)數(shù)據(jù)庫(kù)請(qǐng)求編碼與解析駄進(jìn)行信息的校正, 如接收的請(qǐng)求信息有誤會(huì)回執(zhí)客戶端錯(cuò)誤信息提示,請(qǐng)求信息準(zhǔn)確完整則將解析信息交至數(shù)據(jù)庫(kù)信 息處SI艮務(wù);
11) 信息通訊
信息通訊是以Ctt異步通信^作為基礎(chǔ),使用Clt異步通信技術(shù)可以避免網(wǎng)絡(luò)通信中的阻塞現(xiàn)
象,中間件客戶端在首次運(yùn)行時(shí)會(huì)向服務(wù)端皿^:異步通信的連gi青求,連^i青求內(nèi)容包括客戶 端ip地址以皿訊信息接收和皿端口,月艮務(wù)端解析接收的連銜青求信息M;套接字與客戶端建
立信息通訊鏈接;
12) 庫(kù)請(qǐng)求編碼與解析
在客戶端中定義字符串對(duì)象;將M庫(kù)請(qǐng)求信息以可擴(kuò)展標(biāo)記語(yǔ)言XML形式填充至該字符串, 依據(jù)可擴(kuò)展fei己語(yǔ)言肌的語(yǔ)法規(guī)則,數(shù)據(jù)庫(kù)請(qǐng)求信息以如下的格式進(jìn)行編碼-〈CMD METH0D= "l^庫(kù)i青求類型(SELECT、 DELETE、 UPDATE)" > 數(shù)據(jù)庫(kù)請(qǐng)求信息內(nèi)容(結(jié)構(gòu)化査詢語(yǔ)言) 〈細(xì)〉
此方式改變以往以幀格式進(jìn)fi^a信信息編解碼,簡(jiǎn)化了通訊信息內(nèi)容的制定的復(fù)雜度,4頓
XML可擴(kuò)展^"E語(yǔ)言絲中的XmlNode類方法讀取節(jié)點(diǎn)內(nèi)容,這樣大誠(chéng)短編解碼信息時(shí)間,對(duì)接 收的信,Ut行相應(yīng)語(yǔ)法規(guī)則的m即可判定接收信息請(qǐng)求的,性;
13) 翻庫(kù)請(qǐng)求信息處理
接收客戶端皿的完 據(jù)庫(kù)請(qǐng)求,,收的完整數(shù)據(jù)庫(kù)請(qǐng)求信息依據(jù)請(qǐng)求時(shí)間的先后暫存入
數(shù)據(jù)緩存中,月艮務(wù)端M:odbc開(kāi)放i^庫(kù)互繊術(shù)創(chuàng)建繊庫(kù)鏈接,^ff昔助odbc開(kāi)Mt^庫(kù)互連
技術(shù)中,的OdbcCoramand類ExecuteNonQuery方法,以O(shè)DBC開(kāi)M^庫(kù)互連技術(shù)為基礎(chǔ),使 用ExecuteNonQuery方法來(lái)執(zhí)行多個(gè)數(shù)據(jù)庫(kù)操作i詢并返回?cái)?shù)據(jù)庫(kù)請(qǐng)求信息處理結(jié)果,這樣大大 提高了本服務(wù)端的數(shù)據(jù)庫(kù)請(qǐng)求信息的處理能力,根據(jù)數(shù)據(jù)緩存中的數(shù)據(jù)庫(kù)請(qǐng)求優(yōu)先級(jí)別進(jìn)行數(shù)據(jù)庫(kù) 相應(yīng)操作,避免了多請(qǐng)求訪問(wèn)數(shù)據(jù)庫(kù)造成的M庫(kù)訪問(wèn)效率的下降;
14) 請(qǐng)求結(jié)果發(fā)送
將數(shù)據(jù)庫(kù)請(qǐng)求結(jié)果以XML方式進(jìn)行編碼,<CM)TABLE="表名"METH0D="請(qǐng)求類型" >執(zhí)行狀 態(tài)〈/CMD〉為請(qǐng)求結(jié)果信息開(kāi)始標(biāo)志,如果M請(qǐng)求操作正常則以〈RES TABLE="表名"〉結(jié)果內(nèi)容〈/RES〉形式進(jìn)行填充,通過(guò)創(chuàng)建與客戶端的套接字麟総至客戶端應(yīng)用辦。
如圖3所示, 一種分布式中間件與 庫(kù)的數(shù)據(jù)^§1方法,其服務(wù)端工作方法,步驟如下: 服務(wù)端工作開(kāi)始; 監(jiān)聽(tīng)通鵬口;
判斷是否監(jiān)聽(tīng)至隨求;若是,貝IJ進(jìn)行下一步,否則轉(zhuǎn)到步驟16)繼續(xù)監(jiān)聽(tīng); 創(chuàng)建連接; 接受請(qǐng)求;
判斷是否接受到請(qǐng)求,若是,則進(jìn)行下一步,否則轉(zhuǎn)到步驟19);
解碼;
存入數(shù)據(jù)緩存器; 讀取請(qǐng)求;
判斷是否得到正確請(qǐng)求信息,若是,則進(jìn)行下一步,否則轉(zhuǎn)到步驟23); 訪問(wèn)數(shù)據(jù)庫(kù); 獲取l^結(jié)果;
判斷錢是否超時(shí),若是,則進(jìn)行下一步,否則轉(zhuǎn)到步驟30); 錢成功; 丟棄,包;
寫入日志,轉(zhuǎn)到步驟27),重新縱繊結(jié)果; 判斷是否斷開(kāi)連接,若是,則進(jìn)行下一步,否則轉(zhuǎn)到步驟19); 斷開(kāi)連接; 結(jié)束工作。
權(quán)利要求
1、一種分布式中間件,由請(qǐng)求監(jiān)聽(tīng)模塊、請(qǐng)求接收模塊、結(jié)果發(fā)送模塊、數(shù)據(jù)緩存模塊和數(shù)據(jù)訪問(wèn)模塊組成 id="icf0001" file="A2009100184870002C1.tif" wi="1" he="2" top= "35" left = "47" img-content="drawing" img-format="tif" orientation="portrait" inline="yes"/>其特征在于數(shù)據(jù)緩存模塊分別和請(qǐng)求接收模塊、結(jié)果發(fā)送模塊及數(shù)據(jù)訪問(wèn)模塊相連接;請(qǐng)求監(jiān)聽(tīng)模塊和請(qǐng)求接收模塊相連接;結(jié)果發(fā)送模塊和請(qǐng)求監(jiān)聽(tīng)模塊分別通過(guò)TCP/IP通信協(xié)議與應(yīng)用程序相連接,以實(shí)現(xiàn)信息通信目的;數(shù)據(jù)訪問(wèn)模塊通過(guò)ODBC技術(shù)和數(shù)據(jù)庫(kù)相連接,以實(shí)現(xiàn)其和數(shù)據(jù)庫(kù)的信息傳送。
2、 如權(quán)利要求1所述的一種分布式中間件與數(shù)據(jù)庫(kù)的數(shù)據(jù)^S方法,步驟如下1) 開(kāi)始2) 發(fā)送、接收請(qǐng)求所述中間件分客戶端和服務(wù)端兩部分,在服務(wù)端指定端口創(chuàng)建客戶端総 庫(kù)操作請(qǐng)求監(jiān)聽(tīng) 禾M^,針對(duì)接收到客戶端請(qǐng)求信息創(chuàng)建其對(duì)應(yīng)的l^處理服務(wù),網(wǎng)絡(luò)連接狀態(tài)的判定為系統(tǒng)Jli乓基 礎(chǔ)數(shù)據(jù)通m^:持,數(shù)據(jù)處翻艮務(wù)對(duì)發(fā)送的請(qǐng)求信息依據(jù)本發(fā)明的數(shù)據(jù)庫(kù)請(qǐng)求編碼與解析^進(jìn)行 信息的校正,如接收的請(qǐng)求信息有誤會(huì)回皿戶端錯(cuò)誤信息提示,請(qǐng)求信息準(zhǔn)確完整則將解析信息 趕數(shù)據(jù)庫(kù)信息處劉艮務(wù);3) 信息通訊信息通訊是以Cft異步通信K^作為基礎(chǔ),使用Ctt異步通信技術(shù)可以避免網(wǎng)絡(luò)通信中的阻塞現(xiàn) 象,本中間件客戶端在首次運(yùn)行時(shí)會(huì)向服務(wù)端縱粒異步通信的連銜青求,連^i青求內(nèi)容包括客戶端ip地址以皿訊信息接收和皿端口 ,服務(wù)端i i斤接收的連銜青求信息通過(guò)套接字與客戶端粒信息通訊鏈接;4) 數(shù)據(jù)庫(kù)請(qǐng)求編碼與解析在客戶端中定義字符串對(duì)象;將數(shù)據(jù)庫(kù)請(qǐng)求信息以可擴(kuò)展l^i己語(yǔ)言XML形式±真充至該字符串, 依據(jù)可擴(kuò)展標(biāo)記語(yǔ)言XML的語(yǔ)'M則,數(shù)據(jù)庫(kù)請(qǐng)求信息以如下的格式進(jìn)fi1S碼 〈CMD METH0D="娜庫(kù)i青求類型(SELECT、 DE匿、UPDATE)"〉 數(shù)據(jù)庫(kù)請(qǐng)求信息內(nèi)容<細(xì)〉■ XML可擴(kuò)展fei己語(yǔ)言技術(shù)中的XmlNode M法讀取節(jié)點(diǎn)內(nèi)容,對(duì)接收的信息進(jìn)行相應(yīng)語(yǔ)法 規(guī)貝啲艦即能判定接收信息請(qǐng)求的完整性;5) 數(shù)據(jù)庫(kù)請(qǐng)求信息處理接收客戶端錢的完整數(shù)據(jù)庫(kù)請(qǐng)求,機(jī)收的完整艦庫(kù)請(qǐng)求信息依據(jù)請(qǐng)求時(shí)間的先后暫存入 數(shù)據(jù)緩存中,服務(wù)端艦ODBC開(kāi)放數(shù)據(jù)庫(kù)互連技術(shù)創(chuàng)建數(shù)據(jù)庫(kù)驗(yàn),荊昔助ODBC開(kāi)臓據(jù)庫(kù)互連 技術(shù)中提供的OdbcCommand類ExecuteNonQuery方法,以O(shè)DBC開(kāi)織據(jù)庫(kù)互連技術(shù)為基礎(chǔ),使 用ExecuteNonQuery矛絲執(zhí)行多個(gè)數(shù)據(jù)庫(kù)操作駒并返回?cái)?shù)據(jù)庫(kù)請(qǐng)求信息處理結(jié)果,根據(jù)娜 緩存中的 庫(kù)請(qǐng)求優(yōu)先級(jí)別進(jìn)行 庫(kù)相應(yīng)操作;6) 請(qǐng)求結(jié)果錢將繊庫(kù)請(qǐng)求結(jié)果以肌方式進(jìn)行編碼,〈CMDTABLE="表名"METH0D="請(qǐng)求類型"〉執(zhí)行狀 態(tài)〈/CMD〉為請(qǐng)求結(jié)果信息開(kāi)始標(biāo)志,如果數(shù)據(jù)請(qǐng)求操作正常則以〈RES TABLE="表名"〉結(jié)果內(nèi)容 〈/RES〉形式進(jìn)行填充,艦創(chuàng)建與客戶端的套接雑接総至客戶端應(yīng)用辦。
3、 如權(quán)利要求1所述的一種分布式中間件與數(shù)據(jù)庫(kù)的im交互方法,其服務(wù)端工作方法,步 驟如下1) 服務(wù)端工作開(kāi)始;2) 監(jiān)聽(tīng)通訊端口;3) 判斷是否監(jiān)聽(tīng)到請(qǐng)求;若是,貝腿行下一步,否則轉(zhuǎn)到步驟2)繼續(xù)監(jiān)聽(tīng);4) 創(chuàng)難接;5) 接魏求;6) 判斷是否接受到請(qǐng)求,若是,貝IJ進(jìn)行下一步,否則轉(zhuǎn)到步驟5);7) 解碼;8) 存入繊緩存器;9) 讀取請(qǐng)求;10) 判斷是否得到正確請(qǐng)求信息,若是,貝U進(jìn)行下一步,否則轉(zhuǎn)到步驟9);11) 訪問(wèn)數(shù)據(jù)庫(kù);12) 獲取數(shù)據(jù)結(jié)果;13) ,數(shù)據(jù)結(jié)果;14) 判斷發(fā)送是否超時(shí),若是,則進(jìn)行下一步,否則轉(zhuǎn)到步驟17);15) 丟棄 包;16) 寫入日志,轉(zhuǎn)到步驟13),重新皿數(shù)據(jù)結(jié)果;17) 錢成功;18) 判斷是否斷開(kāi)連接,若是,則斷開(kāi)連接,結(jié)束工作;否則轉(zhuǎn)到步驟5)。
全文摘要
本發(fā)明涉及一種分布式中間件與數(shù)據(jù)庫(kù)的數(shù)據(jù)交互方法,屬于分布式系統(tǒng)中間件技術(shù)領(lǐng)域。其中分布式中間件由請(qǐng)求監(jiān)聽(tīng)模塊、請(qǐng)求接收模塊、結(jié)果發(fā)送模塊、數(shù)據(jù)緩存模塊和數(shù)據(jù)訪問(wèn)模塊組成,其特征在于數(shù)據(jù)緩存模塊分別和請(qǐng)求接收模塊、結(jié)果發(fā)送模塊及數(shù)據(jù)訪問(wèn)模塊相連接;請(qǐng)求監(jiān)聽(tīng)模塊和請(qǐng)求接收模塊相連接;結(jié)果發(fā)送模塊和請(qǐng)求監(jiān)聽(tīng)模塊分別通過(guò)TCP/IP通信協(xié)議與應(yīng)用程序相連接,以實(shí)現(xiàn)信息通信目的;數(shù)據(jù)訪問(wèn)模塊通過(guò)ODBC技術(shù)和數(shù)據(jù)庫(kù)相連接,以實(shí)現(xiàn)其和數(shù)據(jù)庫(kù)的信息傳送。本發(fā)明方法提出了一種可復(fù)用、易解析、高效性、以及兼容性及擴(kuò)展性較好的一種分布式中間件與數(shù)據(jù)庫(kù)的高效數(shù)據(jù)交換方法。
文檔編號(hào)G06F17/30GK101661494SQ20091001848
公開(kāi)日2010年3月3日 申請(qǐng)日期2009年9月29日 優(yōu)先權(quán)日2009年9月29日
發(fā)明者于海忠, 強(qiáng) 劉, 帥 孟, 克 李, 攀 李, 森 李, 恒 潘, 博 王, 冰 趙, 濱 齊 申請(qǐng)人:萊蕪鋼鐵集團(tuán)有限公司