999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Quartz的集團化調度任務分布部署研究

2014-04-12 00:00:00張鵬白朝旭王錕郭濱梅峰劉紅娥
現代電子技術 2014年2期

摘 要: 集團化應用系統中定時任務需要處理的數據量大、任務數量多,為即時快速對所有數據進行處理,需要將任務進行分布部署運行。通過對Quartz調度框架和集群分布部署技術的分析和研究,提出了集團化應用系統任務調度基于Quartz的集群分布部署方案,通過將Quartz和Spring集成并對Quartz調度任務容器進行擴展,在MemCache上進行服務器狀態的更新,解決了大型應用系統定時任務的分布運行、故障處理問題。

關鍵字: Quartz; 任務調度; 集群; 分布部署

中圖分類號: TN911?34; TP393 文獻標識碼: A 文章編號: 1004?373X(2014)02?0080?04

0 引 言

各類應用系統中,都存在著多種類型的定時調度任務,自動進行業務和系統功能的處理,如報表統計、流程流轉、系統消息發送、系統運行監控、靜態文件生成等。目前大型集團化企業應用系統在向統一規劃、統一設計、統一開發、統一部署的大集中式云應用方向發展,通過統一的應用系統有利于進行集團內各分公司、下屬單位業務的統一,有效利用硬件資源,通過集群提高系統的可靠性。這類應用系統中的定時任務需處理的數據量較大、任務運行時間長,為了提高數據處理的效率,可能需要將同一任務根據數據來源、類型分成多個任務同時進行處理,在單個服務器上運行大量任務,系統的可靠性不能滿足,需要能將任務在多個集群服務器上進行分布部署運行。

JDK中的Timer、ScheduledExecutor是Java中實現定時調度任務的基礎方法,但由于其功能較為簡單,較難實現復雜的任務調度運行規則,在實際的應用開發中更多使用開源調度框架,如Quartz,Cron4j,JCronTab等,其中Quartz與Spring可以方便的集成,功能豐富,使用最為廣泛。但其運行規則配置為代碼級別,集群方式不能進行任務的指定服務器分布,不便于任務的運行管理,需要對其進行擴展。

1 Quartz調度框架

Quartz 是 OpenSymphony 開源組織在任務調度領域的一個開源項目,完全基于 Java 實現。該項目于 2009 年被 Terracotta 收購,目前是 Terracotta 旗下的一個項目。Quartz 為在 Java 應用程序中進行任務調度提供了簡單卻強大的機制,支持從小型獨立應用到大型企業級系統的各種類型Java應用。

1.1 Quartz基本概念

Quartz調度框架中核心元素包括Schedule,Job和Trigger。

Job用于表示被調度的任務,是定時執行的實際業務處理過程[2]。Quartz提供一個單方法的接口支持業務任務的實現。主要有兩種類型的Job:無狀態的(Stateless)和有狀態的(Stateful)。有狀態的Job不能被并行執行,只有上一次觸發的任務被執行完之后,才能觸發下一次執行。

Trigger是用于定義任務調度觸發條件,即按照什么時間規則去執行任務。Quartz中主要提供了四種類型的Trigger:SimpleTrigger,CronTirgger,DateIntervalTrigger和NthIncludedDayTrigger。這四種Trigger可以滿足企業應用中的絕大部分需求,最長用的是CronTrigger,可以通過Cron表達式進行調度的年、月、日、星期、時、分、秒及循環間隔的定義。Job必須關聯到Trigger上才能運行,一個Job可以被多個Trigger關聯,但是一個Trigger只能關聯一個Job。

Scheduler任務調度器是Quartz的核心,是調度任務的容器和管理器,Job和Trigger都需要注冊到Schedule上。Schedule負責任務調度器的初始化,進行任務的啟動、停止及任務數據、事件的管理。

1.2 Quartz與Spring基礎使用介紹

在J2EE系統中,Quartz可以與Spring方便的進行集成,Job由Spring統一進行關聯,可以方便地在Job中注入相關業務bean,并由Spring進行調度容器的初始化、加載全部Job和Trigger并啟動運行[3]。

Quartz和Spring基礎集成使用過程如下:

(1)通過Quartz的Job接口實現定時任務的業務功能,可引用Spring已定義的其他bean。

(2)在Spring applicationContext.xml中配置任務Bean,通過jobDataAsMap屬性為任務注入業務bean,樣例代碼如下:

//注入業務bean

(3)在Spring applicationContext.xml中配置任務運行的調度規則,樣例代碼如下:

//關聯定時任務bean

(4)在Spring applicationContext.xml中配置調度任務容器,樣例代碼如下:

//調度規則注冊到容器

按照以上步驟配置后,啟動中間件服務器,Spring會自動加載配置文件中已注冊的任務進行調度運行。根據以上配置過程可見,要添加、修改任務運行的調度規則,必須修改XML配置文件,需要重新啟動服務器才能生效,且不能配置同一任務在多個服務器分布運行,不適合實際應用系統的使用,因此需要對Quartz功能進行擴展,增強其集群分布運行能力,提高其可維護性。

