• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于JMX的Mule ESB管理控制臺

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

      陳聰 俞東進

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

      關(guān)鍵詞: 企業(yè)服務總線; 遠程管理; Java管理擴展; 控制臺

      中圖分類號:TP311文獻標志碼:A 文章編號: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ī)模的不斷擴大,企業(yè)應用系統(tǒng)在逐漸增多,同時復雜性也在不斷增加。由于種種原因,如這些系統(tǒng)可能由不同的軟件廠商開發(fā)實施,各系統(tǒng)只關(guān)注各自領(lǐng)域內(nèi)的數(shù)據(jù)與業(yè)務處理,因此相互之間無法進行信息共享和業(yè)務集成,形成了許多“信息孤島”,為此,很多企業(yè)迫切需要一種集成方法,以將各種舊的應用系統(tǒng)和新的應用系統(tǒng)集成起來。

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

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

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

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

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

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

      1 管理控制臺架構(gòu)設(shè)計

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

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

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

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

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

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

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

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

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

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

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

      圖2JMX代理客戶端模型

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

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

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

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

      public static ProxyClient getProxyClient() {

      initProxyClient();

      connect();

      return PC;

      }

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

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

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

      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();

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

      public interface BeanModel {

      public String getBeanName();

      public List getProperties();

      public Object getValue(String property);

      }

      而帶操作的模塊,則不僅可以獲取到屬性的名和其值,還能通過操作接口進行操作調(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)實時展示、項目應用的展示和調(diào)用、服務調(diào)用日志的查詢、ESB歷史日志的查詢、ESB狀態(tài)的查看和ESB的管理(重啟和關(guān)閉)。

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

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

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

      圖4Mule ESB實時運行狀態(tài)查看

      4 結(jié)束語

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

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

      參考文獻:

      [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] 喻堅,韓燕波.面向服務的計算—原理和應用[M].清華大學出版,

      2006.

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

      學,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)架、實現(xiàn)及應用[J]. 計算機工

      程與應用,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

      猜你喜歡
      遠程管理
      基于物聯(lián)網(wǎng)云平臺的公路施工適應性及遠程管理研究
      GSM-R網(wǎng)絡SIM卡遠程管理技術(shù)方案研究
      基于無線組網(wǎng)技術(shù)的工業(yè)設(shè)備電源遠程管理系統(tǒng)設(shè)計
      多媒體教室遠程集控系統(tǒng)的設(shè)計
      基于RaspberryPi的智能“魔鏡”
      被忽視的遠程管理模塊
      基于ZigBee與移動4G的小型安防系統(tǒng)研究與設(shè)計
      三網(wǎng)融合下基于云媒體電視平臺的“慢性病遠程管理服務系統(tǒng)”
      Radmin在服務器遠程管理中的應用
      西門子全新遠程管理平臺使遠程訪問安全簡便
      智能制造(2015年8期)2015-10-15 19:28:18
      宜阳县| 团风县| 泰州市| 衡阳县| 迁安市| 宣武区| 象山县| 九龙坡区| 和政县| 泽库县| 遂川县| 浏阳市| 昭苏县| 鸡泽县| 津南区| 廊坊市| 孝义市| 黄骅市| 古交市| 榕江县| 浪卡子县| 苍溪县| 双牌县| 新邵县| 永兴县| 游戏| 布拖县| 湘潭市| 阿瓦提县| 安顺市| 济宁市| 鄂尔多斯市| 永丰县| 巴里| 昭通市| 宜川县| 修水县| 海兴县| 淮南市| 江津市| 三原县|