Java SE 6 新特性:JMX與系統(tǒng)管理
前言
在Java 程序的運(yùn)行過(guò)程中,對(duì)JVM 和系統(tǒng)的監(jiān)測(cè)一直是 Java 開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程所需要的。一直以來(lái),Java 開(kāi)發(fā)人員必須通過(guò)一些底層的 JVM API,比如 JVMPI 和 JVMTI 等,才能監(jiān)測(cè) Java 程序運(yùn)行過(guò)程中的 JVM 和系統(tǒng)的一系列情況,這種方式一直以來(lái)被人所詬病,因?yàn)檫@需要大量的 C 程序和 JNI 調(diào)用,開(kāi)發(fā)效率十分低下。于是出現(xiàn)了各種不同的專門(mén)做資源管理的程序包。為了解決這個(gè)問(wèn)題,Sun 公司也在其 Java SE 5 版本中,正式提出了 Java 管理擴(kuò)展(Java Management Extensions,JMX)用來(lái)管理檢測(cè) Java 程序(同時(shí) JMX 也在 J2EE 1.4 中被發(fā)布)。Java SE 6 新特性中我們看到了JMX與系統(tǒng)管理方面的改進(jìn)。
在Java SE 6 新特性中,JMX 的提出,讓 JDK 中開(kāi)發(fā)自檢測(cè)程序成為可能,也提供了大量輕量級(jí)的檢測(cè) JVM 和運(yùn)行中對(duì)象/線程的方式,從而提高了 Java 語(yǔ)言自己的管理監(jiān)測(cè)能力。
JMX 和系統(tǒng)管理
管理系統(tǒng)(Management System)
要了解Java SE 6 新特性中的JMX,我們就必須對(duì)當(dāng)前的 IT 管理系統(tǒng)有一個(gè)初步的了解。隨著企業(yè) IT 規(guī)模的不斷增長(zhǎng),IT 資源(IT resource)數(shù)量不斷增加,IT 資源的分布也越來(lái)越分散。可以想象,甚至對(duì)于一家只有幾百臺(tái) PC 公司的 IT 管理人員來(lái)說(shuō),分發(fā)一個(gè)安全補(bǔ)丁并且保證其在每臺(tái) PC 上的安裝,如果只依賴人工來(lái)完成那簡(jiǎn)直就是一場(chǎng)噩夢(mèng)。這樣,IT 管理系統(tǒng)就應(yīng)運(yùn)而生。
然而,CPU、網(wǎng)卡、存儲(chǔ)陣列是 IT 資源;OS、MS Office、Oracle database、IBM Websphere 也是 IT 資源。IT 管理系統(tǒng)若要對(duì)這些 IT 資源進(jìn)行管理,就必須對(duì)這些管理對(duì)象有所了解:形形色色的 IT 資源就像是說(shuō)著不同語(yǔ)言的人:Oralce 數(shù)據(jù)庫(kù)表達(dá)內(nèi)存緊張的方式和 Window XP 是絕然不同的, 而 IT 管理系統(tǒng)就像建造通天塔的經(jīng)理,必須精通所有的語(yǔ)言, 這幾乎是一個(gè)不可能完成的任務(wù)。難道 IT 管理系統(tǒng)是另外一個(gè)通天塔嗎?當(dāng)然不是!其實(shí)我們只要給每個(gè) IT 資源配個(gè)翻譯就可以了。
管理系統(tǒng)的構(gòu)架
圖 1. 管理系統(tǒng)構(gòu)架
|
上圖分析了管理系統(tǒng)的基本構(gòu)架模式。其中 Agent / SubAgent 起到的就是翻譯的作用:把 IT 資源報(bào)告的消息以管理系統(tǒng)能理解的方式傳送出去。
也許讀者有會(huì)問(wèn),為什么需要 Agent 和 SubAgent 兩層體系呢?這里有兩個(gè)現(xiàn)實(shí)的原因:
管理系統(tǒng)一般是一個(gè)中央控制的控制軟件,而 SubAgent 直接監(jiān)控一些資源,往往和這些資源分布在同一物理位置。當(dāng)這些 SubAgent 把狀態(tài)信息傳輸?shù)焦芾硐到y(tǒng)或者傳達(dá)管理系統(tǒng)的控制指令的時(shí)候,需要提供一些網(wǎng)絡(luò)傳輸?shù)墓δ堋?
管理系統(tǒng)的消息是有一定規(guī)范的,消息的翻譯本身是件復(fù)雜而枯燥的事情。
一般來(lái)說(shuō),管理系統(tǒng)會(huì)將同一物理分布或者功能類似的 SubAgent 分組成一組,由一個(gè)共用的 Agent 加以管理。在這個(gè) Agent 里封裝了 1 和 2 的功能。
JMX 和管理系統(tǒng)
JMX 既是Java 管理系統(tǒng)的一個(gè)標(biāo)準(zhǔn),一個(gè)規(guī)范,也是一個(gè)接口,一個(gè)框架。圖 2 展示了 JMX 的基本架構(gòu)。
圖 2. JMX 構(gòu)架
|
【編輯推薦】