2 集群分布部署

集群技術(Cluster技術)就是將多臺服務器用集群軟件連接在一起,組成一個高度透明的大型服務器群的計算機系統,作為一個整體為客戶端提供服務,客戶端能共享網絡上的所有資源,如數據或應用軟件等,同時客戶端的用戶并不關心其應用Server運行在那臺服務器上,只關心其應用Server是否能連續工作。當集群系統內某一臺服務器出現故障時,其備援服務器便立即接管該故障服務器的應用服務,繼續為前端的用戶提供服務。按照集群的部署情況可分為垂直集群和水平集群,垂直集群是在一臺服務器上部署多臺服務器,充分利用硬件資源。水平集群是利用多臺機器資源,每臺機器部署相同的應用。采用集群部署的目標有:

(1) 提高性能

一些計算密集型應用,需要計算機有很強的運算處理能力,現有的技術,即使普通的大型機其計算也很難勝任[4]。這時,一般都使用計算機集群技術,集中幾十臺甚至上百臺計算機的運算能力來滿足要求。提高處理性能一直是集群技術研究的一個重要目標之一。

(2) 降低成本

通常一套較好的集群配置,其軟硬件開銷要超過100 000美元。但與價值上百萬美元的專用超級計算機相比已屬相當便宜。在達到同樣性能的條件下,采用計算機集群比采用同等運算能力的大型計算機具有更高的性價比。

(3) 提高可擴展性

用戶若想擴展系統能力,不得不購買更高性能的服務器,才能獲得額外所需的CPU 和存儲器[5]。如果采用集群技術,則只需要將新的服務器加入集群中即可,對于客戶來看,服務無論從連續性還是性能上都幾乎沒有變化,好像系統在不知不覺中完成了升級。

(4) 增強可靠性

集群技術使系統在故障發生時仍可以繼續工作,將系統停運時間減到最小。集群系統在提高系統的可靠性的同時,也大大減小了故障損失。

3 基于Quartz的任務調度集群部署

3.1 Quartz擴展架構

根據前面的分析,要基于Quartz實現調度任務的集群分布部署,主要是要實現對任務調度規則Trigger在關系型數據庫中的配置,及調度管理器的擴展,將定時任務根據配置分配到多個服務器上運行[6]。同時對Quartz的任務接口進行擴展,增強Job通用功能,實現調度器運行狀態監測、調度故障轉移兩個默認的定時任務,負責保證任務運行的可靠性[7]。

為了在多個服務器間共享調度器運行狀態信息,調度器運行狀態監測任務將各服務器中啟動的調度器狀態定時更新到MemCache緩存服務器上。整體擴展架構如圖1所示。

數據層負責調度任務運行相關數據的存儲,關系型數據庫中存儲調度運行規則Trigger的配置信息,MemeCache緩存中存儲各調度服務器的運行狀態及各調度任務實際運行的IP地址。

基礎層是對Quartz基本元素Job擴展和對Trigger的配置功能,并在Job的擴展基礎上實現兩個基礎定時任務:調度器狀態監測和調度故障轉接,為調度器管理集群分布的調度任務提供基礎服務支持。對Job的擴展主要是增加任務運行狀態校驗、運行日志記錄、運行容錯處理功能,業務調度任務就基于此擴展Job進行實現,可將任務的通用功能和實際業務功能進行分離。同時提供兩個進行集群分布任務管理的內置任務實現,對任務運行的狀態進行監控,實現服務異常后的任務轉接運行。為支持Trigger的可視化配置,提供一套任務運行規則配置功能,為Trigger分配Job任務,配置Job運行的日期、時間、定時間隔、運行IP地址、端口及運行參數,同一個調度規則允許分配到多臺服務器同時運行。配置信息存儲到數據庫中,簡化了用戶的配置難度,并支持運行中的規則修改,由調度管理器根據配置信息進行Trigger的啟動,對IP、端口的配置不僅支持調度的水平集群部署,也支持調度的垂直集群部署。

管理層是調度任務集群分布部署的核心控制層,是對Schedule調度容器的控制擴展,定制Scheduler容器的初始化,根據數據庫中調度運行規則的配置,自動生成cron表達式,按照調度規則中的運行服務器IP、端口配置,啟動本服務器上應運行的任務規則,實現定時任務的集群分布運行。在啟動任務時將該任務運行規則的運行參數、任務運行服務器的IP、端口等信息添加到任務的運行數據中。

3.2 核心任務功能說明

定時任務在集群服務器上分布運行后,需要對調度器的運行狀態、各任務的運行狀態進行跟蹤,如發現調度異常,則對異常的任務轉移到備份服務器上進行運行。這一可靠性保障就是通過調度器狀態監測和調度故障轉接兩個核心任務來實現。

調度器狀態監測任務定時將本服務器調度運行狀態在MemCache上進行更新,本任務為內置任務,與調度器進行捆綁,調度器運行即啟動狀態監測任務。

