Lecture3 JADE平臺(tái)概述_第1頁
Lecture3 JADE平臺(tái)概述_第2頁
Lecture3 JADE平臺(tái)概述_第3頁
Lecture3 JADE平臺(tái)概述_第4頁
Lecture3 JADE平臺(tái)概述_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Distributed Intelligent Software應(yīng)偉勤應(yīng)偉勤軟件學(xué)院軟件學(xué)院B7-409Copyright Weiqin Ying2pJADE發(fā)展歷史pJADE的Agent范式pJADE平臺(tái)的體系結(jié)構(gòu)pJADE平臺(tái)的啟動(dòng)pJADE包pJADE消息傳輸服務(wù)pJADE管理和調(diào)試工具Copyright Weiqin Ying3n為了驗(yàn)證早期FIPA規(guī)范,意大利電信公司Telecom在1998年年底發(fā)起第一個(gè)軟件開發(fā)計(jì)劃,最終發(fā)展成為現(xiàn)在的JADE平臺(tái)。n意大利電信公司2000年在遵循LGPL許可協(xié)議的前提下開放了JADE源代碼nJADE擁有一個(gè)網(wǎng)站,網(wǎng)址為http:/,提供關(guān)于軟件、

2、文檔、示例代碼和 使用方法等大量有用信息。Copyright Weiqin Ying4n最初意大利電信公布JADE平臺(tái),僅用于為FIPA委員會(huì)驗(yàn)證FIPA協(xié)議。但由于其功能設(shè)置遠(yuǎn)遠(yuǎn)超出了FIPA規(guī)范,被全球的分布式開發(fā)者使用。 JADE通過提供一系列遵循FIPA規(guī)范的抽象軟件和工具,為FIPA規(guī)范的廣泛傳播做出了巨大貢獻(xiàn)。 程序員不需要很深地研究規(guī)范,只要初步了解規(guī)范的內(nèi)容就可以使用這些軟件和工具。遵循FIPA規(guī)范是JADE的主要優(yōu)勢之一。 LEAP項(xiàng)目是對(duì)JADE核心技術(shù)進(jìn)行擴(kuò)展的代表性項(xiàng)目之一,在2000年至2002年期間,對(duì)于將JADE應(yīng)用到無線網(wǎng)絡(luò)環(huán)境發(fā)揮了重要作用。Copyright

3、 Weiqin Ying5nJADE是一個(gè)提供了基本中間件的軟件平臺(tái),這些中間件獨(dú)立于具體應(yīng)用,簡化了基于軟件Agent的分布式應(yīng)用實(shí)現(xiàn)。JADE 一個(gè)顯著的優(yōu)點(diǎn)是它基于Java語言實(shí)現(xiàn)了一個(gè)Agent抽象,并提供了友好的API。nJADE軟件Agent抽象思想 Agent具有自主性和主動(dòng)性 Agent可以拒絕,它們之間是松耦合的 系統(tǒng)是端到端的Copyright Weiqin Ying6nAgent具有自主性和主動(dòng)性 Agent不向其他Agent提供回調(diào)功能和自身對(duì)象引用,目的是不給其他實(shí)體控制其自身服務(wù)的機(jī)會(huì) Agent有自己的執(zhí)行線程,利用它來控制自身生命周期和自主決定什么時(shí)候執(zhí)行什么樣

4、的動(dòng)作。Copyright Weiqin Ying7nAgent可以拒絕,它們之間是松耦合的 基于消息的異步通信是JADE中Agent之間通信的基本形式,Agent進(jìn)行通信時(shí)必須將消息發(fā)送到一個(gè)確定的目標(biāo)地址或目標(biāo)地址集。 發(fā)送者和接收者之間沒有時(shí)間依賴,當(dāng)發(fā)送者正準(zhǔn)備發(fā)送消息時(shí),接收者可能事先并不知道 發(fā)送者并不需要獲得接收Agent對(duì)象,只需要知道接收者的名稱標(biāo)識(shí)。消息傳輸系統(tǒng)根據(jù)名稱標(biāo)識(shí)就能夠正確地解析出傳輸?shù)刂?,甚至是發(fā)送者并不知道接收者的準(zhǔn)確名稱標(biāo)識(shí),只知道接收者是一個(gè)具有某種特征的agent集合(例如,所有提供“Book-Selling”服務(wù)的Agent 或 把消息傳播給“sell

5、ing. book. it”域內(nèi)所有的Agent)Copyright Weiqin Ying8nAgent可以拒絕,它們之間是松耦合的(續(xù)) 這種形式的通信允許接收者來選擇哪些消息應(yīng)該處理,哪些消息應(yīng)該丟棄與拒絕,以及定義消息處理的優(yōu)先級(jí)(例如,首先閱讀所有來自于“book. it”域的消息) 它也允許發(fā)送者控制其線程的執(zhí)行,使得在接收者處理消息期間自己不會(huì)被阻塞。 最后,這種通信形式還提供了一個(gè)獨(dú)特的優(yōu)勢,可以將一個(gè)組播通信當(dāng)作一個(gè)原子操作執(zhí)行,而不是連續(xù)N次調(diào)用(即它用一種對(duì)消息接收者列表的發(fā)送操作類型,取代分別與每個(gè)遠(yuǎn)程通信對(duì)象之間的消息發(fā)送方法調(diào)用)Copyright Weiqin Y

