国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JMX的Mule ESB管理控制臺(tái)

2012-04-29 00:44:03陳聰俞東進(jìn)
計(jì)算機(jī)時(shí)代 2012年3期
關(guān)鍵詞:遠(yuǎn)程管理

陳聰 俞東進(jìn)

摘要: 給出了一個(gè)符合JMX規(guī)范的Mule ESB管理控制臺(tái)的設(shè)計(jì)和實(shí)現(xiàn)方案。借助了該控制臺(tái)可以遠(yuǎn)程管理Mule ESB,查看Mule ESB服務(wù)器信息、Mule ESB及其服務(wù)的運(yùn)行時(shí)狀態(tài)和運(yùn)行日志,也可以遠(yuǎn)程調(diào)用部署在Mule ESB上的服務(wù)方法。該控制臺(tái)彌補(bǔ)了Mule ESB不提供遠(yuǎn)程管理的開源實(shí)現(xiàn)的不足。實(shí)驗(yàn)證實(shí),該控制臺(tái)運(yùn)行穩(wěn)定可靠。

關(guān)鍵詞: 企業(yè)服務(wù)總線; 遠(yuǎn)程管理; Java管理擴(kuò)展; 控制臺(tái)

中圖分類號(hào):TP311文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2012)03-25-03

Mule ESB console based on JMX

Chen Cong, Yu Dongjin

(School of Computer, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China)

Abstract: Enterprise Service Bus (ESB) in service-oriented architecture acts as intelligent integration and management agency between services. Mule ESB is a famous open source implementation of ESB. It is a lightweight messaging and integration platform implemented in Java. The authors presents in this article the design and implementation of a JMX-compliant Mule ESB management console. The console could remotely manage the Mule ESB server and display server information about Mule ESB deployments and its run-time status. It could call remotely Mule ESB and its services. The console could overcome the deficiency of open source implementation of Mule ESB. It runs steadily as the experiment shows.

Key words: Enterprise Service Bus; remote management; Java Management Extensions (JMX); console

0 引言

隨著信息化技術(shù)的快速發(fā)展、企業(yè)規(guī)模的不斷擴(kuò)大,企業(yè)應(yīng)用系統(tǒng)在逐漸增多,同時(shí)復(fù)雜性也在不斷增加。由于種種原因,如這些系統(tǒng)可能由不同的軟件廠商開發(fā)實(shí)施,各系統(tǒng)只關(guān)注各自領(lǐng)域內(nèi)的數(shù)據(jù)與業(yè)務(wù)處理,因此相互之間無法進(jìn)行信息共享和業(yè)務(wù)集成,形成了許多“信息孤島”,為此,很多企業(yè)迫切需要一種集成方法,以將各種舊的應(yīng)用系統(tǒng)和新的應(yīng)用系統(tǒng)集成起來。

面向服務(wù)架構(gòu)(Service-Oriented Architecture,SOA)繼承和發(fā)展了傳統(tǒng)體系結(jié)構(gòu),它能夠混合搭配多種執(zhí)行環(huán)境、使服務(wù)接口和執(zhí)行技術(shù)分離,從而使得IT部門可以為各項(xiàng)工作選擇最佳的執(zhí)行環(huán)境,并采用一致的架構(gòu)將它們結(jié)合在一起[1]。SOA架構(gòu)的驅(qū)動(dòng)力是集成、復(fù)用與協(xié)同。它可以使用戶不受限制地重復(fù)使用軟件,把各種資源互連起來。只要IT人員選用標(biāo)準(zhǔn)接口包裝舊的應(yīng)用程序,把新的應(yīng)用程序構(gòu)建成服務(wù),那么其他應(yīng)用系統(tǒng)就可以很方便地使用這些功能服務(wù)[2]。