調度故障轉接任務定時對MemCache上各調度器的運行狀態進行判斷,若發現某調度器狀態超期未進行更新,則根據調度規則配置,將安排在該服務器上運行的任務全部轉接到本服務器上進行運行,故障服務器正常運行后,轉接服務器上已轉接的任務進行停止。

3.3 分布部署結構

通過圖1的Quartz擴展架構可見集群分布部署時除業務任務進行分布外,還涉及到Schedule調度器、兩個內置調度任務、Trigger配置功能需要進行部署才能調度任務進行運行,整體部署結構如圖2所示。

4 結 論

本文通過對Quartz調度框架核心元素、集群分布部署的特點分析,及Quartz與Spring集成進行應用的過程分析,明確出了調度任務要在集群上分布部署的關鍵擴展方向,提出了對Quartz擴展的架構,并詳細說明了對Job、Trigger、Schedule的擴展內容,最后給出了在集群環境下Quartz調度任務的分布部署結構,為集團化企業應用系統的調度任務集群分布部署提供了實現案例參考。

參考文獻

[1] 鄭雪松,譚紅楊.Java作業調度應用實例分析[J].電腦知識與技術,2007,3(17):1348?1349.

[2] 胡利強,周冬初,王偉.Quartz調度器與Web程序整合的研究和應用[J].計算機與現代化,2010(8):95?99.

[3] 丁振凡,李馨梅.Spring的任務定時調度方法的研究比較[J].智能計算機與應用,2012,2(4):55?57.

[4] 饒浩,謝玄亮,林育東.支持集群部署的企業MIS系統架構分析與構建[J].現代制造工程,2010(9):22?25.

[5] 饒浩,謝玄亮.面向服務的企業信息系統集群部署方案[J].中國管理信息化,2009,12(14):81?82.

[6] 胡啟敏,薛錦云,鐘林輝.基于Spring框架的輕量級J2EE架構與應用[J].計算機工程與應用,2008,44(5):115?118.

[7] 張宇,王映輝,張翔南.基于Spring的MVC框架設計與實現[J].計算機工程,2010,36(4):59?62.

[8] 王波.ERP系統中郵件提醒定時器框架的設計與應用[J].現代電子技術,2012,35(6):25?27.

主站蜘蛛池模板: 国产亚洲高清视频| 亚洲中文精品久久久久久不卡| 无码aⅴ精品一区二区三区| 在线观看欧美国产| 日韩欧美视频第一区在线观看| 精品无码一区二区三区电影| 99视频全部免费| 91成人在线免费视频| 无码一区中文字幕| 久久动漫精品| 亚洲一级毛片在线观播放| 亚洲国模精品一区| 日韩毛片在线播放| 亚洲综合18p| 亚洲综合片| 国产门事件在线| 伊人久久大香线蕉aⅴ色| 精品日韩亚洲欧美高清a| 亚洲精品国产精品乱码不卞| AⅤ色综合久久天堂AV色综合| 亚洲成年人片| 亚洲V日韩V无码一区二区| 国产一级视频久久| 国产亚洲精久久久久久无码AV| 日本尹人综合香蕉在线观看| 91精品专区国产盗摄| 成人亚洲视频| 一本色道久久88综合日韩精品| 亚洲精品亚洲人成在线| 成人毛片免费观看| 亚洲欧美不卡中文字幕| 国产精品自在在线午夜| 国产chinese男男gay视频网| 国产精品白浆无码流出在线看| 日韩视频福利| 免费又黄又爽又猛大片午夜| 日韩高清成人| 91福利在线观看视频| 1024你懂的国产精品| 亚洲va在线∨a天堂va欧美va| 亚洲精品国产综合99久久夜夜嗨| 国产精品吹潮在线观看中文| 精品国产自在在线在线观看| 国产成人调教在线视频| 色天堂无毒不卡| 91精品亚洲| www.91在线播放| 又爽又大又光又色的午夜视频| 国产小视频a在线观看| 亚洲清纯自偷自拍另类专区| 4虎影视国产在线观看精品| 国产精品一区二区国产主播| 日本高清有码人妻| 五月天丁香婷婷综合久久| 99精品久久精品| a天堂视频| 永久天堂网Av| 日本亚洲成高清一区二区三区| www.国产福利| 欧美日韩国产在线观看一区二区三区| 日韩东京热无码人妻| 麻豆精选在线| 国产va在线观看| 亚洲一区国色天香| 国产男女免费完整版视频| 啪啪啪亚洲无码| 中文字幕伦视频| 亚洲成人在线网| 国产一区二区网站| a级毛片免费播放| 91无码人妻精品一区| 国产精品手机视频| 亚洲色偷偷偷鲁综合| 精品国产一二三区| 日本成人精品视频| Jizz国产色系免费| 免费中文字幕在在线不卡| 一级毛片在线播放免费| 日韩免费成人| 国产黄在线免费观看| 久久黄色免费电影| 国产拍揄自揄精品视频网站|