Jolokia 教程 - part1(翻譯)

前言

JMX 是 Java 環(huán)境下系統(tǒng)管理的標(biāo)準(zhǔn)解決方案,從 jdk 1.5 開始,JMX 在所有 JVM 中都可用,企業(yè)級(jí)應(yīng)用服務(wù)器中甚至通過(guò) JVM 進(jìn)行管理。JMX 是一個(gè)精心設(shè)計(jì)的規(guī)范,在其它 EJB 規(guī)范轟轟烈烈的失敗的時(shí)候創(chuàng)建。在創(chuàng)建之后十年,JMX 仍然是 Java 環(huán)境下唯一的管理解決方案。JMX 豐富的 MBeans 實(shí)現(xiàn)方式和層次是它設(shè)計(jì)的亮點(diǎn),從簡(jiǎn)單的 標(biāo)準(zhǔn) MBean 到非常靈活的開放 MBeans 和 MXBeans

然而,JMX 里的一些概念直到過(guò)時(shí)也沒有被正式使用,比如 JSR-77 沒有達(dá)到發(fā)布標(biāo)準(zhǔn),JSR-160 被設(shè)計(jì)用于遠(yuǎn)程訪問(wèn) JMX,希望能夠隱藏通信細(xì)節(jié),讓遠(yuǎn)程和本地訪問(wèn) JMX 沒有卻別,但不幸的是 RMI 協(xié)議和編程模型以 Java 為中心,導(dǎo)致在 Java 環(huán)境外并不適用。這就是 Jolokia 的切入點(diǎn),它是基于 Agent 的,與 JSR-160 并存,但是它使用更加開放的 HTPP 協(xié)議,通過(guò) Json 協(xié)議序列化數(shù)據(jù)內(nèi)容。這為 非 Java 環(huán)境的客戶端打開了嶄新的世界。在協(xié)議之外,Jolokia 也為 遠(yuǎn)程 JMX 帶來(lái)了新特性:一次通信完成多個(gè) JMX 操作;只允許某些 JMX 操作的安全機(jī)制,其它一些特性比如 代理模式和歷史跟蹤對(duì)于 Jolokia 也是定制的。

這篇參考手冊(cè)詳細(xì)介紹了 Jolokia,第二章 介紹 Jolokia 的整體架構(gòu),第三章介紹 安裝和配置不同的 Jolokia 客戶,接下來(lái)的兩章介紹安全機(jī)制和代理模式。在第六章介紹了 Jolokia 客戶端實(shí)現(xiàn)者最感興趣的協(xié)議定義。Jolikia 預(yù)置的 MBeans 列表在第七章介紹,第八章列舉了可用的 Jolokia 客戶端。

第二章 - 架構(gòu)

Jolokia 的架構(gòu)與 JSR-160 的連接器有所不同,其中最厲害的是 Jolokia 無(wú)類型的連接方式。JSR-160 是2003年釋放,其設(shè)計(jì)目標(biāo)是定義一個(gè)客戶端標(biāo)準(zhǔn),可以以透明的方式調(diào)用遠(yuǎn)程或本地的 MBeanServer 中的Mbean。這給 JMX 客戶端提供了方便,但同時(shí)隱藏遠(yuǎn)程調(diào)用細(xì)節(jié)也存在一定風(fēng)險(xiǎn)。調(diào)用者應(yīng)該至少了解調(diào)用過(guò)程。同時(shí),RMI 傳遞實(shí)體類型,所以調(diào)用者需要明確知道實(shí)體結(jié)構(gòu),這增大了開發(fā)成本,所以在遠(yuǎn)程調(diào)用方面,RMI 漸漸失去了市場(chǎng)。

JSR-160 的問(wèn)題是依賴于 RMI,需要完成的 Java 對(duì)象序列化/反序列化機(jī)制,限制了客戶端必須使用 Java 環(huán)境。Jolokia 是采用無(wú)類型、輕量級(jí)的 Json 傳輸數(shù)據(jù)。盡管這種方式也有弊端,但利大于弊。

Agent 模式

下圖展示了 Jolokia 的 Agent 模式,Agent 可以調(diào)用本地的 MBeanServer 暴露 json 接口供外部調(diào)用,在客戶端上可以應(yīng)用不同的技術(shù)來(lái)展示通過(guò) Http 獲取的 JMX 數(shù)據(jù)。Agent 可以放到一個(gè)輕量級(jí)的 Servlet 容器中,像 Tomcat、Jetty 之類的,它和普通的 Web 應(yīng)用的行為一致,所以對(duì)于 Web 應(yīng)用開發(fā)人員來(lái)講非常熟悉。


除了放到 Servlet 容器之外,Jolokia 也可以定義特殊的 Agent,比如實(shí)現(xiàn) OSGi 或者內(nèi)置 Jetty 服務(wù)器。Agent 的詳細(xì)內(nèi)容在第三章中描述。

Jolokia 也可以集成到 Web 應(yīng)用中,jolokia-core 庫(kù)作為一個(gè) Jar 包,提供一個(gè) Servlet,加入到 Web 應(yīng)用中之后就可以訪問(wèn)。

代理模式

代理模式為了解決不能向目標(biāo)應(yīng)用加入 Agent 的情況,可能由于不能改變目標(biāo)應(yīng)用,或者目標(biāo)應(yīng)用已經(jīng)暴露了 JMX 調(diào)用。一個(gè)專用的 Servlet 代理服務(wù)器來(lái)部署 jolokia.war, Tomcat 或 Jetty 是非常好的選擇。

下圖展示了代理模式,客戶端發(fā)送標(biāo)準(zhǔn)的 Jolokia 請(qǐng)求給 代理,請(qǐng)求中包含了路由信息,所以代理服務(wù)器中也不需要額外進(jìn)行配置。


綜上,代理模式應(yīng)該僅在必要時(shí)使用,Agent 模式比代理模式更為高效,因?yàn)榇砟J皆黾恿艘淮沃虚g轉(zhuǎn)發(fā),增加了復(fù)雜性,而且有些功能,比如合并 MBeanServers 在代理模式下不能使用。

第三章 - Agents

Jolokia 是基于 Agent 訪問(wèn) JMX 的方式,需要安裝 agent 來(lái)訪問(wèn) JMX,agent 可以安裝到目標(biāo)應(yīng)用上,也可以安裝到獨(dú)立的 Servlet 容器中,作為代理,訪問(wèn)目標(biāo)應(yīng)用。一共有四種不同類型的 agents.

War Agent: 以 War 包的形式分發(fā)和部署

OSGi Agent

Mule Agent

JVM Agent

應(yīng)用集成 Jolokia Agent:通過(guò)加入 jolokia-core 可以將 Agent 集成到 web 應(yīng)用中,方便使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,501評(píng)論 0 10
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,262評(píng)論 6 342
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,852評(píng)論 0 3
  • 雖已立冬,但仍就一番晚秋景象,仍舊暖暖冬陽(yáng)。 我喜歡坐在獐子島南門前的階梯上抬頭看遠(yuǎn)方天際飛機(jī)劃出美麗的軌跡。以及...
    四毛姐姐閱讀 264評(píng)論 0 3

友情鏈接更多精彩內(nèi)容