6、ing9n系統(tǒng)是端到端的 每個(gè)Agent都定義了一個(gè)全局唯一的名稱(由FIPA規(guī)范定義的Agent標(biāo)識(shí)符AID),可以在任何時(shí)刻加入和離開JADE平臺(tái),并通過白頁和黃頁服務(wù)發(fā)現(xiàn)其他Agent(這些服務(wù)由JADE平臺(tái)的Agent管理系統(tǒng)AMS和目錄服務(wù)器DF提供,同樣是根據(jù)FIPA規(guī)范定義)。 一個(gè)Agent可以在任何時(shí)刻發(fā)起與其它Agent間的通信,同樣地,也可以在任何時(shí)刻成為其他Agent的通信對(duì)象。Copyright Weiqin Ying10n基于這些設(shè)計(jì)考慮,JADE為程序員提供以下可以直接使用和易于定制的核心功能 (1) 一個(gè)由Agent組成的完全分布式系統(tǒng),每個(gè)Agent作為一個(gè)單

7、獨(dú)的線程運(yùn)行,可運(yùn)行于不同的遠(yuǎn)程機(jī)器,相互之間具備透明交互能力。也就是說,該平臺(tái)提供了一個(gè)與位置無關(guān)的獨(dú)特API,它是對(duì)底層通信基礎(chǔ)設(shè)施的抽象 (2)完全兼容FIPA規(guī)范。該平臺(tái)成功地遵循了所有FIPA互操作性規(guī)范,并被許多平臺(tái)作為中間件使用。促進(jìn)了FIPA規(guī)范的應(yīng)用是JADE對(duì)FIPA規(guī)范做出的積極貢獻(xiàn)Copyright Weiqin Ying11n基于這些設(shè)計(jì)考慮,JADE為程序員提供以下可以直接使用和易于定制的核心功能 (3)通過位置透明的應(yīng)用程序編程接口API實(shí)現(xiàn)了高效的異步消息傳遞。當(dāng)跨越平臺(tái)傳輸時(shí),消息自動(dòng)從JADE內(nèi)部Java描述轉(zhuǎn)換成符合FIPA標(biāo)準(zhǔn)的編碼和傳輸協(xié)議的描述 (4

8、)同時(shí)實(shí)現(xiàn)白頁和黃頁服務(wù)。Copyright Weiqin Ying12n基于這些設(shè)計(jì)考慮,JADE為程序員提供以下可以直接使用和易于定制的核心功能 (5)簡單有效的Agent生命周期管理。每個(gè)Agent創(chuàng)建時(shí)會(huì)自動(dòng)分配一個(gè)全局唯一標(biāo)識(shí)符和傳輸?shù)刂?,該?biāo)識(shí)符和地址在其向所在平臺(tái)上注冊白頁服務(wù)時(shí)要使用到。也提供了簡單的API和圖形工具來完成本地和遠(yuǎn)程Agent生命周期管理,即創(chuàng)建、暫停、恢復(fù)、凍結(jié)、解凍、遷移、復(fù)制和銷毀。 (6)支持Agent遷移。在一定條件下,Agent自身可以在進(jìn)程和機(jī)器之間遷移。Agent的遷移對(duì)于通信Agent完全透明,甚至可以在遷移過程中繼續(xù)進(jìn)行交互Copyright

9、 Weiqin Ying13n基于這些設(shè)計(jì)考慮,JADE為程序員提供以下可以直接使用和易于定制的核心功能 (7)為Agent甚至外部應(yīng)用程序提供訂閱機(jī)制。它們通過向平臺(tái)訂閱消息獲得平臺(tái)事件通知,包括生命周期相關(guān)的平臺(tái)類型事件和消息傳遞事件等。 (8)為程序員提供了一系列圖形化工具,支持他們的調(diào)試和監(jiān)控工作。這些工具對(duì)于開發(fā)典型的JADE應(yīng)用這樣的多線程、多進(jìn)程、多機(jī)復(fù)雜系統(tǒng)特別重要。可以對(duì)交互進(jìn)行嗅探、仿真,可以對(duì)Agent的運(yùn)行進(jìn)行遠(yuǎn)程監(jiān)視,包括Agent執(zhí)行的遠(yuǎn)程單步調(diào)試。Copyright Weiqin Ying14n基于這些設(shè)計(jì)考慮,JADE為程序員提供以下可以直接使用和易于定制的核心

