• 沒有找到結果。

行動程式碼(Code Mobility)

第三章 網際網路智慧型代理系統

3.2.1 行動程式碼(Code Mobility)

行動程式碼(Code Mobility)可以非正式的定義為「動態改變程 式碼和其所執行地點之間的關係」。換句話說,程式碼所執行的地 點是可以動態改變的。這樣子的定義聽起來很容易讓人聯想到在分 散式系統中所討論的「行程遷移」(Process Migration)。

在 分 散 式 系 統 的 研 究 課 題 中 , 所 謂 的 行 程 遷 移 ( Process Migration),也就是執行中行程的遷移行為。這種行為允許作業系 統中的一個行程(Process)從原先執行的機器,遷移到另外一台機 器去,並且若無其事的繼續執行。要實踐這種行為,可以想見需要 處理十分複雜的問題。因為必須將整個的執行環境像是開啟檔案的 所有 handle、環境變數等等的轉移,而且遷移到另一機器之後,必 須能夠正確的繼續執行,就像什麼事都沒有發生過一樣。行程遷移 的目的大抵上多是為了:1.負載平衡(Load Balancing); 2.遷移到 更適合(或說程式更喜愛的)的軟硬體。

行程在多台機器之間遷移可以讓多台機器之間的負載儘量的平 均,使資源的使用可以更加的均衡,平均的效能也應該可以提高。

至於遷移的策略以及演算的方法,目前已有為數不少的論文在討論 這個問題。

因為軟硬體偏好的遷移行為則有可能發生在像是一個分散式的 系統中,並不是每台機器都裝有某一硬體或軟體,但是這個系統希 望程式在任一台機器開始執行之後,透過行程遷移到提供執行所需 資源(軟體或硬體)的機器之上,讓程式感覺不到這背後的一切,

就像是一開始執行的機器就擁有這些資源一樣。

大多數的行程遷移的機制都希望提供一個透明化的環境,也就 是不希望,也儘量不允許程式設計者接觸、控制到行程遷移的行為。

程式設計者無法知道,也無法分辨執行中的行程是否經歷過遷移。

18

物件遷移(Object Migration)與行程遷移相似。這種機制是在不 同的 Data Space 當中搬移 Data Object。它和行程遷移一樣,都是定 位於應用在一些鬆散連結(Loosely-coupled)、小範圍的分散式系統。

一般所謂的行動程式碼系統(Mobile Code Systems)則企圖應用 在大範圍的環境中,它有幾個性質: 其它的目的。像是客製化服務(Service Customization)、程式功能 自動執行(Dynamic Execution of Application Functionality)、自發性

(Autonomy)、容錯能力(Fault Tolerance)以及支援離線運作

(Support for Disconnected Operations)。

行動程式碼的技術可以應用在網際網路上,表示它具有很好的 延展性(Scalability),並不需要特別刻意的設計,便渾然天成。而

「因地制宜」(Location Aware)的性質,則有別於許多分散式系統 的架構。前面談到行程遷移時,有提到大多數行程遷移的機制都希 望提供一個透明化的環境,將程式設計者隔絕於這些行為之外。程

式設計者在設計程式時,並不會去、也不需要去考慮到程式遷移的

1. 客製化服務(Service Customization):在網路管理研究領域中,有 人提出“Management by Delegation”的概念,也就是指派式的管

20

轉。傳統的 Client/Server 式的網路管理架構,網路管理的應用程 式透過網路管理的通訊協定要求網路設備之上的 Agent 提供服 務。在這種架構之下,網路管理應用程式是 Client,而網路設備 上的 Agent 程式則是 Server。Agent 程式提供一組事先定義好的服 務,像是提供各種網路設備的狀態、回報網路設備所發生的特殊 Functionality):這一點,可以從上述的 Management by Delegation 的例子中明白。

Disconnected Operations):這兩種性質有些相關。有些行動程式 Disconnected Operation。舉例來說,使用者利用一 Notebook 加上 無線通訊設備連上網路,他需要執行一個程式,必須花費一段為 些系統可稱為 Mobile Code Technologies 。我們可以發現, Code Mobility 的核心意念十分的簡單,也就是「程式碼所執行的地點是可 以 動 態 改 變 的 」。 而 在 這 個 意 念 之 下 , 分 別 出 現 了 四 種 Design Paradigm, 分 別 是 : 1.Client / Server ( CS ); 2.Remote Evaluation

(REV);3.Code On Demand(COD);4.Mobile Agent(MA)。他們 並且強調所謂的 Design Paradigm 不必然的對映某些特定的 Mobile Code Technologies,而一個 Mobile Code Technology 事實上也不全然 的只能實作特定一 Design Paradigm 。以下僅對本系統所使用的技術

-Mobile Agent 來作介紹。

22

一個所謂的 Mobile Agent 擁有知識,也擁有資源,但是卻缺乏了 位置因素,也就是缺乏不可移動的資源,而這些資源只有在一些特 定的地點才有,所以 Mobile Agent 必需具備遷移的能力,移動本身 的程式碼(如何完成工作)以及可移動的資源。Code On Demand 和 Mobile Agent 都可以算是具備實質上的程式碼移動行為,它們之間最 大的差異應該是:在 Code On Demand 的架構之下,程式碼通常只移 動一次,將程式碼送給程式碼的需求者之後,程式碼就不在移動了,

算是定居下來。但是 Mobile Agent 卻是天生漂泊不定的浪子性格,

通常為了達成一項工作,必須遊走數個特定地點。需要特別注意的 是 Mobile Agent 不僅遷移程式碼,更包括了自身的狀態。