為了更有效地管理和重用系統(tǒng)服務(wù),企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)被引入到SOA實(shí)踐中。企業(yè)服務(wù)總線在SOA中充當(dāng)服務(wù)間智能化的集成與管理中介[3],是基于面向服務(wù)架構(gòu)的基礎(chǔ)設(shè)施,是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物。第三方的程序組件能夠以標(biāo)準(zhǔn)的方式“插入”到企業(yè)服務(wù)總線上運(yùn)行,參與應(yīng)用集成的各方并不直接交互(請(qǐng)求者無須了解服務(wù)提供者的物理實(shí)現(xiàn)),而由總線負(fù)責(zé)將請(qǐng)求交付給提供所需功能和QoS的服務(wù)提供者。這樣,服務(wù)請(qǐng)求者和服務(wù)提供者的應(yīng)用程序邏輯就可以使用各種編程模型和技術(shù)調(diào)用或交付服務(wù),而無需考慮是直接連接還是通過企業(yè)服務(wù)總線傳遞的[4,5]。

Mule(www.mulesoft.org)是企業(yè)服務(wù)總線的一個(gè)最優(yōu)秀的開源實(shí)現(xiàn)之一。它是一個(gè)以Java為核心的輕量級(jí)的消息框架和整合平臺(tái),允許開發(fā)人員快速便利地連接多個(gè)應(yīng)用,并支持應(yīng)用間的數(shù)據(jù)交換。它支持集成現(xiàn)有系統(tǒng)而無論其底層采用何種技術(shù),如JMS、Web Services、JDBC、HTTP以及其他技術(shù)。Mule通過Transports/Connectors與外圍的異構(gòu)系統(tǒng)連接,提供Routing(路由)、Transaction Management(事務(wù)管理)、Transformation(轉(zhuǎn)換)、Message Broker(消息代理)、Transportation Management(傳輸管理)、Security(安全)等核心模塊。外圍系統(tǒng)的服務(wù)請(qǐng)求通過Mule ESB的Transport接入,Mule ESB通過Transformer進(jìn)行數(shù)據(jù)的格式轉(zhuǎn)換,然后經(jīng)過Inbound Router進(jìn)行消息過濾(內(nèi)部通過配置filter實(shí)現(xiàn))后交給Mule的Component等進(jìn)行業(yè)務(wù)邏輯處理。處理后的結(jié)果通過Outbound Router確定傳遞給哪個(gè)接收方,然后通過Transformer進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,再通過Transport連接至接收方。Mule ESB可以單獨(dú)使用,也可以架設(shè)在常用的應(yīng)用服務(wù)器上。

企業(yè)一旦在生產(chǎn)環(huán)境中部署了Mule ESB,那么對(duì)于Mule ESB和相關(guān)服務(wù)的管理和監(jiān)控就變得至關(guān)重要。隨著越來越多的應(yīng)用、服務(wù)部署在Mule ESB上,系統(tǒng)的復(fù)雜度會(huì)不斷提高,因此企業(yè)對(duì)于監(jiān)控系統(tǒng)性能和控制系統(tǒng)的需求也隨之而來。ESB的管理控制臺(tái),就是一款能提供一個(gè)非常方便的界面來幫助用戶管理和監(jiān)控ESB以及相關(guān)的各種服務(wù)的軟件。然而令人非常遺憾的是,Mule ESB沒有提供相應(yīng)免費(fèi)的管理控制臺(tái)軟件。

Java擴(kuò)展管理(Java Management Extensions,JMX)是由Sun公司提出的、面向應(yīng)用程序、設(shè)備和系統(tǒng)的集成化管理框架[6]。Mule ESB內(nèi)嵌了對(duì)JMX的支持,因此利用JMX API可以方便地對(duì)Mule ESB進(jìn)行遠(yuǎn)程監(jiān)控。

對(duì)于利用JMX實(shí)現(xiàn)分布式系統(tǒng)的實(shí)時(shí)監(jiān)控已有不少的研究。例如,Haihua Jiang等人[7],以及Abdelkader Lahmadi等人[8]都提出了采用JMX架構(gòu)實(shí)時(shí)監(jiān)控分布式應(yīng)用系統(tǒng)性能的方法。本文給出了基于JMX的Mule ESB管理控制臺(tái)的設(shè)計(jì)和實(shí)現(xiàn)方案,實(shí)驗(yàn)證明該方案是合理和可行的。

