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