10、功能 (9)支持本體和內(nèi)容語言。編程人員根據(jù)偏好選擇了內(nèi)容語言和本體后(如基于XML),平臺(tái)會(huì)自動(dòng)執(zhí)行本體檢查和內(nèi)容編碼。程序員也可以構(gòu)建新的內(nèi)容語言以滿足特定的應(yīng)用需求。 (10)提供一個(gè)交互協(xié)議庫,對(duì)包含一個(gè)或多個(gè)要達(dá)成目標(biāo)的通信模式進(jìn)行建模,以一系列Java類的形式構(gòu)建一個(gè)與具體應(yīng)用無關(guān)的框架,這些類可以用于特定應(yīng)用領(lǐng)域。Copyright Weiqin Ying15nJADE平臺(tái)的主要體系結(jié)構(gòu) JADE平臺(tái)由分布在網(wǎng)絡(luò)上的若干個(gè)Agent容器組成。Agent生存于容器中,容器是提供JADE運(yùn)行支撐環(huán)境、管理Agent運(yùn)行時(shí)所需服務(wù)的Java進(jìn)程。 有一個(gè)特殊的容器,稱為主容器,它是一個(gè)

11、平臺(tái)的入口點(diǎn)。它必須是該平臺(tái)上第一個(gè)啟動(dòng)的容器,并且其他所有容器必須通過在主容器上注冊來加入到該平臺(tái)中。Copyright Weiqin Ying16n簡單地使用一個(gè)邏輯名稱定義容器 默認(rèn)情況下,主容器被命名為“MainContainer”,而其他容器被命名為“Container1”、“Container2”,依次編號(hào)??梢允褂妹钚羞x項(xiàng)來重載默認(rèn)的容器名稱n作為平臺(tái)的核心入口點(diǎn),主容器有以下特殊能力: (1)對(duì)容器表(CT)進(jìn)行管理。CT是平臺(tái)內(nèi)所有容器節(jié)點(diǎn)對(duì)象引用和傳輸?shù)刂返淖员怼?(2)對(duì)全局Agent描述表(GADT)進(jìn)行管理。GADT是平臺(tái)內(nèi)所有Agent的注冊表,包括Agent的

12、狀態(tài)和位置等。 (3)Agent管理系統(tǒng)AMS和目錄服務(wù)器DF。它們是兩個(gè)特殊的Agent,AMS提供平臺(tái)Agent管理和白頁服務(wù),DF提供平臺(tái)的黃頁服務(wù)Copyright Weiqin Ying17nJADE平臺(tái)的主要體系結(jié)構(gòu)如圖所示Copyright Weiqin Ying18n為避免主容器會(huì)成為一個(gè)系統(tǒng)瓶頸,JADE為每個(gè)容器提供一個(gè)GADT緩存,每個(gè)容器可以對(duì)其進(jìn)行本地管理。 一般情況下,平臺(tái)操作不涉及主容器,僅涉及本地GADT緩存和操作主體所在的兩個(gè)容器(如消息的發(fā)送者和接收者) 當(dāng)一個(gè)容器需要尋找消息接收者的地址時(shí),它首先搜索其LADT( Local Agent Descripto

13、r Table,本地Agent描述表)和本地GADT緩存,只有當(dāng)搜索失敗時(shí),才會(huì)繼續(xù)與主容器進(jìn)行聯(lián)系以獲得正確的遠(yuǎn)程參考,并緩存在本地GADT緩存供將來使用Copyright Weiqin Ying19nAgent身份標(biāo)識(shí)包含在Agent標(biāo)識(shí)符(AID)內(nèi),由一系列符合FIPA結(jié)構(gòu)和語義規(guī)范的屬性組成。AID中最基本的屬性是Agent名稱及其地址。 Agent名稱是一個(gè)唯一標(biāo)識(shí),由JADE通過在平臺(tái)名稱前連接一個(gè)用戶定義名稱表示(這一用戶定義名稱也稱為本地名稱,在平臺(tái)內(nèi)部通信已經(jīng)足夠區(qū)分各個(gè)Agent) Agent地址是從平臺(tái)繼承的傳輸?shù)刂罚總€(gè)平臺(tái)地址對(duì)應(yīng)相應(yīng)的MTP( Message Tr

14、ansport Protocol)端點(diǎn),可以發(fā)送和接收兼容FIPA協(xié)議的消息。Copyright Weiqin Ying20n當(dāng)主容器啟動(dòng)時(shí),JADE平臺(tái)會(huì)同時(shí)自動(dòng)啟動(dòng)兩個(gè)特殊Agent。它們的角色由FIPA Agent管理標(biāo)準(zhǔn)定義: (1) Agent管理系統(tǒng)(AMS) (2)目錄服務(wù)器(DF)Copyright Weiqin Ying21nAgent管理系統(tǒng)(AMS) AMS是監(jiān)督整個(gè)平臺(tái)運(yùn)行的、提供白頁服務(wù)的特殊Agent。它是所有需要與平臺(tái)交互以便獲得白頁服務(wù)、實(shí)現(xiàn)自身生命周期管理的Agent的接觸點(diǎn)。 平臺(tái)內(nèi)每一個(gè)Agent都必須向AMS注冊(在Agent啟動(dòng)時(shí)JADE自動(dòng)執(zhí)行)以獲

