亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        開(kāi)源消息中間件復(fù)雜并發(fā)連接控制的研究與實(shí)現(xiàn)

        2016-02-07 06:06:13呂德奎崔艷軍
        關(guān)鍵詞:規(guī)則方法系統(tǒng)

        ◆呂德奎 崔艷軍

        (中國(guó)電子科技集團(tuán)公司第二十八研究所 江蘇 210007)

        開(kāi)源消息中間件復(fù)雜并發(fā)連接控制的研究與實(shí)現(xiàn)

        ◆呂德奎 崔艷軍

        (中國(guó)電子科技集團(tuán)公司第二十八研究所 江蘇 210007)

        消息中間件(Message-Oriented Middleware)是解決異構(gòu)分布式系統(tǒng)中通信與排隊(duì)的中間件技術(shù),ActiveMQ是一款基于Java語(yǔ)言的JMS規(guī)范的技術(shù)實(shí)現(xiàn),是一款企業(yè)級(jí)常用的JMS產(chǎn)品。本文研究了當(dāng)前ActiveMQ在涉及多廠家、跨平臺(tái)應(yīng)用時(shí),由于客戶端連接技術(shù)不統(tǒng)一、連接不規(guī)范、連接后不釋放、數(shù)據(jù)格式發(fā)送不符合規(guī)范等因素,碰到的ActiveMQ服務(wù)中心因阻塞而宕掉的問(wèn)題基礎(chǔ)上,分析了當(dāng)前幾種常用解決手段;依據(jù)JMX底層規(guī)范與實(shí)現(xiàn),設(shè)計(jì)并實(shí)現(xiàn)了一種基于JMX的客戶端連接問(wèn)題的解決方法與處理規(guī)范、提高ActiveMQ服務(wù)中心的運(yùn)行穩(wěn)定性。經(jīng)過(guò)大量的實(shí)際應(yīng)用,在數(shù)百家客戶端并發(fā)連接時(shí)、消息量達(dá)5千/秒以下時(shí)能夠保證ActiveMQ服務(wù)中心長(zhǎng)期有效的運(yùn)行,從而提高了企業(yè)應(yīng)用的基礎(chǔ)數(shù)據(jù)的連續(xù)性與穩(wěn)定性。

        ActiveMQ;消息總線;JMX;JMS;并發(fā)連接優(yōu)化

        0 引言

        隨著信息網(wǎng)絡(luò)的迅速發(fā)展,越來(lái)越多的公司、單位、組織建立了各種應(yīng)用系統(tǒng)和資源系統(tǒng),這些系統(tǒng)對(duì)推動(dòng)信息化的發(fā)展起了舉足輕重的作用,然而這些系統(tǒng)可能是建立在不同的環(huán)境下,如何進(jìn)行互操作和資源共享,成為了迫切需要解決的問(wèn)題。

        現(xiàn)有的應(yīng)用系統(tǒng)中,不同應(yīng)用之間通信存在以下問(wèn)題:一是通信雙方的環(huán)境如操作系統(tǒng)、協(xié)議等不同可能造成雙方無(wú)法進(jìn)行數(shù)據(jù)交換;二是服務(wù)器必須與客戶端保持連接通信的狀態(tài),被動(dòng)的等待遠(yuǎn)程客戶端的通信請(qǐng)求,因此性能隨著用戶數(shù)目的增加而不斷下降;三是存在因多用戶、多數(shù)據(jù)庫(kù)的連接,而導(dǎo)致系統(tǒng)死鎖和崩潰的潛在可能;四是明確發(fā)送和接收雙方調(diào)用的接口,一旦一方發(fā)生變化,必須在第一時(shí)間通知對(duì)方,否則會(huì)造成數(shù)據(jù)的丟失和通信的阻礙;五是程序更新維護(hù)難,一旦程序的變更,就需要對(duì)系統(tǒng)進(jìn)行重大修改,增加了維護(hù)和管理難度。

        為解決以上問(wèn)題,引進(jìn)了一個(gè)“中間層”,將系統(tǒng)的表示層、邏輯層和數(shù)據(jù)層分隔開(kāi)來(lái),成為獨(dú)立的單元,這個(gè)“中間層”就是中間件。系統(tǒng)的開(kāi)發(fā)者不需要將數(shù)據(jù)傳輸層和邏輯處理寫(xiě)入應(yīng)用程序中,只需通過(guò)中間件提供的API,將應(yīng)用程序與中間件、服務(wù)器有效快速的連接起來(lái),實(shí)現(xiàn)資源的共享和互操作。

        MOM(Message-Oriented Middleware(消息中間件)是解決異構(gòu)分布式系統(tǒng)中通信和排隊(duì)問(wèn)題的中間件技術(shù),ActiveMQ則是MOM的一個(gè)跨語(yǔ)言跨平臺(tái)實(shí)現(xiàn)[7],是一款常用的企業(yè)級(jí)JMS實(shí)現(xiàn)產(chǎn)品,因其實(shí)時(shí)性高,數(shù)據(jù)指標(biāo)接收速度快,取得了良好業(yè)績(jī)。但是當(dāng)涉及數(shù)百家單位、而且客戶端連接技術(shù)不統(tǒng)一、連接不規(guī)范、連接后不釋放、數(shù)據(jù)格式發(fā)送不符合規(guī)范等因素時(shí),會(huì)導(dǎo)致中心ActiveMQ每隔一個(gè)月左右因阻塞而宕掉。

        本文針對(duì)企業(yè)應(yīng)用現(xiàn)象,在分析了消息隊(duì)列中間件國(guó)內(nèi)外應(yīng)用現(xiàn)狀的基礎(chǔ)上,通過(guò)研究ActiveMQ的自身實(shí)現(xiàn)架構(gòu),主要以JMX(Java Management Extensions,Java管理擴(kuò)展)為主,通過(guò)Java、ActiveMQ的內(nèi)部設(shè)計(jì)機(jī)制,實(shí)現(xiàn)一種按照預(yù)先設(shè)計(jì)的規(guī)則庫(kù)監(jiān)控各連接客戶端并對(duì)不規(guī)則連接進(jìn)行優(yōu)化處理方法,保證ActiveMQ中心能夠長(zhǎng)期穩(wěn)定的運(yùn)行,保障監(jiān)控?cái)?shù)據(jù)的順利接收,提高了企業(yè)應(yīng)用的數(shù)據(jù)連續(xù)性與穩(wěn)定性。

        1 不規(guī)則并發(fā)連接問(wèn)題總計(jì)

        ActiveMQ是基于Java JMS的分布式、跨平臺(tái)的消息應(yīng)用平臺(tái)軟件,其使用方法與數(shù)據(jù)庫(kù)類似,需要先建立連接(Connection)與會(huì)話(Session),訪問(wèn)結(jié)束時(shí)需要顯式關(guān)閉連接和連接會(huì)話,當(dāng)客戶端因?yàn)槟撤N因素未執(zhí)行關(guān)閉時(shí)將會(huì)導(dǎo)致ActiveMQ服務(wù)中心因最大連接數(shù)耗盡而導(dǎo)致服務(wù)宕掉,從而影響系統(tǒng)應(yīng)用、導(dǎo)致企業(yè)數(shù)據(jù)的丟失等問(wèn)題。

        從上述分析可以了解,可以得出以下幾點(diǎn)結(jié)論:

        (1)ActiveMQ本身有連接數(shù)限制,據(jù)測(cè)試并發(fā)連接數(shù)達(dá)1500以上時(shí),ActiveMQ將會(huì)出現(xiàn)存取消息數(shù)據(jù)效率快速下降、無(wú)法建立新的連接等問(wèn)題。

        (2)JVM有大小限制,據(jù)測(cè)試ActiveMQ最大JVM為1G左右。

        (3)ActiveMQ 無(wú)法建立新連接,從而無(wú)法接收新的消息數(shù)據(jù)。

        (4)ActiveMQ的連接不關(guān)閉,可能導(dǎo)致會(huì)話死鎖。

        (5)ActiveMQ死鎖可能使消息數(shù)據(jù)無(wú)法消費(fèi),長(zhǎng)期導(dǎo)致JVM溢出,甚至導(dǎo)致服務(wù)宕掉。

        在上述結(jié)論基礎(chǔ)上,研究企業(yè)應(yīng)用現(xiàn)狀,可能導(dǎo)致大量并發(fā)數(shù)問(wèn)題產(chǎn)生的原因大致包括:

        (1)客戶端連接Connection使用完未關(guān)閉,下次使用建立新的連接Connection。

        (2)客戶端會(huì)話Session使用完未關(guān)閉,下次使用建立新的會(huì)話Session。

        (3)客戶端連接采用連接池技術(shù)(Pooled Connection)時(shí),當(dāng)應(yīng)用廠家眾多時(shí)如超過(guò)數(shù)百家,可能會(huì)導(dǎo)致連接資源耗盡。

        (4)客戶端發(fā)送未使用隊(duì)列,導(dǎo)致JVM溢出,導(dǎo)致新的Connection無(wú)法建立等情況。

        2 并發(fā)數(shù)優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)

        本節(jié)從ActiveMQ大量并發(fā)連接數(shù)下由于客戶端連接不合理帶來(lái)的問(wèn)題開(kāi)始分析,比較了幾種連接數(shù)問(wèn)題處理方法,最終提取并設(shè)計(jì)一種基于JMX規(guī)則庫(kù)的連接數(shù)優(yōu)化方案。

        2.1 幾種優(yōu)化方法的比較

        (1)顯式關(guān)閉連接和會(huì)話

        顯式關(guān)閉的應(yīng)用場(chǎng)景為客戶端能夠顯式關(guān)閉連接和會(huì)話,企業(yè)應(yīng)用時(shí)尤其現(xiàn)代化信息系統(tǒng)建設(shè)涉及跨廠家、跨平臺(tái),需要大量的應(yīng)用業(yè)務(wù)數(shù)據(jù)集成。各廠家接口開(kāi)發(fā)人員技術(shù)素質(zhì)參差不齊,多廠家接口開(kāi)發(fā)時(shí)間不一,尤其是測(cè)試不到位時(shí),將會(huì)經(jīng)常導(dǎo)致連接溢出現(xiàn)象,從而需要廠商接口進(jìn)行進(jìn)一步的優(yōu)化。

        ActiveMQ連接溢出將會(huì)對(duì)數(shù)據(jù)集成方帶來(lái)巨大應(yīng)用壓力,某一廠家接口問(wèn)題可能會(huì)導(dǎo)致全體數(shù)據(jù)的丟失,從而影響信息系統(tǒng)的整體使用。

        此種辦法要求開(kāi)發(fā)商嚴(yán)格按照標(biāo)準(zhǔn)技術(shù)進(jìn)行開(kāi)發(fā),此方式對(duì)集成方來(lái)說(shuō)屬于被動(dòng)式連接處理,實(shí)際情況因?yàn)榉N種因素可能短期內(nèi)不會(huì)有改善。

        (2)Server端連接關(guān)閉

        客戶端關(guān)閉方法是對(duì)技術(shù)的嚴(yán)格要求才能實(shí)現(xiàn)。Server端連接關(guān)閉由ActiveMQ服務(wù)應(yīng)用廠商進(jìn)行處理。Server端關(guān)閉的一般方法為,設(shè)計(jì)ActiveMQ 插件,利用ActiveMQ API提供的方法,獲得客戶端連接情況,并采取辦法進(jìn)行關(guān)閉。

        利用服務(wù)端ActiveMQ API關(guān)閉連接Connection,在很大程度上能夠解決連接未關(guān)閉的問(wèn)題,而且此方法為主動(dòng)式的關(guān)閉。

        但是當(dāng)連接出現(xiàn)死鎖時(shí),服務(wù)端ActiveMQ API可能會(huì)失效。

        2.2 優(yōu)化方法的設(shè)計(jì)與實(shí)現(xiàn)

        從2.1節(jié)兩種常用的解決情況分析來(lái)看,效果并不理想,甚至非常耗費(fèi)聯(lián)合調(diào)試精力。本節(jié)采用另一種Java底層機(jī)制設(shè)計(jì)并實(shí)現(xiàn)ActiveMQ連接數(shù)及JVM占有量的監(jiān)控與管理方法。

        JMX(jdk1.5默認(rèn)不開(kāi)啟,jdk1.6默認(rèn)開(kāi)啟)是一個(gè)為應(yīng)用程序、設(shè)備、系統(tǒng)等植入管理功能的框架。JMX可以跨越一系列異構(gòu)操作系統(tǒng)平臺(tái)、系統(tǒng)體系結(jié)構(gòu)和網(wǎng)絡(luò)傳輸協(xié)議,靈活的開(kāi)發(fā)無(wú)縫集成的系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理應(yīng)用。任何基于JVM運(yùn)行的應(yīng)用程序在一定條件下,不做任何代碼編寫(xiě),即可使用JMX對(duì)JVM相關(guān)參數(shù)及方法進(jìn)行監(jiān)控與管理,如:關(guān)閉線程、查看堆棧量、查看進(jìn)程內(nèi)部類數(shù)量等。

        ActiveMQ很好的實(shí)現(xiàn)了JMX協(xié)議,可以通過(guò)底層協(xié)議對(duì)其進(jìn)行監(jiān)控與管理。

        (1)設(shè)計(jì)

        基于JMX的ActiveMQ連接數(shù)優(yōu)化的設(shè)計(jì),主要包括:連接客戶端管理規(guī)則庫(kù)、ActiveMQ監(jiān)控參數(shù)、監(jiān)控處理方案等設(shè)計(jì)。

        圖1 監(jiān)控示意圖

        ①連接客戶端管理規(guī)則庫(kù)

        必須的定義:客戶端連接源(IP)、每個(gè)連接源最大連接數(shù)、處理規(guī)則、連接對(duì)象最近一次執(zhí)行時(shí)間、日志記錄規(guī)則等內(nèi)容。

        客戶端連接源用于確保連接ActiveMQ服務(wù)中心的連接對(duì)象處于授權(quán)狀態(tài),并且授權(quán)可建立的最大的連接數(shù),如機(jī)器A最大可建立10個(gè)連接,機(jī)器B最大可建立5個(gè)連接。當(dāng)機(jī)器連接超過(guò)規(guī)則庫(kù)配置的最大連接數(shù)時(shí),將會(huì)按照處理規(guī)則處理連接對(duì)象,如通過(guò)JMX技術(shù)手段,強(qiáng)制中斷該機(jī)器的所有連接對(duì)象等。

        ②ActiveMQ監(jiān)控參數(shù)

        監(jiān)控參數(shù):當(dāng)前連接數(shù)、當(dāng)前隊(duì)列堆積數(shù)、JVM內(nèi)存信息。監(jiān)控參數(shù)用于輔助查看當(dāng)前ActiveMQ運(yùn)行狀態(tài),當(dāng)出現(xiàn)指標(biāo)偏離正?,F(xiàn)象時(shí),可以為處理規(guī)則提供一定的處理參考依據(jù)。比如當(dāng)前連接數(shù)超過(guò)ActiveMQ警戒值時(shí),通知處理規(guī)則進(jìn)行強(qiáng)制處理當(dāng)前所有連接對(duì)象,如中斷長(zhǎng)時(shí)間未執(zhí)行的連接對(duì)象。

        ③監(jiān)控處理方案

        處理規(guī)則庫(kù)一次性初始化加載,對(duì)ActiveMQ以心跳時(shí)間片輪詢方式定期監(jiān)控其連接狀態(tài),當(dāng)異常時(shí),利用規(guī)則庫(kù)進(jìn)行處理。

        (2)實(shí)現(xiàn)

        根據(jù)規(guī)則配置庫(kù),當(dāng)出現(xiàn)連接異常時(shí),如超過(guò)機(jī)器授權(quán)最大連接數(shù)時(shí)或超過(guò)ActiveMQ警戒值時(shí),對(duì)ActiveMQ并發(fā)連接進(jìn)行規(guī)則處理,下面是獲取連接數(shù)以及強(qiáng)制關(guān)閉連接客戶端的偽代碼。

        ①查詢當(dāng)前所有連接對(duì)象

        ②強(qiáng)制停止連接對(duì)象

        3 結(jié)束語(yǔ)

        ActiveMQ是Apache旗下一款JMS工具,支持.NET、C++、Java等多種訪問(wèn)方式,在企業(yè)級(jí)系統(tǒng)中大量應(yīng)用,又因其實(shí)時(shí)性高,數(shù)據(jù)指標(biāo)接收速度快,取得了良好業(yè)績(jī)。但當(dāng)涉及數(shù)百家單位、而且客戶端連接不規(guī)范等因素時(shí),會(huì)導(dǎo)致中心ActiveMQ服務(wù)阻塞而宕掉。本文通過(guò)以JMX的基礎(chǔ)技術(shù),利用規(guī)則管理庫(kù)的思想,通過(guò)底層技術(shù)層面與業(yè)務(wù)規(guī)則相結(jié)合的手段,保障ActiveMQ中心在連接Connection問(wèn)題下能夠長(zhǎng)期穩(wěn)定的運(yùn)行,保障監(jiān)控?cái)?shù)據(jù)的順利接收。與此同時(shí),本文的設(shè)計(jì)思路可為其他Java應(yīng)用提供了一個(gè)良好的參考與借鑒。

        另外,本文僅對(duì)并發(fā)連接數(shù)及相關(guān)的狀態(tài)做了一定研究與實(shí)驗(yàn),后續(xù)需要進(jìn)一步對(duì)其他參數(shù)進(jìn)行研究,爭(zhēng)取實(shí)現(xiàn)ActiveMQ全方位管理,達(dá)到更好的應(yīng)用效果。

        [1]Sun Mierosystems.Java Message Service Specifi ca-tion. http://java.sun.com/Products/ims.

        [2]Apache ActiveMQ.http://activemq.apache.org.

        [3]邱云.基于JMS的信息發(fā)布平臺(tái)的研究與實(shí)現(xiàn)[D].電子科技大學(xué),2005.

        [4]汪紅兵,佘春東,范植華,李磊,徐帆江.基于JMS的數(shù)據(jù)推送系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2005.

        [5]彭珍,曾廣周.基于JMS規(guī)范的群組通信中間件的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005.

        [6]張帆.基于JMS的消息中間件的設(shè)計(jì)[D].武漢理工大學(xué),2007.

        [7]戴俊.基于ActiveMQ的異步消息總線的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010.

        [8]李英芳.基于網(wǎng)絡(luò)報(bào)稅系統(tǒng)的消息隊(duì)列中間件的研究與設(shè)計(jì)[D].西安電子科技大學(xué),2006.

        猜你喜歡
        規(guī)則方法系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        撐竿跳規(guī)則的制定
        數(shù)獨(dú)的規(guī)則和演變
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        讓規(guī)則不規(guī)則
        Coco薇(2017年11期)2018-01-03 20:59:57
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        TPP反腐敗規(guī)則對(duì)我國(guó)的啟示
        可能是方法不對(duì)
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        亚洲精品视频1区2区| 国产成年女人特黄特色毛片免| 亚洲啪啪色婷婷一区二区| 免费不卡无码av在线观看| 精品人妻伦九区久久aaa片69| 中文字幕亚洲精品第1页| 亚洲中文字幕一区高清在线| 亚洲国产a∨无码中文777| 无码一区二区三区在线| 久草午夜视频| 亚洲中久无码永久在线观看软件| 亚洲国产高清美女在线观看| 精品亚洲视频免费观看网站| 国产精品狼人久久影院软件介绍| 在线成人爽a毛片免费软件| 国产黄色片在线观看| 色播在线永久免费视频网站| 精品人妻日韩中文字幕| 麻豆亚洲av熟女国产一区二| 日韩成人无码| jjzz日本护士| 天堂女人av一区二区| 美女扒开腿露内裤免费看| 人妻 色综合网站| 另类亚洲欧美精品久久不卡 | 中文字幕影片免费在线观看| 久久中文字幕久久久久91| 人妖一区二区三区在线| 两个人看的www免费视频中文| 热久久亚洲| 国产在线视频一区二区三区| 欧美国产激情二区三区| 国产亚洲精品久久久久秋霞| 久久久国产精品粉嫩av| 青青草视频在线观看色| 熟妇丰满多毛的大隂户| 国产高清a| 和少妇人妻邻居做爰完整版| 痴汉电车中文字幕在线| 国产精品va无码一区二区| 韩日无码不卡|