1 管理控制臺(tái)架構(gòu)設(shè)計(jì)

本文開發(fā)的企業(yè)服務(wù)總線控制臺(tái)針對(duì)Mule ESB開發(fā)。由于Mule ESB已經(jīng)實(shí)現(xiàn)了JMX內(nèi)核架構(gòu),因此我們只需要部署一個(gè)JMX代理應(yīng)用到Mule ESB的項(xiàng)目中,就可以通過開發(fā)JMX代理客戶端來監(jiān)控和控制Mule ESB的某些行為。另外,為了可以在管理控制臺(tái)方便地查閱Mule ESB的日志信息,需要改寫Mule ESB的日志行為,并將其運(yùn)行日志存儲(chǔ)到指定的數(shù)據(jù)庫(kù)中。

根據(jù)MVC分層思想,管理控制臺(tái)分為視圖層、控制層和模型層三層。其中,視圖層是展示和操作的用戶接口;控制層負(fù)責(zé)信息的轉(zhuǎn)發(fā);模型層可以進(jìn)一步分為兩部分:第一部分是JMX代理客戶端模型,該模型通過遠(yuǎn)程調(diào)用Mule ESB的JMX內(nèi)核實(shí)現(xiàn),用以規(guī)格化JMX的MBean,第二部分通過訪問數(shù)據(jù)庫(kù)獲得Mule ESB的日志信息。

管理控制臺(tái)的體系結(jié)構(gòu)如圖1所示。

圖1管理控制臺(tái)分層結(jié)構(gòu)

⑴ 視圖層:整個(gè)頁(yè)面框架使用EXT JS富客戶端框架技術(shù)搭建,所有的頁(yè)面內(nèi)容都通過異步的方式加載。

⑵ 控制層:使用Apache的Struts 2技術(shù)將請(qǐng)求映射根據(jù)業(yè)務(wù)的需求分類。該層是視圖和模型的適配中介,可將模型與具體的業(yè)務(wù)結(jié)合起來。

⑶ 模型層:可以分為數(shù)據(jù)庫(kù)模型和JMX代理客戶端模型兩大類。

● 數(shù)據(jù)庫(kù)模型:主要負(fù)責(zé)從日志數(shù)據(jù)庫(kù)獲取數(shù)據(jù),使用Mybatis 3來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。

● JMX代理客戶端模型:提供了對(duì)Mule ESB服務(wù)實(shí)時(shí)信息的獲取和對(duì)Mule ESB服務(wù)操作的調(diào)用功能。

2 JMX代理客戶端設(shè)計(jì)

JMX代理客戶端模型如圖2所示。

圖2JMX代理客戶端模型

其中,ProxyClient用于連接并與Mule ESB交互。ProxyFactory用于創(chuàng)建ProxyClient對(duì)象,并維護(hù)該對(duì)象的單例。ServiceContext為規(guī)格化后可對(duì)Mule ESB進(jìn)行重啟和關(guān)閉操作的上下文對(duì)象。Service則是規(guī)格化的Mule ESB服務(wù),具體的Service,如Connector、Configuration、Context等,可根據(jù)是否帶操作規(guī)格化為BeanModel和OperationalBean兩類,其中OperationalBean是BeanModel的擴(kuò)展。BeanModel中可以實(shí)時(shí)獲取Mule ESB對(duì)應(yīng)模塊的狀態(tài)數(shù)據(jù),而OperationalBean在獲取狀態(tài)數(shù)據(jù)的同時(shí)還能調(diào)用Mule的部分操作,用以控制Mule的行為。