一個特定的應用,不見得和某一特定的 Design Paradigm 牢牢地 綁在一起。我們可能可以利用多種 Design Paradigm 都足以完成一個 特定的應用,但各種不同的 Design Paradigm 在優劣上卻可能有高下 之分。如何為自己要解決的問題尋求一個較佳的 Design Paradigm 一 個應用 Mobile Code 技術上的核心課題,這將有賴於設計者對於問題 本質的洞悉以及各技術應用的評估。評估的項目自然因人而異,諸 如:對網路流量所造成的影響 ,執行效率 ,容錯能力 ,擴充性

(Extensibility),延展性(Scalability)等等。

3.2.3 行動代理者的定義

要瞭解什麼是 Mobile Agent,首先得知道 Agent 的定義。Agent 和一般程式有何不同?這問題在學者間已持續辯論了好幾年,基本 上我們可以把它下個較寬鬆的定義為:「由人類指定工作內容與作業 限制,代替人類進行所指定工作的軟體程式」。Agent 依照其環境的 本質可分為三種[Clements & Papaioannou&Edwards,1997]:

1. 目的導向型(Goal Oriented):Agents 的行為並非只是單純地對環 境的刺激產生反應而已,尚有其本身的任務與目的。

2. 溝通型(Communicative):可和其他 Agents 互相溝通的 Agents。

3. 移 動 型 ( Mobile ): 可 以 從 一 台 主 機 移 動 到 另 一 台 主 機 上 的 Agents。

而 Mobile Agent 其實便是一種具有移動能力的 Agent 物件或程 式。

更詳細一點來說,Mobile Agent 可以如下解釋:

Mobile Agent = Mobile Code + Agent

Agent:

代理者程式,通常能接受使用者的命令,根據命令去執行大量 的工作; 或者其本身具有 Autonomous(自發性),透過程式的人工 智慧(AI)或決策樹在執行時期(Runtime)自行判斷應執行的程序。

Mobile Code:

行動碼是一種能讓執行中的程式由其所處的執行空間中遷移至 另一執行空間中執行(行程遷移技術),一般實際上多運用於產生 能在執行時期遊走於網際網路中的程式。

JAVA Mobile Agent 技術並非 JAVA 的標準套件,而是由一些團 體自行開發的,但是基本上這是一個以遠端方法呼叫 ( Remote Method Invocation,RMI)為基礎的系統,當 RMI 的技術,搭配上物 件串列化的機制,Mobile Agent 的系統就逐漸被展現出來。

24

Mobile Agent 當然不可能任意的遊走於何一台主機中,所有要支 援 Mobile Agent 的主機上皆必需先建構出一個 Mobile Agent Runtime Environment(通常是利用執行一個 JAVA Application 來產生),當基 礎的環境建置好了之後,系統中運行的 Agent 即能執各類動作,而 各 Runtime Environment 間利用物件序列化(Serialization)來達成程式 碼實體(Code Instance)的遷移,利用類似 RMI 的機制來形成遠端 參考(Remote Reference)以利實現遠端控制。

在元件化的設計理念之下,DCOM/COBRA/JAVA RMI 等架 構,皆實現了讓一程式的各元件能夠分散在數個系統中運行,讓程 式的各個 元件能在其最適當的主機中執行,而 Mobile Agent System 進一步的擴展此一概念,讓程式中的各元件不再被限制在一固定的 主機之中,換句話說 DCOM/COBRA/RMI 的系統架構是一種靜態 架構,而 Mobile Agent System 則是一種能在執行時期作適時決策或 轉變的動態架構,在此一特性下,系統將更容易實現負載平衡及容 錯等機制。

以下是對 Mobile Agent 更嚴謹的定義:

Mobile Agent 並不侷限於只能在開始執行的系統上動作,最主要 的特性就是它可以經由網路將其本身轉移到另一個不同的系統上去 繼續動作。這種移動的能力使得 Mobile Agent 能夠與目的地系統上 的物件相互溝通,然後在相同的主機上使用這些物件,或是作為網 路上的遠端物件[Lange & Oshima,1998]。

由上述定義可知,Mobile Agent 的運用前提是網路環境,它可以 在四通八達的網路空間中漫游,移動到存放有 Mobile Agent 所需要 之資料的主機上,就近進行處理的工作。工作告一段落之後,Mobile

Agent 帶著其程式碼與已處理過的資料移動到下一台主機上,如此持 續到所有工作完成,回到其原來出發的機器為止。

圖 3-1 大略描述了 Mobile Agent 的行為模式:

圖 3-1 Mobile Agent 的行為模式

3.2.4 行動代理的效益與實務應用上的考量

運用行動代理相對於傳統主從架構有以下優點:

5. 減少網路負載:分散式系統十分倚賴通訊媒介來交換訊息,尤其 是使用到安全協定時,造成龐大的網路流量。Mobile Agent 不需 要與目標機器持續連線,它允許使用者將指令包裝起來送到彼方 的電腦,然後在彼端當場進行交談的動作。Mobile Agent 亦可在 遠端主機上就近處理其上存放的大量資料,不像傳統模式須將大 筆資料經由網路傳輸到本地端方能進行處理,無形中省去了大量 交通量。此外 Mobile Agent 只在移動時才會使用網路傳送資料,

而且傳送的只有運算完成的資料及自己本身的程式,消耗頻寬較 少。

6. 可克服網路延遲問題:在以網路控制大批需要即時反應的系統之 時,例如工廠的眾多機械臂,常會造成網路的遲延。Mobile Agent 為此問題提出了解套的方法,因為它可以從中央主機派送到各機 器上,在各機本端直接執行控制指令。

7. 將通訊協定封裝起來:分散式系統的主機需要對外送的資料加上

7. 將通訊協定封裝起來:分散式系統的主機需要對外送的資料加上

相關文件