15、得一個(gè)有效的AIDCopyright Weiqin Ying22n目錄服務(wù)器(DF) DF是實(shí)現(xiàn)黃頁服務(wù)的Agent,在Agent注冊自身可提供的服務(wù)或檢索其他Agent可提供的服務(wù)時(shí)使用 JADE DF同樣接收來自Agent的訂閱,這些Agent希望在有符合訂閱要求的服務(wù)注冊或者服務(wù)更改時(shí)能夠得到通知 可以同時(shí)啟動(dòng)多個(gè)DF服務(wù)以構(gòu)建跨域黃頁服務(wù)。如有需要,這些DF也可以組成聯(lián)邦,通過建立相互之間的注冊以允許Agent請(qǐng)求在整個(gè)聯(lián)邦內(nèi)部傳播Copyright Weiqin Ying23n所有與JADE相關(guān)的軟件都可以從JADE網(wǎng)站http:/jade. tilab. com下載。JADE相關(guān)軟

16、件分為兩部分:主要組件和附件。 附件包括一些實(shí)現(xiàn)特殊擴(kuò)展功能的獨(dú)立模塊,如定制內(nèi)容編碼語言。在許多情況下,這些附件不是JADE開發(fā)團(tuán)隊(duì)直接開發(fā)的,而是由開放代碼社區(qū)的成員開發(fā)的。Copyright Weiqin Ying24nJADE的主要組件包括以下5個(gè)主要文件 (1) jadeBin.zip 包含處于可用狀態(tài)的預(yù)先編譯好的JADE Java jar文件; (2) jadeDoc.zip 包含程序員參考手冊,這些文件可以方便地從網(wǎng)上進(jìn)行下載; (3)jadeExamples. zip包含各種實(shí)例的源代碼; (4) jadeSrc. zip包含所有JADE的源代碼; (5) jadeAlI.

17、zip包含以上所列出的所有4個(gè)文件。Copyright Weiqin Ying25n將上述zip文件下載和解壓后,形成的目錄結(jié)構(gòu)主要包括: jade/lib文件夾: 包括運(yùn)行JADE平臺(tái)時(shí)必須包含在Java CLASSPATH路徑中的*jar文件。 JADE 4.3.1版本中主要是lib/jade.jar,它要包含在Java CLASSPATH路徑中 jade/src目錄: 包含4個(gè)子目錄。 JADE子目錄包含所有JADE平臺(tái)自身的源碼;FIPA子目錄包含與FIPA規(guī)范相關(guān)的模塊的源碼;Demo子目錄包含一段簡單演示的源碼;Examples包含幾個(gè)有用的Agent源碼片段;Copyright

18、Weiqin Ying26n要啟動(dòng)平臺(tái),用戶必須首先設(shè)置其本地Java CLASSPATH路徑,即設(shè)置Java虛擬機(jī)尋找編譯好的類文件(即.class和.jar文件)的目錄路徑 與CLASSPATH相關(guān)的問題仍然是許多JADE初學(xué)者經(jīng)常遇到的問題,最典型的問題是由于CLASSPATH參數(shù)設(shè)置不正確所導(dǎo)致的“ClassNotFound”異常 同樣,為了在平臺(tái)上加載一個(gè)自定義的Agent,它的類文件也必須能在CLASSPATH目錄中找到Copyright Weiqin Ying27n例如,如果JADE被下載到Win7平臺(tái)上的D:jade JADE-all-4.3.1JADE-bin-4.3.1ja

19、de,CLASS PATH通??梢允褂孟铝忻钚羞M(jìn)行設(shè)置: prompt set JADE_HOME= D:jadeJADE-all-4.3.1 JADE-bin-4.3.1jade prompt set CLASSPATH= %JADE_HOME%lib jade.jar; D:jadetest;Copyright Weiqin Ying28nCLASSPATH設(shè)置好之后,可以使用下面的命令行啟動(dòng)主容器及其圖形界面( JADE GUI): prompt java jade.Boot -guin每次JADE啟動(dòng)時(shí), 首先顯示的是JADE免責(zé)聲明。 隨后,初始化所有JADE平臺(tái)標(biāo)準(zhǔn)服務(wù),以實(shí)現(xiàn)容

