移動Agent
是一種特殊的Agent,它除了具有Agent的基本屬性以外,移動性是其最重要的特點,它可以從一台機器通過網路移動到另外一台機器運行,並根據需要克隆或生成子Agent,子Agent具有同父Agent相同的性質.移動Agent主要特點有:
⑴移動性能:移動Agent可以在異構網路和分散式計算機環境中自主、自動地遷移,攜帶信息或尋找適當的信息資源,進行就地的信息處理,代理用戶完成信息傳遞、網頁查詢、數據和知識發現、信息變換等多種任務.
⑵異構和異步性能:移動Agent可以支持異構
計算機軟體、硬體環境,能進行異步通訊和計算.
⑶降低網路通訊費用:傳送大量的原始信息不但費時還容易阻塞網路,如果將Agent移動到信息存儲的地方,進行局部搜尋和選擇後,將選中的信息通過網路傳送給用戶,會大大減少遠程計算機網路的連線費用.
⑷分布和
並行性:移動Agent提供了一個獨特的
分布計算體系結構,為完成某項任務,用戶可以創建多個Agent,將它們同時在相同或不同的節點上運行,可將單一節點的負荷分散到網路的多個節點上,使小系統具有處理大規模、複雜問題的能力.
⑸智慧型化路由:移動Agent具有根據目標、網路通訊能力和伺服器負載等因素,動態地規劃下一步操作的能力.智慧型化路由能很好地最佳化網路和計算資源,實現負載均衡,提高問題的求解速度,避免對資源的盲目訪問.
引擎
移動Agent引擎也稱為Agent語言
解釋器,Agent在解釋器的支持下工作,在用戶計算機上的引擎可以容納多個地點的Agent,在伺服器上的引擎可以容納幾千個地點和Agent.引擎可以通過以下三個
應用程式接口(APIs)來利用其主機的資源,它們分別是存儲API、運送API和外部API.存儲API使引擎訪問固定記憶體,固定記憶體確保計算機發生故障時仍能保存地點和Agent;運送API使引擎訪問通信媒體,通信媒體是引擎運送Agent到其它引擎所必需的;外部套用API使得用移動Agent語言編寫的部分應用程式能與其它
程式連線起來.
移動Agent通信協定
移動Agent之間進行合作的基礎是互動,而通信是實現互動的一種重要的方式和手段,移動Agent的協定組是使兩個引擎間能經常相互通信,引擎間通信的目的是為了運送Agent,涉及Agent通信語言(ACL:AgentCommunicationLanguage)、通信機制、本體論等多方面的內容.移動Agent之間通信的訊息必須具有良好定義的語法和語義,提供某些機制確保Agent之間安全、可靠地進行通信,支持同步或異步、一對一、一對多或廣播通信.
Agent在移動Agent系統的移動過程中,運行狀態的保存和恢復是至關重要的,它使得移動Agent系統能夠高效、合理地利用網路範圍內的系統資源,從而保證整個系統高效迅捷地運行,使得系統的計算吞吐量大幅度提高.也就是說,Agent的移動是資源驅動的,它要保證Agent時刻享有最有效的資源,從而保證這個任務的高效,而運行狀態的保存與恢復是這種要求的前提,因為Agent的最終執行結果是在一系列移動節點上運行的中間結果的積累,如果每一次移動都從頭開始,不僅造成網路和系統資源的浪費,而且使得整個作業效率大幅下降.尤其對於計算密集作業來說,如果Agent系統不具有運行狀態的保存和恢復功能的話,整個移動Agent系統的優越性將無從談起.
執行環境
流行的分散式計算技術都基於Client/Server模式,通過遠程過程調用或訊息傳遞等方式進行遠程通信,比較適合穩定的網路環境套用場合。隨著新型網路套用(如移動計算)的出現,Client/Server模式的缺點日益明顯,遠遠不能適應當今快速多變的網路套用發展,移動Agent技術集智慧型Agent、分散式計算、通信技術於一體,提供了一個強大的、統一的和開放的計算模式,更適合於提供複雜的網路服務(如複雜的Internet信息搜尋、Internet智慧型信息管理等)。
移動Agent是具有移動特性(Mobility)的智慧型Agent,它可以自主地在網路上從一台主機移動到另一台主機,並代表用戶完成指定的任務,如檢索、過濾和收集信息,甚至可以代表用戶進行商業活動。
MA技術是
分散式技術與Agent技術相結合的產物,它除了具有智慧型Agent的最基本特性——反應性、自治性、導向目標性和針對環境性外,還具有移動性[1]。
具體特性表現在如下幾個方面:
⑴節約
網路頻寬、克服網路延遲。移動Agent的本質是將計算移動到數據端,直接在數據端進行本地處理,只返回最終結果,從而避免了大量中間數據在通信兩端的傳輸。移動Agent一次可以攜帶多個服務請求移動到伺服器端進行本地調用,避免了多次遠程調用,從而節省了每次遠程調用的網路延遲。因此在處理的數據量大、通信兩端互動頻繁、頻寬不足的情況下,使用移動Agent技術可以有效地節省網路負載。
⑵支持實時遠程互動。在一些遠程控制系統中,如工業控制、海底探測器控制、外太空探測器控制、有毒環境中的監控,實時性非常重要,但是網路的延遲使遠程實時控制變得不太可能。將移動Agent傳送到遠端系統,代替人在遠端完成各種控制活動,可以從根本上解決網路延遲問題。
⑶封裝網路協定。任何網路程式都是建立在特定的協定之上的,網路程式的開發要求
程式設計者深刻地理解低層的
網路協定;隨著Internet的發展,新的協定和數據格式不斷地產生,隨著網路協定的升級,
程式需要重新編寫、編譯,這些都給網路套用的開發和維護帶來困難。移動Agent系統是一種
中間件,位於作業系統和應用程式之間,封裝了低層
網路協定,提供移動、通信、容錯和安全等基本功能,開發人員無須了解低層實現即可開發網路套用。當
網路協定升級時,只需修改移動Agent系統中相關的功能實現而無需修改MA應用程式。
系統是一種中間件,位於作業系統和應用程式之間,封裝了低層
網路協定,提供移動、通信、容錯和安全等基本功能,開發人員無須了解低層實現即可開發網路套用。當網路協定升級時,只需修改移動Agent系統中相關的功能實現而無需修改MA應用程式。
⑷支持異步自主執行。傳統
分散式系統中異步通信機制(如異步
訊息佇列)可以異步地處理多個請求,但要求提出請求的
客戶端必須始終線上等待並回響請求的回答,這對移動客戶而言是不可行的。使用移動Agent技術,用戶可以將整個任務而不是單個請求提交給多個Agent去執行,這些Agent被傳送到網上之後,可以獨立於傳送它們的程式,異步地、自主地、協作地完成任務,它們的生命周期可以長於創建它們的程式。
⑸支持離線計算(斷連操作)。由於頻寬是一種昂貴的資源,要求移動設備(筆記本電腦、PDA、手機等)始終保持網路連線在經濟上是不可行的;無線通信的特性要求系統具有離線計算的能力,移動設備連線在技術上也是不可行的。移動Agent技術可以解決這個問題。用戶派出Agent之後,可以斷開網路連線,Agent在網路上自主地運行,當Agent完成任務之後,通過轉接機制(Docking)監視用戶是否線上,當它發現用戶線上時,就返回計算結果。
⑹
支持平台無關性。移動Agent的運行只和其運行環境有關,和具體的網路結構、
網路協定、計算機設備、作業系統無關,只要
網路節點上裝有移動Agent運行環境,移動Agent就可以實現跨平台的移動和運行。如果所有的移動Agent系統都遵循移動Agent系統的互操作標準,就可以實現MA在任意移動Agent系統中的移動、互動和通信,真正實現平台的無關性,即所謂的“編譯一次,到處移動”。
⑺具有動態適應性。移動Agent和其運行環境進行互動,感知環境的變化,並自主地、快速地作出反應,使整個系統始終保持在最優狀態。
⑻提供個性化服務。來自不同的民族和地區,有著不同的文化背景,他們對信息的需求和使用方式有著很大的差異,這就要求Internet進行個性化服務。使用移動Agent技術,用戶可以根據伺服器端提供的低層操作函式,編寫滿足自己特定需要的Agent,然後傳送到伺服器端運行,利用伺服器端的數據資源或計算資源為不同的用戶服務,有效地增加伺服器功能的伸縮性。
⑼增強套用的強壯性和容錯能力。移動Agent支持離線計算,其反應性使之能及時地感知
網路節點的失效,其自主性可以使它自主地處理並修正錯誤,更容易建立容錯能力強的
分散式系統。例如,在一個
網路節點失效之前,在其上工作的移動Agent可以立即感知,並完成相應的備份工作,然後移動到其他節點,繼續原來的工作。
移動Agent系統的組成不同的移動Agent系統的
體系結構各不相同,但幾乎所有的移動Agent系統都包括如下兩部分:Agent和MA環境(
MAE或稱MA伺服器、MA主機(MAH)、MA服務設施、Place、Context、Location)。MA環境為Agent提供安全、正確的運行環境,實現MA的移動、MA執行狀態的建立、MA的啟動、實施MA的約束機制、容錯策略、安全控制和通信機制,並提供基本服務模組,如事件服務(EventService)、黃頁服務(YellowPageService)、事物服務(TransactionService)和
域名服務(DNS)等。1台
主機上可以有1個或多個
MAE。通常情況下,1個
MAE只位於1台主機上,但當主機之間是以高速、持續、穩定可靠的網路連線時,1個MAE可以跨越多台主機而不影響整個系統的運行效率。Agent可以分為移動Agent和服務Agent。移動Agent可以從1個
MAE移動到另1個MAE,在MAE中執行,並通過Agent通信語言(ACL)與其他MA通信或訪問MAE提供的服務。移動Agent的主要作用是完成用戶指定的任務,需要實現移動語義(即目標主機或路由的選擇)、安全控制(保護自身)、與外界(MA服務環境以及其他Agent)的通信等功能。服務Agent不具有移動的能力,其主要功能是向本地的Agent或來訪的Agent提供服務。通常,1個
MAE上駐有多個服務Agent,分別提供不同的服務,如檔案服務、黃葉服務等系統級服務,定票服務、資料庫服務等套用級服務。由於系統Agent是不移動的,並且只能由它所在
MAE的管理員啟動和管理,因此保證服務Agent不會是“惡意的”。來訪的移動Agent不能直接訪問系統資源,只能通過服務Agent提供的接口訪問“受控制的(Controlled)”、“安全的(Secure)”的服務,這可以避免惡意的Agent對
主機的攻擊,是移動Agent系統經常採用的
安全策略。另外,採用Java提供的C語言接口,服務Agent可以提供和其他軟體LegacySoftware)的互動接口,很容易將非Agent系統集成到Agent系統中。