移動Agent
移動Agent
隨著Internet應用的逐步深入,特別是信息搜索、分散式計算以及電子商務的蓬勃發展,人們越來越希望在整個Internet範圍內獲得最佳的服務,渴望將整個網路虛擬成為一個整體,使軟體Agent能夠在整個網路中自由移動,移動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的最基本特性——反應性、自治性、導向目標性和針對環境性外,還具有移動性。
具體特性表現在如下幾個方面:
⑴節約網路帶寬、克服網路延遲。移動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系統中。