20、器提供的各項(xiàng)功能。 JADE啟動(dòng)的第一個(gè)容器一定是一個(gè)主容器,默認(rèn)啟動(dòng)一個(gè)HTTP MTP,并顯示其本地地址。 最后,一個(gè)名稱為“maincontainer”的容器準(zhǔn)備就緒,JADE平臺(tái)就可以投入使用了Copyright Weiqin Ying29 prompt Java jade. Boot - guiCopyright Weiqin Ying30n命令行選項(xiàng)- gui用以啟動(dòng)JADE主圖形界面 GUI實(shí)際上由一個(gè)稱為遠(yuǎn)程監(jiān)控Agent( Remote Monitoring Agent,RMA) 的JADE平臺(tái)中的一個(gè)特殊Agent提供的,平臺(tái)管理員可通過它操作和監(jiān)控運(yùn)行平臺(tái)。 RMA GU

21、I以及其他圖形工具的使用,會(huì)對(duì)系統(tǒng)的性能產(chǎn)生負(fù)面影響。這也是提供- gui選項(xiàng)的一個(gè)原因。如果非常關(guān)注系統(tǒng)性能時(shí),建議在啟動(dòng)時(shí)不要使用RMA GUI,僅限在需要監(jiān)視系統(tǒng)、調(diào)試的時(shí)候使用。Copyright Weiqin Ying31n現(xiàn)在,主容器已經(jīng)初始化,任何數(shù)量的其他容器可在不同主機(jī)上運(yùn)行組成一個(gè)平臺(tái)。 例如,如果主容器所在機(jī)器的主機(jī)名字是“anduril”,下面的-container選項(xiàng)將在當(dāng)前主機(jī)上創(chuàng)建一個(gè)非主容器,并將其附加到- host選項(xiàng)指定的主機(jī)上運(yùn)行的主容器。 promptjava jade.Boot -container -host andurilCopyright Wei

22、qin Ying32nJADE平臺(tái)源代碼以Java包和若干子包的層次結(jié)構(gòu)組織,原則上,每個(gè)包都包含實(shí)現(xiàn)某一特定功能的類和接口。主要的包有: (1) jade. core。它實(shí)現(xiàn)了JADE的內(nèi)核,即支持整個(gè)平臺(tái)及其工具運(yùn)行的分布式實(shí)時(shí)環(huán)境。它包括基本jadecore. Agent類以及構(gòu)建Agent容器所需的其他基本運(yùn)行時(shí)類。它還包括一系列子包,每個(gè)子包實(shí)現(xiàn)一個(gè)特定的內(nèi)核級(jí)服務(wù)。它們是:n jade. core. event。實(shí)現(xiàn)分布式事件通知服務(wù),它使得訂購者能夠得到平臺(tái)內(nèi)各種分布式組件生成的事件通知n jade. core.management。實(shí)現(xiàn)分布式Agent的生命周期管理服務(wù)。Cop

23、yright Weiqin Ying33 (1) jade. coren jade. core. messaging。實(shí)現(xiàn)分布式消息服務(wù)。n jade. core. mobility。實(shí)現(xiàn)Agent遷移和克隆服務(wù),包括agent狀態(tài)和代碼的轉(zhuǎn)移。n jade. core. nodeMonitoring。實(shí)現(xiàn)容器之間相互監(jiān)控,發(fā)現(xiàn)無法訪問或死亡的容器。n jade. core. replication。復(fù)制主容器,當(dāng)原來主容器發(fā)生各種錯(cuò)誤事件時(shí),能夠使用的一種故障恢復(fù)手段。n jade. core. behaviours。它是jade.core的一個(gè)子包,其中包含一個(gè)核心的、與應(yīng)用無關(guān)的獨(dú)立行為

24、層。一個(gè)JADE行為代表一個(gè)Agent可以執(zhí)行的任務(wù)Copyright Weiqin Ying34 (2) jade. content及其子包包含了支持程序員根據(jù)給定內(nèi)容語言和本體創(chuàng)建和操作復(fù)雜內(nèi)容表達(dá)式的類的集合。包括將JADE內(nèi)部表示形式自動(dòng)轉(zhuǎn)換為FIPA兼容消息內(nèi)容傳輸格式所需的編碼機(jī)制。 (3) jade. domain包含AMS和DF Agent的實(shí)現(xiàn),它們遵循FIPA標(biāo)準(zhǔn),但針對(duì)JADE進(jìn)行了特定擴(kuò)展。 (4) jade. gui包含一些通用的Java組件和圖標(biāo),可以用于為JADE Agent建立基于 Swing的圖形用戶界面。該包提供了幾個(gè)現(xiàn)成的圖形組件,用于顯示基本的JADE屬