為了加快客戶端的響應(yīng)速度,可對(duì)Mule ESB的CPU、內(nèi)存使用率等預(yù)先進(jìn)行緩存處理,即根據(jù)配置的刷新頻率和緩存的列表長(zhǎng)度,定時(shí)向Mule ESB請(qǐng)求數(shù)據(jù),并刷新緩存列表。相應(yīng)的實(shí)現(xiàn)步驟為:

⑴ 讀取配置文件,即讀取配置的Mule ESB的代理地址,攔截信息及緩存信息等。這些內(nèi)容由統(tǒng)一的工廠類PropertiesFactory加載,并保持單例。

⑵ ProxyClient根據(jù)代理地址連接到Mule,并創(chuàng)建緩存,其中ProxyClient由ProxyFactory來統(tǒng)一創(chuàng)建和維護(hù)。代碼如下。

public static ProxyClient getProxyClient() {

initProxyClient();

connect();

return PC;

}

其中initProxyClient方法保證了其對(duì)象的單例,即只有在對(duì)象未實(shí)例化時(shí)才會(huì)進(jìn)行實(shí)例化,否則直接返回已實(shí)例化的對(duì)象。而connect方法則只有在連接已經(jīng)中斷的情況下才會(huì)重新發(fā)起連接,否則只刷新數(shù)據(jù)。

⑶訪問時(shí),系統(tǒng)動(dòng)態(tài)地創(chuàng)建ServiceContext或者Service,通過ServiceContext提供的方法或者Service創(chuàng)建的模型來和Mule進(jìn)行交互。

ServiceContext為整個(gè)Mule ESB的上下文,目前只提供了重啟(restart)和關(guān)閉(close)兩個(gè)方法。Service則提供了一組模型化的服務(wù)模塊接口,可以通過這些接口來獲取每個(gè)服務(wù)的各個(gè)子模塊,代碼如下。

public String getServieName();

public BeanModel getConfiguration();

public List getConnectors();

public List getEndpoints();

public List getFlows();

public List getModels();

public OperationalBean getContext();

public List getStatistics();

public OperationalBean getWapperManager();

所有的模塊分為帶操作的模塊和不帶操作的模塊。不帶操作的模塊,只提供了所有屬性名和實(shí)時(shí)屬性的值的獲取功能。其接口定義見如下代碼。

public interface BeanModel {

public String getBeanName();

public List getProperties();

public Object getValue(String property);

}

而帶操作的模塊,則不僅可以獲取到屬性的名和其值,還能通過操作接口進(jìn)行操作調(diào)用。其接口定義見如下代碼。

public interface OperationalBean extends BeanModel {

public List getOperations();

public List getOperations(String opName);

public Object invoke(String operationName, List<

Parameter> params) throws Exception;

}

3 結(jié)果和分析

基于JMX的Mule ESB控制臺(tái)可分為五個(gè)部分:服務(wù)器狀態(tài)實(shí)時(shí)展示、項(xiàng)目應(yīng)用的展示和調(diào)用、服務(wù)調(diào)用日志的查詢、ESB歷史日志的查詢、ESB狀態(tài)的查看和ESB的管理(重啟和關(guān)閉)。

圖3項(xiàng)目應(yīng)用的展示和調(diào)用

圖3為項(xiàng)目應(yīng)用的展示和調(diào)用界面。界面左邊呈樹狀顯示,點(diǎn)擊某具體模塊時(shí),在左邊上部區(qū)域中展示其實(shí)時(shí)屬性及屬性值,下部區(qū)域中展示可供調(diào)用的方法,以及調(diào)用方法的操作按鈕。

ESB狀態(tài)圖展示了ESB中各服務(wù)中數(shù)據(jù)結(jié)點(diǎn)的實(shí)時(shí)調(diào)用情況(圖4)。控制臺(tái)默認(rèn)每10秒刷新訪問數(shù)據(jù)。

圖4Mule ESB實(shí)時(shí)運(yùn)行狀態(tài)查看

4 結(jié)束語

