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

        ?

        基于ActiveMQ通信的多租戶任務調(diào)度框架設計與實現(xiàn)

        2020-10-09 10:23:04蘇志宏
        電腦知識與技術 2020年18期

        摘要:任務調(diào)度被廣泛應用于軟件應用系統(tǒng)中,為了降低耦合度,解決多租戶任務調(diào)度系統(tǒng)中任務調(diào)度和執(zhí)行結(jié)果的及時通知問題,提出了在任務調(diào)度框架中應用ActiveMQ中間件構(gòu)建消息總線進行消息傳輸和通信的技術思路。內(nèi)容包括Ac-tiveMQ介紹、主流消息中間件比較、基于ActiveMQ通信的多租戶調(diào)度框架構(gòu)建以及框架實現(xiàn)。

        關鍵詞:多租戶;ActiveMQ;任務調(diào)度;消息中間件;低耦合

        中圖分類號:TP311 文獻標識碼:A

        文章編號:1009-3044(2020)18-0007-03

        開放科學(資源服務)標識碼(OSID):

        1 背景

        在數(shù)據(jù)傳輸及解譯、消息通知、可執(zhí)行程序調(diào)度等業(yè)務應用場景中,往往需要系統(tǒng)在指定時間進行特定操作,基于此類需求,任務調(diào)度框架被廣泛應用于軟件應用系統(tǒng)中。文獻[1-3]介紹了部分任務調(diào)度算法及任務調(diào)度框架構(gòu)建方法。但任務調(diào)度框架僅關注任務的調(diào)度及觸發(fā),對任務執(zhí)行過程、執(zhí)行結(jié)果信息的及時通知能力較為欠缺,尤其是在多并發(fā)、異步任務執(zhí)行時,出現(xiàn)任務執(zhí)行超時、中斷、異常的情況下,無法及時將任務執(zhí)行信息通知主系統(tǒng)進行自動處理,為調(diào)度系統(tǒng)的可靠性和可伸縮性帶來較大弊端,嚴重影響業(yè)務系統(tǒng)連續(xù)運行,增加了人力資源成本和維護成本。

        通過對ActiveMQ的研究與應用,解決多任務調(diào)度框架中出現(xiàn)的上述問題,通過ActiveMQ構(gòu)建消息總線,完成系統(tǒng)內(nèi)部通信及系統(tǒng)內(nèi)外通信交互,降低系統(tǒng)耦合度,提高系統(tǒng)任務調(diào)度執(zhí)行的可靠性。

        2 ActiveMQ概述

        ActiveMQ是由Apache基金會提供的基于Java語言開發(fā)的多協(xié)議開源消息中間件,支持OpenWire、Stomp、REST、WSNoti-fication、XMPP、AMQP等多種應用協(xié)議,可在Java、C、C++、C#、Rubv、Perl、Pvthon、PHP、.net等多種開發(fā)語言環(huán)境用使用,提供交叉語言功能,并可跨平臺應用。目前ActiveMQ已經(jīng)支持MQTT(消息隊列遙測傳輸)協(xié)議,可應用于物聯(lián)網(wǎng)設備。其基于JMS規(guī)范提供了多種消息類型的傳輸,包括無有效負載消息Message、序列化對象消息ObjectMessage、文本消息TextMes-sage、鍵值集消息MapMessage、字節(jié)消息BytesMessage、數(shù)據(jù)流消息StreamMessage等,基本滿足系統(tǒng)常用消息通信類型要求,同時對JDBC和Journal的支持也滿足了消息持久化的要求[4]。

        ActiveMQ消息通訊有兩種模式:主題(Topic)模式、隊列( Queue)模式。主題模式,亦可稱為發(fā)布/訂閱模式,這種模式下一個消息可以被多個訂閱者接收,訂閱者訂閱一個主題后,只能接收到自其訂閱之后發(fā)布的信息。訂閱者如果在發(fā)布者發(fā)送消息之后啟動,是無法接收到已經(jīng)發(fā)送的消息的,除非發(fā)布者已經(jīng)對消息進行了持久化存儲。隊列模式中,ActiveMQ構(gòu)建一個消息存儲隊列,多個發(fā)送端可同時向隊列中發(fā)送消息,隊列被多個接收端同時監(jiān)聽,但一個消息只能被一個接收端獲取,一旦被獲取就會消失,如果沒有被獲取,則會一直等待。

        ActiveMQ是站在開發(fā)者的角度被設計的,可以通過JCon-sole和ActiveMQ自帶的WebConsole工具等形式來監(jiān)控不同層面的數(shù)據(jù),可通過配置的方式快速集成到Spring框架中,對二次開發(fā)和調(diào)試十分友好。

        3 ActiveMQ框架及與主流消息中間件的對比

        3.1 ActiveMQ框架介紹

        ActiveMQ主框架部分從結(jié)構(gòu)上可大致分為協(xié)議連接域、消息域、信息存儲域和網(wǎng)絡服務域幾部分,總體架構(gòu)如圖1所示。

        其中協(xié)議連接域( Connectors)封裝各類通信協(xié)議,用于創(chuàng)建和管理與代理通信客戶端的連接;

        消息域(圖1 TopicRegion和Quene Region部分)封裝了Ac-tiveMQ的核心內(nèi)容,除主題模式和隊列模式兩種消息通信模式相關實現(xiàn)外,其最主要部分為Transports,包括Transport,Trans-portServer和TransportFactory等;

        消息存儲域( Message Store)定義了信息的緩存或持久化操作相關內(nèi)容,持久化操作方面支持AMQ Message Store、Ka-haDB、JDBC、LeveIDB及Journal,目前ActiveMQ的默認持久化存儲為AMQ Message Store;

        網(wǎng)絡服務域( Network Services)定義了用于支持代理的網(wǎng)絡服務組件,包括遠程服務檢測與發(fā)現(xiàn)、消息存儲和轉(zhuǎn)發(fā)、DR集群等。

        3.2 主流消息中間件對比

        目前消息中間件較多,且各具優(yōu)勢,比價突出的有Ac-tiveMQ、RabbitMQ、Kafka、RocketMQ,ZeroMQ等,在實際應用過程中應根據(jù)實際需求的優(yōu)先級進行選型,下面給出部分消息中間件的對比。

        4 多租戶調(diào)度框架中ActiveMQ應用

        4.1 多租戶調(diào)度框架設計

        基于ActiveMQ通信的多租戶調(diào)度框架可分為租戶應用、數(shù)據(jù)存儲、核心服務及業(yè)務操作四個主要部分,整體框架設計如圖2所示。

        其中租戶應用為用戶可視化操作界面,用于定義和操作調(diào)度業(yè)務,查看與監(jiān)控作業(yè)執(zhí)行狀態(tài)等。數(shù)據(jù)存儲部分將數(shù)據(jù)進行分區(qū)存儲,分為消息通信數(shù)據(jù)、任務調(diào)度數(shù)據(jù)、業(yè)務支撐數(shù)據(jù)。所有租戶操作均以消息形式通知ActiveMQ消息總線[6],為防止任務被重復執(zhí)行,系統(tǒng)通過隊列(Queue)模式向任務驅(qū)動模塊傳輸信息,任務調(diào)度端消息代理獲取到租戶信息后,進行指定任務定義并根據(jù)任務觸發(fā)器定義信息進行立即執(zhí)行或在指定時間執(zhí)行,各業(yè)務操作模塊均可使用獨立線程執(zhí)行,提高調(diào)度效率,降低系統(tǒng)耦合。任務執(zhí)行完成后,將執(zhí)行信息和結(jié)果寫回消息隊列,客戶端獲取后刷新狀態(tài)列表。

        對于系統(tǒng)租戶使用者,可通過操作界面直接調(diào)用已經(jīng)定義好的任務,通過任務開放式接口進行參數(shù)設置。對于二次開發(fā)者,可遵循頂層任務接口規(guī)范,自定義任務插件邏輯和處理流程,測試后上傳至任務插件庫自動加載供租戶使用。

        4.2 框架實現(xiàn)

        框架實現(xiàn)的核心是調(diào)度和通信。通過租戶ID與任務的關聯(lián),對任務加以區(qū)分和控制,系統(tǒng)調(diào)度部分采用Quartz中間件[7],租戶可通過可視化界面進行Quartz Job的定義與驅(qū)動[8],可根據(jù)業(yè)務需要擴展定義新的任務,在擴展定義時需遵循Quartz框架要求繼承和實現(xiàn)Job類,為了實現(xiàn)系統(tǒng)任務的動態(tài)加載和調(diào)度,在核心服務層定義了通用Job創(chuàng)建工廠類,通過反射模式創(chuàng)建任務。核心代碼如下:

        Class<!--? extends Job--> jobClass=new CascadingClassLoad-HelperO.loadClass(tempjob.geUobClassName0, Job.class);//動態(tài)加載任務

        JobDetail j obDetail= JobBuilder.newjob(j obClass).withldenti-ty(tempjob. getjobKey0, tempjob. getGroupKey0). withDescription(tempjob.getjobName O).build0;//創(chuàng)建任務

        Scheduler scheduler= SchedulerManager.getInstanceO.getDe-faultTemplatesO.getScheduler0;

        scheduler.schedulejob(j obDetail.trigger);//執(zhí)行任務

        上述代碼中,tempjob為反序列化的任務屬性信息,由租戶定義并經(jīng)消息總線傳輸至服務層進行處理,傳輸采用序列化文本信息。租戶應用端與任務端均具備消息的接收與發(fā)送能力,其中租戶應用端發(fā)送任務定義數(shù)據(jù),接收任務執(zhí)行狀態(tài)和結(jié)果信息,而任務端與之相反。ActiveMQ傳輸部分核心代碼如下:

        Templatejob tempjob=new Templatejob0. setName(”job”).setGroup("group”).setTrigger(”25”);//定義任務模板對象

        TextMessage message=session.createTextMessage(tempjob.toString0);//創(chuàng)建序列化任務消息對象

        producer.send(message);//發(fā)送消息

        ActiveMQ支持多種消息類型,在實際業(yè)務場景中可考慮使用多種消息類型混合的方式,加強通信能力。

        5 總結(jié)

        基于ActiveMQ通信的多租戶任務調(diào)度框架即可供用戶直接使用,又可作為基礎框架快速完成二次開發(fā),該框架可用性高、耦合度低,可適用于多種業(yè)務場景。在對于資源集約化高度要求的情境下,可考慮將通過該框架對一個業(yè)務體系中的所有可執(zhí)行任務進行統(tǒng)一管理調(diào)度,在框架通信穩(wěn)定性與服務高效性方面,可考慮ActiveMQ集群化部署配置,如何進行分布式執(zhí)行與調(diào)度、優(yōu)化負載均衡將是框架進一步的探究和擴展方向。

        參考文獻:

        [1]汪瑩,陳新鵬,基于集群計算的任務調(diào)度算法研究[Jl.現(xiàn)代計算機,2020(9):8-10,16.

        [2]王秀,孫忠林,姜莉.任務定時調(diào)度在企業(yè)級開發(fā)中的研究[J].電子科技,2015,28(10):100-102,107.

        [3]劉一田,劉士進.多租戶高可用并行任務調(diào)度框架[Jl.計算機系統(tǒng)應用,2016,25(12):280-284.

        [4] Apache ActiveMQ. ActiveMQ HomePage[EB/OL].[2020-03-02].http://activemq.apache.org.

        [5]Apache ActiveMQ. ActiveMQ Architecture[EB/OLl. [2020-03-02].http://activemq.apache.org/code-overview.

        [6]戴俊,朱曉民.基于ActiveMQ的異步消息總線的設計與實現(xiàn)[J].計算機系統(tǒng)應用,2010,19(8): 215,254-257.

        [7]張康.基于Quartz的分布式定時任務調(diào)度模塊的設計與實現(xiàn)[D].南京:南京大學,2019.

        [8]葉剛.基于Quartz的可視化定時任務管理方案[J].電子技術與軟件工程,2018(17):139-140.

        【通聯(lián)編輯:謝媛媛】

        作者簡介:蘇志宏(1987-),男,廣西南寧人,高級工程師,本科,主要研究方向為計算機應用技術、氣象與自然資源應用系統(tǒng)開發(fā)研究。

        亚洲中文字幕无码中字| 久久视频在线视频精品| 国产盗摄XXXX视频XXXX| 精品一区二区三区中文字幕在线 | 美女与黑人巨大进入免费观看| 女同性恋一区二区三区av| 国产精品黑丝高跟在线粉嫩| 久久国产劲爆∧v内射| 国产七十六+老熟妇| 看av免费毛片手机播放| 国产精品视频二区不卡| 精品日韩国产欧美在线观看| 最新精品国偷自产在线婷婷| 日韩精品欧美激情国产一区| 久久99人妖视频国产| 开心五月天第四色婷婷| 午夜时刻免费入口| 麻豆精品久久久久久久99蜜桃| 国产亚洲av人片在线观看| 亚洲AV无码成人品爱| 精品自拍偷拍一区二区三区| 久久精品国产亚洲av麻豆床戏| 欧美激情一区二区三区| 在线看亚洲十八禁网站| 亚洲av乱码一区二区三区女同| 中文字幕乱码熟女人妻在线 | 在线观看av网站永久| 福利体验试看120秒| 就国产av一区二区三区天堂| 日韩av在线不卡一二三区| 91国产自拍精品视频| 色综合久久蜜芽国产精品| 国产成人精品无码一区二区老年人 | 97超级碰碰碰久久久观看| 精品国精品自拍自在线| 欧美牲交a欧美牲交| 99久久久无码国产精品试看| 亚洲av午夜成人片精品| 国产精品黄色在线观看| 中文字幕一区二区精品视频 | 国产无套中出学生姝|