基于ORBIX的分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
基于ORBIX的分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
基于ORBIX的分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于ORBIX的分布式數(shù)據(jù)庫系統(tǒng)的設(shè)計與實現(xiàn)

摘要:本文給出了基于CORBA的ORBIX分布式數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)。在此基礎(chǔ)上,就使用ORBIX實現(xiàn)分布式數(shù)據(jù)庫系統(tǒng)的幾個關(guān)鍵技術(shù)即分布式事務(wù)處理、交易服務(wù)、會話管理等進行了研究。關(guān)鍵詞:CORBA;ORBIX;分布式數(shù)據(jù)庫;資源管理器;XA接口ABSTRACT:TheORBIXdistributeddatabasesystemarchitectureisgiveninthisthesis.Onthisbasis,Severalkeytechnologysuchasdistributedtransactionprocessing、hedevelopmentofdistributeddatabasesystemareresearched.KeyWords:CORBA;ORBIX;DistributedDatabaseSystem;Resourcemanager;XAInterface物理上分散而邏輯上有集中是分布式數(shù)據(jù)庫系統(tǒng)(DDBS)的最顯著的特點。DDBS的實現(xiàn)實際上就是將分布在不同地理位置上的集中式數(shù)據(jù)庫系統(tǒng)通過相應(yīng)的軟件連接起來構(gòu)成邏輯上統(tǒng)一的數(shù)據(jù)庫系統(tǒng)。而對于任何節(jié)點用戶來說使用DDBS就好象在使用一個集中式數(shù)據(jù)庫。CORBA規(guī)范是目前最為流行的應(yīng)用最廣的分布式對象技術(shù)。CORBA的目的是定義一套協(xié)議,符合這個協(xié)議的對象可以互相交互,不論它們是用什么樣的語言寫的,不論它們運行于什么樣的機器和操作系統(tǒng)。從而簡化了簡化本地與遠地對象間的通信,使之以透明的方式實現(xiàn)互連、互通與互操作,免去繁瑣易于出錯的底層工作,使大型分布軟件開發(fā)工作相對地提高速度并增加其可靠性[1]。2相關(guān)技術(shù)在分布式數(shù)據(jù)庫應(yīng)用的設(shè)計過程中需要解決分布存儲、分布式查詢處理、邏輯互聯(lián)、網(wǎng)絡(luò)信息傳輸?shù)葐栴},其復(fù)雜性導(dǎo)致軟件開發(fā)成本高、開發(fā)周期長。所以在開發(fā)過程中若能充分利用現(xiàn)有的分布式計算技術(shù),將極大提高分布式數(shù)據(jù)庫的開發(fā)效率[5]。(1)CORBA的主要內(nèi)容包括:IDL接口定義語言、ORB核心、OA對象適配器、IDL樁、IDL構(gòu)架、DII動態(tài)調(diào)用接口、DSI動態(tài)程序構(gòu)架接口、GIOP協(xié)議[1]。(2)Orbix是IONA公司研制的基于庫的CORBA規(guī)范實現(xiàn),支持Windows、OS/2、各種UNIX等20余種操作平臺。Orbix是建立在IONA的ART(AdaptiveRuntimeTechnology)技術(shù)之上的。ART高效的模塊化結(jié)構(gòu)允許在運行過程中添加新的功能模塊,只是通過改變配置的設(shè)置就可以完成。這樣大大的縮減了開發(fā)時間[2]。3基于ORBIX分布式數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)如圖1為基于Orbix的分布是系統(tǒng)結(jié)構(gòu)。其中每個客戶端Orbix對一個客戶應(yīng)用程序,每個服務(wù)器端Orbix對應(yīng)一個服務(wù)器應(yīng)用程序。使用XA接口,使全局事務(wù)的提交是由交易服務(wù)控制,應(yīng)用程序只需通知交易服務(wù)提交或回滾事務(wù),就可以控制整個事務(wù)(可能涉及多個異地的數(shù)據(jù)庫)的全部提交或回滾,應(yīng)用程序完全不用考慮沖正邏輯。XA協(xié)議屬于X/OPENDTP(DistributedTransactionProcessing)模型中的一部分,是中間件產(chǎn)品與數(shù)據(jù)庫之間的標準協(xié)議。采用ADO作為數(shù)據(jù)庫連接工具,從而簡化了數(shù)據(jù)庫訪問的開發(fā)過程,數(shù)據(jù)訪問更快捷,支持當前流行的各種數(shù)據(jù)庫格式,有利于使用當前已有的數(shù)據(jù)資源。4ORBIX分布式數(shù)據(jù)庫系統(tǒng)實現(xiàn)4.1分布式事務(wù)處理事務(wù)指一個程序或程序段,在一個或多個資源如數(shù)據(jù)庫或文件上為完成某些功能的執(zhí)行過程的集合。為了支持面向?qū)ο?、分布式、事?wù)處理應(yīng)用,實現(xiàn)了(1)對象事務(wù)管理器。(2)X/OpenXA接口。(3)兩階段提交(2PC)[4]協(xié)議。4.1.1分布事務(wù)管理器數(shù)據(jù)庫,支持本地事務(wù)。當一個應(yīng)用需要兩個或多個資源管理器參與同一事務(wù)時,某第三方必須提供必要的協(xié)調(diào)以保證分布式事務(wù)的ACID屬性。應(yīng)用程序使用事務(wù)管理器創(chuàng)建事務(wù)。處理期間訪問的每個資源管理器都是一個事務(wù)的參與者。因而,當應(yīng)用程序完成事務(wù)時,要么一個提交請求,要么一個回滾請求,事務(wù)管理器與每個資源管理器聯(lián)絡(luò)。4.1.2OTS和X/OpenXA接口接口功能:提供管理事務(wù)劃分(創(chuàng)建和完成)的接口,將事務(wù)信息傳播給事務(wù)參與者和接口,允許應(yīng)用參與事務(wù)。X/OpenXA接口用于數(shù)據(jù)庫的集成,以形成數(shù)據(jù)庫的邏輯連接。如圖2所示為客戶、應(yīng)用、OTS及資源管理之間互操作獲得ACID屬性的過程。包括以下步驟:(1)客戶與OTS鏈接并創(chuàng)建一個事務(wù)。(2)客戶在事務(wù)環(huán)境中對應(yīng)用作出調(diào)用并更新一些數(shù)據(jù)。(3)應(yīng)用程序檢測到數(shù)據(jù)正在被更新并創(chuàng)建一個資源對象,向事務(wù)注冊資源對象。(4)客戶通過與OTS實現(xiàn)聯(lián)系,試圖提交事務(wù)。(5)事務(wù)開始提交協(xié)議。選擇哪種協(xié)議(1PC或2PC),依據(jù)向事務(wù)注冊資源對象數(shù)量及OTS是否支持1PC優(yōu)化而定。(6)假定使用了2PC協(xié)議,OTS發(fā)送一個準備信息到資源。資源存貯足夠的信息以防萬一失敗(例如,通過將改變寫入一個日志文件)。資源對象表決提交事務(wù)。(7)OTS收集所有資源對象的表決并決定事務(wù)的結(jié)果。將決定發(fā)送到所有的注冊資源對象。(8)資源對象根據(jù)收到的提交或回滾消息作出必要的改變并將決定保存到日志中。(9)OTS返回結(jié)果給客戶。4.2交易服務(wù)交易服務(wù)提供對象的位置和發(fā)現(xiàn)的設(shè)施。與CORBA命名服務(wù)按名字定位對象不同,對象在交易服務(wù)中是沒有名字的。服務(wù)器根據(jù)對象所提供的服務(wù)類型在交易服務(wù)中廣告該對象。客戶通過查問交易服務(wù)定位感興趣的對象,以查找所有提供特殊服務(wù)的對象??蛻裟軌蜻M一步限制只搜索那些具有特殊特性的對象。CORBA交易服務(wù)是允許注冊具有功能性描述對象的一個交易服務(wù)。該服務(wù)通過使服務(wù)更易定位極大地增加了分布式系統(tǒng)的可伸縮性。一個交易包含許多描述服務(wù)的服務(wù)類型。服務(wù)器輸出一個提議給交易服務(wù),包括其中一個對象對象引用和由服務(wù)類型定義的屬性值??蛻艟湍馨凑者@些屬性使用稱為約束(constraint)的過濾器查詢交易服務(wù)。交易者為客戶返回一個服務(wù)提議。客戶就能使用提議中的對象引用在服務(wù)器上調(diào)用。交易服務(wù)是構(gòu)造有效分布式應(yīng)用的工具。用屬性注釋服務(wù)提議和允許根據(jù)這些屬性使用約束過濾提議的優(yōu)點使客戶可以選擇提議而不會導(dǎo)致每個對象上調(diào)用操作的管理費用。4.2.1服務(wù)類型(1)服務(wù)類型定義服務(wù)類型是交易服務(wù)的一般性描述。包括:①類型名:唯一地標識服務(wù)類型。②接口類型:定義IDL接口,必須與廣告的對象類型相一致。接口類型描述廣告的服務(wù)IDL簽名。接口類型是一個字符串其格式因該是全局名或是一個如上所述服務(wù)類型名的接口倉庫標示符。當輸出一個新的服務(wù)時,交易器可使用接口倉庫確定廣告的對象與接口類型定義的接口一致。一個對象與一個接口一致如果他實現(xiàn)該接口,或它實現(xiàn)該接口的子類。③屬性類型:屬性類型的集合定義服務(wù)提供者的屬性。屬性類型的定義由名字,值類型和方式組成。值類型是CORBA::TypeCode,模式表示屬性是強制的,還是只讀的。強制屬性不能刪除,只讀屬性能被刪除。④超類型能夠從其它服務(wù)類型繼承過來,封裝服務(wù)類型共有的行為和特性。(2)服務(wù)提供者服務(wù)提供者是服務(wù)類型的實例。服務(wù)提供者特性:①服務(wù)類型名使提供者和某一服務(wù)類型關(guān)聯(lián)。②對象引用是一個指向為客戶提供服務(wù)的對象指針。③屬性集合描述該服務(wù)提供者,并且屬性與服務(wù)類型定義的屬性類型一致。交易器使用指定的服務(wù)類型定義在新的提供者上執(zhí)行幾個確認步驟:①輸出者為所有的mandatoryproperty提供值(包括所有從其超類型繼承過來的服務(wù)類型)②對象必須與服務(wù)類型定義的接口類型一致。③所有屬性的值類型必須與服務(wù)類型定義的值類型匹配。(4)交易服務(wù)組成交易器依據(jù)它所支持的接口具有不同的功能。其接口有Lookup、Register、Admin、Link、Proxy。①最簡單的交易器是Querytrader,只支持Lookup接口。②簡單的交易器不僅支持Lookup接口,而且支持具有Register接口的提供者的輸出。③獨立的交易者支持簡單交易器接口,又支持使用Admin接口的交易器的配置管理。④代理交易器支持獨立交易器接口也支持proxy接口。代理交易器本質(zhì)上為延遲的提供者賦值輸出lookup接口,可用于封裝遺留系統(tǒng)或作為一種服務(wù)提供者工廠。⑤連接交易器支持獨立交易器,使用Link接口支持交易器同盟。⑥full-service交易器組合所有的功能接口。4.2.2配置和運行交易服務(wù)(1)配置配置和運行交易服務(wù)有幾個必須的預(yù)備步驟。操作的一般次序如下:①確定在那臺主機上運行主交易服務(wù),那臺主機運行從交易服務(wù)。②確定主,次端口號,復(fù)制器將偵聽。③將主機和端口號信息輸入到配置中。④配置交易服務(wù)以復(fù)制或非復(fù)制的方式運行。⑤在“預(yù)備”模式運行交易服務(wù)以獲得使客戶能夠與服務(wù)交互的初始引用。⑥將第4步獲得的每個引用加到配置數(shù)據(jù)庫中。⑦啟動主交易服務(wù)及從交易服務(wù)(2)運行交易服務(wù)如圖3所示為典型的客戶與服務(wù)器使用交易器相互交互過程:①一個提供者服務(wù)器為交易器增加一個服務(wù)類型(Printer)。Printer類型描述辦公室打印機具有的屬性。服務(wù)類型名與IDL接口名不同。②打印機服務(wù)器創(chuàng)建一個printer_if對象。它輸出該對象的對象引用到交易服務(wù)作為類型Printer的一個提供者。正常情況下,等待請求到來。③客戶過程為一個Printer提供者查詢交易服務(wù)。④然后客戶過程使用在提供者中獲得的對象引用調(diào)用打印機服務(wù)器。(3)交易服務(wù)編程與交易器交互的三個主要步驟:①使用提供者服務(wù)器增加一個服務(wù)類型。如果交易服務(wù)內(nèi)相應(yīng)的服務(wù)提供者類型不存在,則創(chuàng)建它②使用打印機服務(wù)器注冊一個服務(wù)提供者:例如,創(chuàng)建一個對象,一個IDL接口PrintServer的實例在類型Printer的服務(wù)提供者內(nèi),向交易服務(wù)登記對象引用。服務(wù)器就可正常接受對象調(diào)用。③使用客戶獲得一個服務(wù)提供者。查詢交易服務(wù)恢復(fù)一個服務(wù)提供者;使用在服務(wù)提供者中指定的對象引用調(diào)用服務(wù)器上的對象。4.2.3交易服務(wù)實例從圖3交易器包含的提供者集合能夠獲得多么大量的數(shù)據(jù)。此外,交易器能夠連接起來(聯(lián)合)為服務(wù)提供者相互搜索。這意味著,一個查詢需要控制在合理的時間內(nèi)完成搜索。查詢也需要控制返回的數(shù)據(jù)量。查詢以服務(wù)類型名開始。通過使用在一個或多個服務(wù)屬性上使用一個約束限制搜索適當提供者。也可以指定一些限制因素,包括返回的提供者數(shù)量,優(yōu)先排序,實際返回的屬性值。交易服務(wù)如何使用這些因素處理一個查詢,產(chǎn)生一序列所要的服務(wù)提供者。當交易服務(wù)處理一個查詢時,縮小在所有相關(guān)連的交易器中所有的潛在提供者集合,通過它收集一序列提供者在一起。交易服務(wù)使用查詢輸入確定如下:①服務(wù)名確定一個提供者是否是適當?shù)姆?wù)類型。②使用屬性約束確定提供著是否與客戶指定的標準匹配。③優(yōu)先順序確定提供者在序列中的位置。④使用所要的屬性確定返回哪個提供者的屬性值。4.3會話管理為了清除只有那個客戶使用的資源,分布式系統(tǒng)需要是知道客戶過程何時結(jié)束。在服務(wù)器方,基于會話的應(yīng)用分配資源滿足客戶請求。為了防止服務(wù)器膨脹,必須探測與服務(wù)器有關(guān)的客戶何時完成。(1)租賃框架:租賃插件是Orbix的一個擴展特色,通過探測使用服務(wù)器的客戶何時停止管理服務(wù)器端。使用租賃框架來完成。當一個客戶啟動時,它能獲得某一個服務(wù)器的一個租約,周期性的更新。當客戶結(jié)束,它自動釋放租約。如果客戶崩潰,服務(wù)器稍后會檢測到租約過期。在這種方式中,得體的和不得體的客戶過程結(jié)束都能被檢測到。(2)服務(wù)器端,租賃框架操作:(1)當一個服務(wù)器啟動,它自動裝載租賃插件。(2)初始化期間,服務(wù)器通告租賃,在命名服務(wù)中導(dǎo)致一個LeaseCallback對象。(3)每當服務(wù)器輸出對象引用(IORs),插件自動地以CORBA方式在IOR中增加租賃信息。(3)客戶端,租賃框架操作:(1)當客戶端啟動時,它自動裝載租賃插件。(2)插件根據(jù)包含租賃細節(jié)的IOR檢測客戶將要調(diào)用的對象。插件發(fā)起與目標服務(wù)器會話獲得一個租賃。(3)插件自動地更新需要的租賃。(4)有關(guān)客戶端關(guān)閉:如果客戶端正常關(guān)閉,插件自動地釋放租賃。如果客端崩潰,服務(wù)器端插件稍后就知道客戶最近沒有更新的租賃。租賃過期,允許服務(wù)器適當?shù)厍宄?。?)客戶端使用租賃插件客戶插件在其生命周期中定期調(diào)用命名服務(wù)。因此,在運行租賃客戶之前,Orbix域應(yīng)具有一個適當配置的定位器,激活程序,及命名服務(wù)準備。使用租賃框架的客戶部署需要改變所要做的事情只是它的配置。特別是,插件必須在ORB插件列表中增加插件,并被配置參與綁定。(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論