25、性,如AID、ACLMessage和AgentDescription。Copyright Weiqin Ying35 (5) jade. imtp包含JADE IMTP (Internal Message Transport Protocol,內(nèi)部消息傳輸協(xié)議)的實(shí)現(xiàn)。 (6) jade.mtp包含了JADE MTP的實(shí)現(xiàn)及Java接口集。它包含兩個(gè)子包,一個(gè)基于HTTP協(xié)議(默認(rèn))的實(shí)現(xiàn),一個(gè)基于IIOP協(xié)議的實(shí)現(xiàn)。 (7) jade. lang. acl包含對(duì)FIPA Agent通信語言(Agent Communication Language,ACL)的支持,其中包括ACLMessage

26、類、解析器、解碼器,以及一個(gè)表示ACL消息模板的輔助類。Copyright Weiqin Ying36 (8) jade. proto包含了一些通用交互協(xié)議的實(shí)現(xiàn),包括一些由FIPA指定的協(xié)議。 (9) jade. tools包含了所有JADE圖形化工具的實(shí)現(xiàn)。 (10) jade. util包含了幾個(gè)實(shí)用工具類。Copyright Weiqin Ying37n根據(jù)FIPA規(guī)范,消息傳輸服務(wù)(MTS)是JADE平臺(tái)提供的三個(gè)最重要的服務(wù)之一(另外兩個(gè)分別是AMS和DF)。MTS管理所有平臺(tái)內(nèi)部和平臺(tái)之間的消息交換。 消息傳輸協(xié)議(Message Transport Protocols, MTP

27、) 內(nèi)部消息傳輸協(xié)議(Internal Message Transport Protocol, IMTP)Copyright Weiqin Ying38n為了提升不同平臺(tái)(如與非JADE平臺(tái))之間的互操作性,JADE實(shí)現(xiàn)了FIPA定義的所有標(biāo)準(zhǔn)消息傳輸協(xié)議(MTPs)。每個(gè)MTP包括一個(gè)傳輸協(xié)議定義和消息信封編碼標(biāo)準(zhǔn)n在JADE平臺(tái)啟動(dòng)時(shí),屏幕會(huì)顯示一個(gè)與下面文字類似的主容器信息提示: INFO:MTP addresses: http:/anduril:7778/aceCopyright Weiqin Ying39n默認(rèn)情況下,在初始化主容器時(shí),JADE一般會(huì)啟動(dòng)一個(gè)基于HTTP的MTP,而一

28、般容器沒有激活MTP。實(shí)際上是在主容器主機(jī)上創(chuàng)建一個(gè)服務(wù)器套接字,在前述信息提示中第二行指定的URL地址上監(jiān)聽HTTP協(xié)議上的傳入連接。n當(dāng)傳入連接已建立,并接收到一個(gè)通過該連接傳輸?shù)挠行r(shí),MTP將該消息傳送至最終目的地,一般是分布式平臺(tái)中的某個(gè)Agent。在平臺(tái)內(nèi)部,采用稱為內(nèi)部消息傳輸協(xié)議(Internal Message Transport ProtocoI,IMTP)的專用傳輸協(xié)議。Copyright Weiqin Ying40n使用命令行選項(xiàng),任何一個(gè)JADE容器都可以激活任何數(shù)量的MTPs,包括基于不同傳輸協(xié)議的MTPsnMTPs也可以通過RMA控制臺(tái)在運(yùn)行時(shí)激活和實(shí)例化。這

29、樣平臺(tái)管理員可以自由地控制拓?fù)浣Y(jié)構(gòu)Copyright Weiqin Ying41n當(dāng)在一個(gè)容器上激活一個(gè)新的MTP時(shí),整個(gè)JADE平臺(tái)獲得一個(gè)新的傳輸?shù)刂?,意味著一個(gè)新的端點(diǎn)可以用來接收平臺(tái)外部消息。這個(gè)地址也被添加到下面幾個(gè)數(shù)據(jù)結(jié)構(gòu)中: (1)平臺(tái)描述,通過使用get-description功能從AMS獲取 (2)包含在AMS庫中的所有ams-agent-description對(duì)象,通過搜索操作得到。 (3)本地Agent標(biāo)識(shí)符(AID),任何容器中的任何Agent都可以通過Agent類中的getAID()方法得到。Copyright Weiqin Ying42n某些應(yīng)用程序可能不需要任何本

30、地平臺(tái)外的通信。在這種情況下,命令行選項(xiàng)-nomtp會(huì)禁止在主容器中創(chuàng)建默認(rèn)的HTTP MTP。當(dāng)然,這將隔離平臺(tái)與遠(yuǎn)程平臺(tái)之間的外部交流。n值得注意的是,遠(yuǎn)程容器是指同一個(gè)平臺(tái)內(nèi)部,不與主容器運(yùn)行在同一主機(jī)上的容器。換句話說,一個(gè)遠(yuǎn)程容器不是一個(gè)遠(yuǎn)程平臺(tái)的一部分。為了獲得更好的內(nèi)部性能,同一個(gè)平臺(tái)內(nèi)的容器一般通過JADE IMTP進(jìn)行通信Copyright Weiqin Ying43nJADF內(nèi)部消息傳輸協(xié)議(Internal Message Transport Protocol,IMTP)專門用來在同一平臺(tái)上不同容器中的Agent之間交換消息。這與跨平臺(tái)MTPs有相當(dāng)大的不同。 首先,它只