本文描述了一種遠(yuǎn)程監(jiān)控和管理Mule ESB的解決方案。該解決方案采用JMX方式進(jìn)行連接和操作Mule ESB。作為Java的標(biāo)準(zhǔn),API,JMX具有跨平臺(tái)的優(yōu)勢(shì),而且其性能及其穩(wěn)定性都能得到保證。

該控制臺(tái)還存在一些問題有待解決,例如,如何提高客戶端的體驗(yàn)效果,如何用更直觀的方式展示Mule ESB的狀態(tài)變化,如何采用更為直接和方便的方式提供模塊方法調(diào)用等等。

參考文獻(xiàn):

[1] Papazoglou MP, van den Heuvel WJ. Service oriented

architectures: Approaches, technologies and research issues [J].The VLDB Journal, the Int'l Journal on Very Large Data Bases, 2007, 16(3):389-415.

[2] 喻堅(jiān),韓燕波.面向服務(wù)的計(jì)算—原理和應(yīng)用[M].清華大學(xué)出版,

2006.

[3] 周曉艷.企業(yè)服務(wù)總線(ESB)在SOA中的應(yīng)用研究[D].大連海事大

學(xué),2009.

[4] Schmidt Marc-Thomas, Hutchison Beth, Lambros Peter, etc. The

enterprise service bus: Making service-oriented architecture real [J], IBM Systems Journal, 2005.44(4):781~797

[5] 曾文英, 趙躍龍, 齊德昱.?ESB原理、構(gòu)架、實(shí)現(xiàn)及應(yīng)用[J]. 計(jì)算機(jī)工

程與應(yīng)用,2008.25.

[6] Java Management Extensions (JMX) Technology [EB/OL], http://

www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html

[7] Haihua Jiang, Hai Lv, Nan Wang and Rihua Di. A Performance

Monitoring Solution for Distributed Application System Based on JMX[A]. Proc. Of 2010 Ninth International Conference on Grid and Cloud Computing, 2010.pp:124~127

[8] Abdelkader Lahmadi, Laurent Andrey and Olivier Festor.

Performance of Network and Service Monitoring Frameworks [C]. Proc. of 2009 IFIP/IEEE International Symposium on Integrated Network Management, 2009.pp:815~820

猜你喜歡
遠(yuǎn)程管理
GSM-R網(wǎng)絡(luò)SIM卡遠(yuǎn)程管理技術(shù)方案研究
基于無線組網(wǎng)技術(shù)的工業(yè)設(shè)備電源遠(yuǎn)程管理系統(tǒng)設(shè)計(jì)
朔黃線紅外線探測(cè)站設(shè)備遠(yuǎn)程管理系統(tǒng)建設(shè)
多媒體教室遠(yuǎn)程集控系統(tǒng)的設(shè)計(jì)
基于RaspberryPi的智能“魔鏡”
被忽視的遠(yuǎn)程管理模塊
基于ZigBee與移動(dòng)4G的小型安防系統(tǒng)研究與設(shè)計(jì)
三網(wǎng)融合下基于云媒體電視平臺(tái)的“慢性病遠(yuǎn)程管理服務(wù)系統(tǒng)”
Radmin在服務(wù)器遠(yuǎn)程管理中的應(yīng)用
西門子全新遠(yuǎn)程管理平臺(tái)使遠(yuǎn)程訪問安全簡(jiǎn)便
智能制造(2015年8期)2015-10-15 19:28:18
德江县| 许昌市| 务川| 武山县| SHOW| 邛崃市| 濉溪县| 马公市| 河池市| 乌兰浩特市| 和田市| 呼玛县| 通山县| 巫山县| 饶河县| 太湖县| 敖汉旗| 中阳县| 双江| 三原县| 托里县| 南溪县| 郴州市| 黄浦区| 西青区| 吉首市| 嘉荫县| 黄陵县| 宝丰县| 浮梁县| 霍城县| 福鼎市| 筠连县| 伊宁市| 平遥县| 上高县| 垦利县| 湘阴县| 黑河市| 故城县| 辽源市|