摘要:給出了一個訪問網絡數據庫的移動Agent的系統,該系統建立在ECP協議和移動Agent基礎上,用純JAVA代碼實現,利用ECP在提高通信效率的情況下訪問網絡分布式數據庫。
關鍵詞:ECP;Aglet;Mobile Agent
中圖法分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2008)22-595-02
Accessing Distributed Database on Internet Based on An Mobile Agent System
GAO Jing-yu
(School of Information Engineering,Wuxi Institute Commerce,Wuxi 214153,China)
Abstract:This paper gives a mobile agent system which is applied to access distributed databases on internet.The system is designed on java codes,using mobile agents and a Expanded Commit Protocol (ECP) to execute distributed transactions on different sites on internet.The ECP can greatly increase the efficiency of communication.
Key words: ECP; Aglet; Mobile Agent
1 引言
在網絡中,數據庫訪問的過程一般如下:客戶端發送請求到服務器,服務器接受請求并進行處理,再把結果返回給客戶端。隨著客戶端和請求的增加,這種過程很可能引起網絡和服務器阻塞。在這里,我們引進一種移動AGENT[1-2]模式。移動AGENT是一個程序實體,具有自治性、協作性和移動性。由于關于移動AGENT的定義在許多文章中已有描述,在這里我們不再贅述。
移動AGENT模式是利用移動AGENT的各種特性,滿足客戶端對服務器的請求和服務器對客戶端的服務。移動AGENT有以下優點:1)當一個移動AGENT漫游網絡時,不要求網絡是連接的,即可以斷開,僅當傳送AGENT和AGENT之間進行通信時,才要求網絡連接;2)移動AGENT能自動地選擇它的下一個站點,也就是,當它需要的站點發生變化,例如關閉,它可以自動找到另一個適合它的站點;3)移動AGENT能夠攜帶客戶端的任務遷移到所要去的站點并在本地執行,這時,網絡是可以斷開的。本篇文章將介紹一個基于移動AGENT的系統來訪問網絡中的分布式數據庫系統。
2 系統結構
2.1 The Aglet API
為實現AGENT系統的功能,我們采用JDK(java 開發工具包)和IBM Aglet System Development Kits(ASDK, Aglet 系統開發工具包 )[3-4]來開發移動AGENT。Aglet,是一種移動AGENT,一種JAVA對象 。The Aglet API[2]是基于JAVA的,包括一系列的類和能生成移動AGENT的接口,在JAVA中反映了Applet模式,因而,生成的移動Agent能利用JAVA Applet的方法和策略。ASDK提供了Tahiti,它是一個Aglet服務器,能在每個站點建立執行Aglets的執行環境。每個Aglet可以移動到每個安裝有Tahiti的站點。為訪問本地數據庫,本系統利用了JDBC-ODBC橋路驅動器(圖1)JDBC-ODBC橋能將JDBC API請求翻譯成ODBC請求,并將請求發送到已安裝在目的站點的ODBC驅動器上。雖然這種方法要求預先在本地數據庫上安裝一個ODBC驅動器,可能造成更多的系統開銷,但它對大多的DBMSs(數據庫系統)是方便的,因為安裝具體的ODBC是很容易的。另外,當數據庫是由不同廠家提供因而需要不同的JDBC驅動器時,它更方便一個Aglet訪問不同站點上的多類型數據庫。
2.2 利用多移動AGENT來執行一個分布式事務
在本系統中,生成的移動Agent一般攜帶一個分布式任務。當這個任務需要在多個不同的分布式站點上執行時,一種方法是讓移動Agent 從一個站點移動到另一個站點,但這種方法會降低效率。為此,我們建議:將那個移動的Agent作為主Agent,然后她生成許多子Agent并發送到相關的站點,每個子Agent攜帶一個子任務訪問一個站點的本地數據庫,所有子Agent并行執行。顯然,每個子Agent也是一個移動Agent,僅攜帶一個子任務并僅訪問一個站點。當一個子Agent接收命令和傳送結果時,它需要和主Agent進行通訊,辦法是通過發送消息的方法:SendMessage(message)。當每個子Agent到達站點時,它將發送消息給主Agent,包括它的ID和代理[4]。一旦主Agent得到這些信息,它會將任務和其他信息發送給子Agent作為應答。信息包括子Agent所在目的站點的本地數據庫用戶名、口令和數據庫URL(Uniform Resource Locator),以便子Agent開始執行它的任務。這個過程由Aglet的信息系統來處理。
我們將主Agent 和它的子Agent之間的通信過程描述如下:
1)客戶端生成帶有任務的主Agent,他給子Agent分配任務。
2)移動Agnet生產并派遣許多子Agent去成分布式任務。
3)一旦一個子Agent到達它的目的站點,它會給主Agent發送消息。主Agent將回發子Agent訪問本地數據庫所需要的信息,諸如用戶賬號、密碼和數據庫URL。當子Agent收到這些信息時,它在本地安裝JDBC-ODBC橋驅動器,連接本地數據庫并執行它的任務。
4)當一個子Agnet完成它的任務時,它會給主Agent發送消息。
5)當所有的子Agent匯報它們的任務完成消息后,主Agent開始執行讀操作搜集所有結果。子Agent通過發送消息把結果傳給主Agent。
上述過程是基于2PC協議[5],下面給出一個2PC協議的擴展。
3 The Expanded Commit Protocol(ECP)
基于2PC的通信協議一般來說能滿足分布式事務。然而,當大量的子Agent處理事務并要成功地向主Agent回傳結果時,這種模式的通信可能引起瓶頸。為了減少通信阻塞,我們引進另一種托管協議:The Expanded Commit Protocol (ECP),它擴展了2PC,與2PC相似,ECP協議在執行上也有兩個階段:投票和決策。但是,2PC僅有兩個元素:合作者和參與者;ECP卻有3個元素:主Agent,通信Agent(CA)和子Agent。在ECP模式中,所有子Agent都分別群集在不同類中,如圖3,在每一類中,由一個通信Agent,即CA負責從同類的其它Agent中搜集投票和結果,并把一個投票和綜合的結果傳給主Agent,還負責向其它的成員廣播‘全托管’或‘全中止’的信息。一旦一個子Agent訪問了它本地的數據庫,它將向CA投票而不是向主Agent投票。投票信息是‘托管’或‘中止’。如果CA中止運行或收到屬于它的類中的任何成員的‘中止’投票。它將向主Agent投票‘中止’。無論何時,任何一個子Agent投票‘中止’,主Agent將向所有CA廣播并通過CA向全體子Agent廣播‘全禁止’。這種情況主 Agent的任務執行失敗。所有子Agent回滾它們的事務。如果同一類的每個子Agnet都成功的訪問了本地數據庫,這個類中的CA將向主Agent投票‘托管’。當所有CA投票‘托管’時,主Agnet向所有CA廣播‘全托管’,CA再向它的同類的其他成員廣播‘全托管’。那么所有子Agent將向它們的CA發送結果,CA將首先綜合、簡化結果并向主Agent傳送數據。
■
圖2 2PC下的通信框圖圖3 ECP協議下的通信框圖
從原理上分析,在2PC協議下,主Agent從子Agent那里搜集結果時,它必須逐個應答(圖2)。當主Agnet正從一個工作Agent搜集結果時,其它的工作Agnet雖然完成了任務,但必須等待。然而,在ECP協議下(圖3),主Agent僅搜集了3個結果,因為CA已在前面完成了一部分工作,在不同類中的處理過程是并行處理。這就是為什么ECP性能較優越的原因。
4 結論
這篇文章提供了一個基本的移動Agnet系統和適合訪問網絡數據庫的托管協議。我們的方法可以歸納如下:采用JBDC-ODBC網橋,數據庫訪問獨立于任何JDBC驅動器以便分布式的任務可以在不同數據庫上執行。采用移動Agent方法,一同可以開赴客戶端和服務器之間的弱連接。當網絡斷開時,工作Agent可以遷移到另一個站點并通過發送消息來取得新命令和發送結果。一個分布式任務可以被發送到多工作Agnet去并行執行事務以提高效率。與之比較,Applet只能順序執行和訪問站點來完成同樣的分布式任務。通過群集子Agent,ECP協議能有效地縮小子Agnet和主Agent之間的通信瓶頸。
參考文獻:
[1] Karmouch A. and Horlait E.,Agent-based Multimedia Communication on Internet,Proceeding of the IEEE 1998 Canadian Conference on Electrical and Computer Engineering,1998,pp.734-737.[EB/OL].
[2] Ziade F. and KarmouchA., A Multimedia Transportable Agent System,Proceeding of the IEEE 1997 Canadian Conference on Electrical and Computer Engineering,Engineering Innovation:Voyage of Discovery,May 1997,pp.233-236.[EB/OL].
[3] IBMASK 1.0.3,[EB/OL].URL:http://www.trl.ibm.co.jp/aglets/.
[4] Lange D B.,Oshima M., Programming and Deploying Java Mobile Agent with Aglets,Addison-Wesley press,Reading,Massachusetts,USA,1998[EB/OL].
[5] 曹大軍. 移動Agent框架的設計及其關鍵技術[J].計算機工程及應用,2002(01):164.