31、用于平臺(tái)內(nèi)部通信,因此不需要與任何FIPA標(biāo)準(zhǔn)兼容。它可以是專用的,旨在提高平臺(tái)的性能。 實(shí)際上,JADE IMTP不僅用于傳輸消息,也用于傳送管理分布式平臺(tái)所需的內(nèi)部命令,以及監(jiān)控遠(yuǎn)程容器狀態(tài)。例如,它可以用于傳輸一個(gè)關(guān)閉某個(gè)容器的命令Copyright Weiqin Ying44n一般情況下,多Agent應(yīng)用是相當(dāng)復(fù)雜的。 它們往往分布在多個(gè)主機(jī),也許是由幾百個(gè)多線程進(jìn)程(即一個(gè)容器包含幾個(gè)Agent,每個(gè)Agent擁有自己的線程)組成的,隨著Agent的產(chǎn)生、消失和遷移等動(dòng)態(tài)變化這些因素都給多Agent的開發(fā)帶來了困難。n為了減少這些困難的影響,JADE通過事件通知服務(wù)構(gòu)建了一個(gè)基本的J

32、ADE RMA管理控制臺(tái)和一系列圖形化工具。這些工具被封裝在jade.tools中Copyright Weiqin Ying45n為了幫助理解平臺(tái)工具,以下代碼演示了一個(gè)簡單的HelloWorldAgent應(yīng)用。該應(yīng)用實(shí)現(xiàn)了該Agent的下述循環(huán)行為:每當(dāng)接收到消息時(shí),打印該消息到標(biāo)準(zhǔn)輸出,并回應(yīng)發(fā)送者一個(gè)“Hello!”消息。這里僅給出與Agent啟動(dòng)和通信相關(guān)的代碼n在編譯Agent后,可以通過下面的命令語句創(chuàng)建一個(gè)Agent,并運(yùn)行于指定的新容器。其中Peter是Agent本地名稱,HelloWorldAgent是完整的Java類名稱,這兩個(gè)參數(shù)用冒號(hào)隔開。 prompt java ja

33、de.Boot -container -host anduril Peter: HelloWorldAgentCopyright Weiqin Ying46Copyright Weiqin Ying47nJADE遠(yuǎn)程監(jiān)視Agent( Remote Monitoring Agent,RMA)是一個(gè)系統(tǒng)工具,實(shí)現(xiàn)了圖形化的平臺(tái)管理控制。 該工具由jade.tools.rma.rma類實(shí)現(xiàn),通常情況下,使用- gui選項(xiàng)的命令行直接啟動(dòng)。 它提供了一個(gè)可視化界面來監(jiān)控和管理由一個(gè)或幾個(gè)主機(jī)和容器節(jié)點(diǎn)組成的分布式JADE平臺(tái)。 它包括一個(gè)“工具”菜單,通過它可以啟動(dòng)其他工具。 同一個(gè)平臺(tái)上可以運(yùn)行多個(gè)

34、RMA實(shí)例,前提是分配給每個(gè)實(shí)例不同的Agent名稱。Copyright Weiqin Yingn在啟動(dòng)時(shí),RMA Agent向AMS訂購了全部平臺(tái)級(jí)事件;圖3.5所示為它的圖形化用戶界面。 主面的面板提供了一個(gè)平臺(tái)拓?fù)湟晥D,它用Agent作為葉子節(jié)點(diǎn)的容器樹描述。 該面板由jade.gui. AgentTree類實(shí)現(xiàn),并被大多數(shù)其他工具重復(fù)使用。 節(jié)點(diǎn)有三種類型:Agent平臺(tái)、容器和Agent。對(duì)于每個(gè)節(jié)點(diǎn),可以通過右鍵單擊該節(jié)點(diǎn),在彈出菜單上控制所代表的實(shí)體的生命周期。Copyright Weiqin Ying49Copyright Weiqin Ying50n如果一個(gè)Agent被選中,

35、彈出菜單允許Agent暫停、恢復(fù)、終止、復(fù)制、保存、凍結(jié)或者遷移到另一個(gè)容器。它也允許定制和發(fā)送一個(gè)用戶自定義的特殊消息。n如果選中一個(gè)容器,彈出菜單允許創(chuàng)建一個(gè)新的Agent,裝載現(xiàn)有的Agent,安裝或移除MTP,保存裝載容器及終止容器。按照前一節(jié)所述方法運(yùn)行RMA,我們可以嘗試創(chuàng)建一個(gè)新的稱為Bill的HelloWorldAgent,如圖3.6所示。n如果一個(gè)平臺(tái)被選中,彈出菜單允許查看平臺(tái)配置文件,即數(shù)據(jù)結(jié)構(gòu)(簡稱為AP),它描述了FIPA兼容平臺(tái),并列出平臺(tái)名稱和可提供的服務(wù)。該菜單還允許管理平臺(tái)MTPs,即從指定的容器上安裝和移除MTPs。Copyright Weiqin Ying

