一種改進的移動Agent主動通訊演算法論文

一種改進的移動Agent主動通訊演算法論文

  摘要:通訊機制是Agent技術研究的重要課題,該文在移動Agent主動通訊演算法的基礎上,提出了一種改進的移動Agent主動通訊演算法,解決了可靠通訊問題,透過設定時間變數和超速等待,在Agent高速移動的情況下,強迫Agent停止移動,避免訊息長時間不能傳遞的問題,完成可靠的訊息傳遞。

  關鍵詞:移動Agent 主動通訊 通訊失效 訊息等待

  移動智慧體(mobile Agent,簡稱MA)是當前分佈計算領域的研究熱點。它可以在異構網路上的主機之間自主遷移,尋找合適的資源,利用與這些資源同處一臺主機或子網的優勢,處理或使用這些資源,代表使用者完成特定的任務。通訊機制是移動Agent的關鍵技術之一,通訊的可靠性和效率直接影響到整個移動Agent系統的效能。

  1 當前研究現狀及存在問題

  1. 1 移動Agent的通訊機制

  許多移動Agent支撐系統均提供了移動Agent的通訊機制,一是廣播方式,將網路看作是以訊息發起者為根結點的樹型結構,廣播方式使得訊息可以按某種規則(如深度優先,廣度優先)在網路中傳遞,直到遍歷所有的葉結點。二是訊息轉發方式,又可細分為Home Agent轉發模式和按路徑轉發模式。在Home Agent轉發模式中,每個移動Agent對應一個駐留在初始化結點上的Home Agent,用於定位移動Agent的當前位置[ 1 ]。在按路徑轉發模式中移動Agent途經的每個結點都保留有其下一目標結點的位置資訊,所有需要傳遞給MA的訊息從初始結點開始按這條路徑傳遞下去,直到移動Agent能真正接收到這些資訊[ 2 ]。另外,還有一些移動智慧體支撐系統只提供了通用的訊息傳遞機制,而將由於移動Agent移動所引發的問題留給應用開發者處理。

  1. 2 通訊失效問題

  在移動Agent的通訊過程中,經常會發生如圖1所示的情況:AgentA向Host1上的Agent B傳送訊息,但在傳輸過程中,Agent B 從Host1 遷移到了Host2,因而,當訊息到達Host1時,已經無法找到訊息的接受者了,我們把這種在訊息傳輸過程中目標Agent發生物理位置的變化,從而導致訊息不能到達目標Agent的問題稱為通訊失效問題[ 4 ]。

  現在解決通訊失效問題主要都是採用集中式的定址方式,即基於Home的定址機制,用Home快取所有訊息,再轉發給Agent,為了不產生衝突,要求Agent在遷移前必須向Home提出請求[ 2 ]。但是這種演算法中Home負擔過重,存在瓶頸問題。當然,也可以採用指標式定址,採用同步通訊的方法從結構上避免了通訊失效的發生[ 3 ]。

  2 主動通訊演算法

  2. 1 主動通訊演算法的通訊過程

  主動通訊演算法的主要過程: Agent B從“出生地" Place 2移動到Place3 (圖2中的1) ; B到達Place 3以後,向其Home報告新位置(圖2中的2) ;傳送方A將要傳送的訊息傳送給當前Place的Communicator (圖2中的3) ; Communicator通知接收方B的Home (圖2中的4) ; Home通知B到Place1取資訊(圖2中的.5) ; B主動聯絡Place1的Communicator並取回資訊(圖2中的6) 。接收方的地址對於傳送方是透明的,傳送方在傳送資訊的時候只需指定接收者的名字,而不必關心接收方在哪裡或是否正在移動。傳送方將訊息傳送給本地的Communicator以後,即認為訊息已經正確地傳送到接收方,可以繼續執行其他操作[ 5 ] 。

  2. 2 訊息等待問題

  主動通訊屬於“自由行動通訊”方式,傳送方和接受方在通訊過程中都可以自由移動,且不會影響通訊的可靠性,當接受方從傳送方的Communicator的訊息佇列中讀取訊息時,接受方如果要發生移動,會觸發一個On Leave操作,Agent離開當前位置,傳送方接受一個接受方的中斷請求,此時有兩種情況,傳送方的訊息佇列中訊息均被取走或者仍有訊息未被讀取,當發生後一種情況時,接受方到達新位置後,再從其Home讀取通知,繼續讀取剩餘訊息。但是,如果Agent移動過快,可能會出現下面的情況: Agent讀取訊息時,發生移動產生中斷,接受方到達新位置後繼續從Home讀取通知,取走剩餘訊息,訊息佇列還未為空,傳送方Agent又有移動中斷,那麼訊息佇列中可能會有一部分訊息長時間的不被讀取。

  2. 3 變數的加入

  為了避免2. 2中出現的情況,我們設定了一個時間變數和Agent超速等待,來避免有訊息長時間不被髮送。我們對Communicator中的每個訊息設一個時間變數Wtime,當Wtime達到我們設定的一個固定值T0 後,我們認為它等待時間過長,對它進行標記。Agent每移動到一個節點,都要計算自己的移動速率V (V 為曾經到達的節點個數/ (當前時間.出生時間)或者現在時刻以前的一段時間內到達的節點個數/時間跨度) ,當V超過給定的最高速率V0 時,Agent必須與Home建立連線,獲得儲存在Home上的傳送方通知,主動去取空接受方Communicator中的等待時間過長的訊息。其通訊過程和主動通訊演算法大致相同,但在傳送方A將要傳送的訊息傳送給當前Place的Communicator (圖2中的3)時,會觸發該訊息的Wtime變數,Agent B從“出生地" Place 2移動到Place3 (圖2中的1)的時候,Agent會計算它的移動速率V 值,並與V0 比較,當V超過給定的最高速率V0 時,Agent被強制與Home建立連線,獲得儲存在Home上的傳送方通知,主動去取空接受方Communicator中的Wtime值超過我們設定的T0 值的訊息。

  3 通訊過程的演算法實現

  Communicator與通訊有關的操作:

  ReceiveMessage (msg) { /* Communicator收到A傳送的訊息時,該操作被觸發* /

  將msg存入Queue; 初始化Wtime; }

  Interrup t ( ) { IF (Queue不空) {向B的Home傳送“新訊息"通知; }

  ELSE Queue. interrup t = false; }

  Home與通訊有關的操作:

  ReceiveMessage (msg) {將“新訊息"通知msg存入訊息佇列Queue;

  Updata ( ) { IF (Queue不空) haveMessage = true;

  ELSE haveMessage = flase; }

  移動Agent與通訊有關的操作:

  OnArrive ( ) { /* 每當移動Agent到達新位置時,該操作被觸發* /

  Home2>Updata ( ) ;

  IF ( haveMessage = true) 傳送“訊息到達"通知給自己; }

  GetMessagefromHome ( ) { /* Agent接收到“訊息到達”通知時,觸發該操作*/

  While (Home2>Queue不空) { 從Home2>Queue讀取一個通知msg,存入自身的訊息佇列Queue; };

  GetLongMessagefromHome ( ) {計算Agent移動速率V;

  WH ILE (V >V0 ∧Wtime > T0 )繼續從Home2>Queue讀取一個通知msg; }

  SendMessage (msg) { 向本地的Communicator傳送msg; }

  OnLeave ( ) {通知本地的Communicator; }

  4 演算法分析及應用

  改進的演算法同原演算法一樣,保證了通訊的可靠性,移動A-gent的自由移動性雖然有了一定的限制,但是保證了不會有訊息長時間不能到達目標,同時時間變數和Agent超速等待的設定,避免了訊息長時間等待問題的發生,同樣增加了系統的可靠性。

  該演算法在Agent之間展開協作通訊,使若干個移動Agent可以在網路中透過可靠通訊協作完成某一項任務,可以應用於面向應用領域的協同模式的研究中,提供一種統一的、靈活的分散式計算,使用移動Agent模型搭建各種分散式計算平臺和應用,在軟體構件技術和高效能計算環境方面有十分重要的意義,本演算法有助於完善移動智慧體支撐環境,為開發基於MA的分散式應用提供基礎。

  5 結束語

  本文分析了移動Agent的可靠性通訊問題, 在主動通訊演算法的基礎上,針對訊息等待問題進行了改進,提出了一個能夠保證移動Agent之間可靠、高效地進行通訊的通訊機制,該演算法有以下特點: (1)如果底層網路可靠通訊,則主動通訊機制能保證訊息的可靠提交; (2)如果底層網路可靠通訊,主動通訊機制承諾訊息提交的exactly2once語義。但該演算法對移動agent間的自由移動有一定的限制,還有待我們的進一步研究。

  參考文獻:

  [ 1 ] 馮新宇,陶先平,呂建,等. 一種改進的移動Agent通訊 演算法[ J ]. 計算機學報, 2005, 25 (4) : 357.

  [ 2 ] 周競揚,陳濤略,呂建,等. 一種高效可靠的移動Agent間通訊機制[ J ]. 軟體學報, 2003, 14 (8) : 1470.

  [ 3 ] 吳兆勝,姜峰,謝俊元. 一種新的移動Agent的可靠通訊演算法[ J ]. 計算機應用研究, 2004, 21 (1) : 219.

  [ 4 ] 吳剛,王懷民,等. 一種移動智慧體的位置管理和可靠通訊演算法[ J ]. 軟體學報, 2002, 13 (2) : 269.

  [ 5 ] 楊博,劉大有,楊鯤,等. 移動Agent系統的主動通訊機制[ J ]. 軟體學報, 2003, 14 (7) : 1338.

最近訪問