36、51Copyright Weiqin Ying52nDummyAgent是一個(gè)非常簡單的工具,通過發(fā)送自定義ACL消息激勵(lì)測試另一個(gè)Agent的行為。 它由類jade.tools.DummyAgent.DummyAgent實(shí)現(xiàn)。 它的唯一功能是發(fā)送和接收自定義信息,這些消息可通過一個(gè)簡單的GUI構(gòu)建,從一個(gè)文件加載或者保存到另一個(gè)文件。n當(dāng)一個(gè)應(yīng)用Agent啟動(dòng)后,可以用一個(gè)DummyAgent去刺激它,具體方法是發(fā)送用戶自定義的特殊消息并根據(jù)接收到的消息分析Agent的反應(yīng)。這是一個(gè)簡單而有效的工具,在應(yīng)用開發(fā)過程中廣泛使用。圖3.8所示為DummyAgent GUI,右側(cè)面板用于顯示發(fā)送和

37、接收消息列表,左邊的面板用來構(gòu)建自定義消息。Copyright Weiqin Ying53Copyright Weiqin Ying54n如果說其他調(diào)試工具大部分用于調(diào)試一個(gè)單一Agent,那么,嗅探(Sniffer)Agent工具用于多Agent調(diào)試,或者記錄多Agent之間的談話記錄。它由jade. tools. sniffer. Sniffer類實(shí)現(xiàn):“嗅探”向一個(gè)平臺(tái)AMS訂閱所有平臺(tái)事件通知、特定Agent內(nèi)部以及Agent之間的消息交換通知。n圖3.9為嗅探Agent的圖形化用戶界面。左邊的面板與RMA相同,用于瀏覽Agent平臺(tái)、選擇Agent進(jìn)行嗅探。右邊的面板提供了被嗅探的A

38、gent之間信息交換圖形化描述,其中一個(gè)箭頭代表一個(gè)消息,一種顏色代表一個(gè)對(duì)話。Copyright Weiqin Ying55Copyright Weiqin Ying56n當(dāng)用戶決定嗅探一個(gè)Agent或者一組Agent時(shí),發(fā)往或者來自該Agent/ Agent組的消息都被跟蹤和顯示在嗅探界面上。用戶可以選擇和查看每個(gè)消息的細(xì)節(jié),將消息作為一個(gè)文本文件保存至硬盤或者將整個(gè)會(huì)話序列化為二進(jìn)制文件n任何單一容器都可以啟動(dòng)多個(gè)嗅探Agent實(shí)例,既可以從RMA的工具菜單啟動(dòng),也可以使用下列的命令行啟動(dòng): prompt java jade.Boot -container host wying-PC m

39、ySniffer:jade.tools.sniffer.SnifferCopyright Weiqin Ying57n嗅探Agent對(duì)于嗅探、監(jiān)控和調(diào)試Agent之間的對(duì)話十分有用;自省Agent則用于調(diào)試單一Agent的行為。 這個(gè)工具一方面允許監(jiān)測一個(gè)Agent的生命周期和它的發(fā)送、接收消息隊(duì)列 它還允許監(jiān)測指定Agent的行為隊(duì)列,包括行為的單步執(zhí)行能力。請(qǐng)注意,一個(gè)行為步驟是指一個(gè)行為類實(shí)例的action()方法的執(zhí)行,而不是Java代碼的單步執(zhí)行??傊?,這個(gè)工具允許對(duì)一個(gè)Agent運(yùn)行進(jìn)行自省,即執(zhí)行哪些行為,哪些行為將放入阻塞隊(duì)列,以及監(jiān)測其對(duì)外界刺激(即收到的消息)的反應(yīng)。Copyright Weiqin Ying58Copyright Weiqin Ying59n日志管理器Agent是一種通過提供圖形界面簡化日志動(dòng)態(tài)和分布式管理的工具,并允許JADE平臺(tái)中每個(gè)組件的日志在運(yùn)行時(shí)改變,包括在遠(yuǎn)程節(jié)點(diǎn)上運(yùn)行的所有組件、應(yīng)用程序特定的日志信息。Copyright Weiqin Ying60Copyright Weiqin Ying61n事件通知服務(wù)( Event Notification Service,ENS)是一個(gè)平臺(tái)級(jí)的服務(wù),管理每個(gè)平臺(tái)節(jié)點(diǎn)生成的所有事

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論