OpenHandX-Batch 1.02
企業(yè)級批量應用架構
2010-12-28
作者:彭明華
pengminghua@hotmail.com
本文檔中的任何部分都不得以任何手段任何形式進行復制與傳播。
目錄
1 為什么要批量架構
異步交易的概念相對于同步交易,同步交易是指BS/CS系統(tǒng)中當用戶點擊某個按鈕系統(tǒng)就能很快查詢出需要的信息,整個過程不需要長時間等待。隨著計算機系統(tǒng)的普及化,更高級業(yè)務需求,如:分析型的報表、復雜的數(shù)據(jù)加工被提了出來。如果再做成同步交易用戶可能需要等待幾十分鐘或數(shù)小時的時間,這顯然是不被接受的。這時就需要一個高效異步交易系統(tǒng)。異步交易是指用戶提交一個請求后系統(tǒng)很快返回提交成功的信息,隨后用戶可以繼續(xù)做其它的工作,提交的請求由后臺程序按照一定規(guī)則去處理,處理完成后用戶可以取到結果,整個過程用戶都不用刻意去等待因此是異步的。面對更高層的應用,更大的海量處理如:天氣預報的衛(wèi)星云圖、生物基因工程等計算。
傳統(tǒng)聯(lián)機架構只能處理響應較快的普通業(yè)務處理,對于耗時等復雜業(yè)務處理會造成服務器資源大量被占用,客戶端失去響應等嚴重問題。異步批量架構是解決復雜業(yè)務處理、數(shù)據(jù)分析、科學計算等耗時工作任務,這些任務被安排在特定的服務器上執(zhí)行,被統(tǒng)一規(guī)劃、拆分成子任務、統(tǒng)一調度、并發(fā)執(zhí)行,大大提高了執(zhí)行效率和可靠性,另外異步批量架構可以部署在網(wǎng)絡內(nèi)的任意服務器或PC上形成企業(yè)的云計算。
2 異步批量演化
2.1 初始級
初始級的批量是最簡單的異步批量

由應用系統(tǒng)發(fā)起一個異步批量的請求,請求很簡單只有一個節(jié)點一個任務,處理保存在數(shù)據(jù)庫中,由應用系統(tǒng)去查詢結果
2.2 應用級
應用級的批量是處理復雜業(yè)務系統(tǒng)的批量

某個應用發(fā)起一個批量請求到異步總控服務器,請求的業(yè)務邏輯是由復雜的節(jié)點圖定義,總控服務器根據(jù)節(jié)點圖定義拆分出多個任務,再發(fā)送給異步任務服務器群去并發(fā)執(zhí)行這些任務,總控服務器負責任務的拆分、分配、調度
2.3 企業(yè)級
企業(yè)級的批量面對的是整個企業(yè)所有系統(tǒng)批量,不再局限只對某個系統(tǒng)提供服務,可以看作是企業(yè)信息化的一種資源

異步總控服務器群要處理的不僅有多個應用系統(tǒng)批量請求,還可能有人為發(fā)起的批量請求,如:月終、年終報表等
2.4 云計算級

云計算級面向更大的理想應用,能提供絕對強大的運算能力,能對天氣預報、生物工程等海量數(shù)據(jù)進行運算。同時在同一網(wǎng)絡任何計算機終端很容易能加入到云計算系統(tǒng)中,這樣能合理利用資源減少投資。
3 企業(yè)級架構需要什么
既然作為企業(yè)級架構就就應該具有一套完整的機制,比如:安全性、健壯性、高性能、擴展性等。只有在此基礎上企業(yè)才能安全、有效、節(jié)省資源的情況下使用架構
3.1 安全性
企業(yè)級架構在數(shù)據(jù)存儲、傳輸過程中處于安全環(huán)境,不能被外界獲取,即使能獲取也是無價值的
3.2 健壯性
企業(yè)級架構為企業(yè)重要系統(tǒng)的提供支持,甚至是核心的一部分,在系統(tǒng)中運行的企業(yè)級架構要有高可靠性、健壯性。除此之外,根據(jù)系統(tǒng)需要還應該有及時有效的監(jiān)控機制,即使出現(xiàn)意外也應該有完善的應對方案
3.3 高性能
企業(yè)級架構一般部署在服務器上,企業(yè)級架構要能利用服務器提供的資源最大、最快程度完成交給的任務,并且能夠通過多個服務器機群并發(fā)解決單一服務器的性能制約
3.4 擴展性
企業(yè)級架構最少是面向企業(yè)某一領域的應用,除了架構本身提供的缺省實現(xiàn)方法,還要提供對特殊情況的支持
3.5 可移植性性
企業(yè)級架構不能僅局限于部署在某一類服務器或某一類操作系統(tǒng),企業(yè)級架構應該能在主流的服務器和操作系統(tǒng)中執(zhí)行,并且運用主流的操作方式和通訊協(xié)議
3.6 多種應用模式
企業(yè)級架構面向不同企業(yè),每個企業(yè)都有不同的情況和需求,這就需要企業(yè)級架能以各種模式來滿足不同的企業(yè)。企業(yè)級架構應該是由多個組件組成,每個組件都是松耦合,通過組件的不同組合方式滿足不同模式的需求
3.7 易操作性
企業(yè)級架構在必要情況下提供的方便、節(jié)約操作界面
4 OpenHandX-Batch企業(yè)級批量應用架構
OpenHandX-Batch 1.0是輕量級、可擴展的企業(yè)級異步批量框架。OpenHandX-Batch 1.0異步批量框架將共性的處理抽象化并提取出來,提供多種應用模式、并發(fā)、集群、多種節(jié)點圖任務運行等能力,開發(fā)者可以將更多注意力放到自己的業(yè)務層面。減少開發(fā)環(huán)節(jié)和周期。OpenHandX-Batch 1.0異步批量框架也可以當做企業(yè)的一種資源,將企業(yè)多個系統(tǒng)的異步批量部署到OpenHandX-Batch 1.0上,由OpenHandX-Batch 1.0統(tǒng)一支持和管理。
4.1 術語及名詞解釋
批量框架:OpenHandX-Batch 1.0異步批量框架的簡稱
事件:應用系統(tǒng)向批量框架發(fā)送一次批量的請求
節(jié)點:一個復雜的事件是由多個步驟,每個節(jié)點代表一個步驟
節(jié)點圖: 將多個節(jié)點按照某種邏輯關系組成運行流程,這個流程就叫節(jié)點運行圖或節(jié)點圖
任務:一個節(jié)點要執(zhí)行必須實例化成任務,一般一個節(jié)點可拆分成一個任務,但一個節(jié)點也可能是同一類任務的定義
4.2 特性
4.2.1 主要特性
l 支持多個應用系統(tǒng)-能將多個應用系統(tǒng)部署到同一個總控服務器或多個總控服務器,由總控服務器統(tǒng)一控制和管理
l 支持多個異步事件-總控服務器能同時執(zhí)行和監(jiān)控多個事件,通過事件權重、優(yōu)先級衡量和控制制服務器的資源
l 多批量任務并發(fā)-任務服務器同時支持來自多個總控服務器的任務,并行執(zhí)行這些任務
l 多種節(jié)點圖事件支持-總控服務器提供樹型和層型節(jié)點圖、單個任務類,復雜類型的事件可以通過節(jié)點圖配置工具來定義自己的運行順序圖,支持斷點續(xù)跑災難恢復
l 良好擴展性-從總控服務器、任務服務器、事件服務器都提供了豐富的接口,能對節(jié)點圖、事件和任務傳輸開發(fā)出業(yè)務個性的代碼
l 快速開發(fā)接口-任務服務器提供一個主要接口就能完成所有應用系統(tǒng)業(yè)務代碼的開發(fā),同時也提供對Spring框架的支持
l 健壯性-總控服務器的每個應用實例有自己的運行容器和運行線程,任務服務器也有自己的獨立任務容器和執(zhí)行線程,保證了每個獨立的應用或任務執(zhí)行出現(xiàn)意外不影響其它執(zhí)行的應用和任務。其次總控服務器還對每個應用和任務執(zhí)行進行監(jiān)控記錄,即使整個總控服務器宕機重起后能自動恢復上次運行的步驟繼續(xù)往下執(zhí)行
l 安全和密級-所有的批量工具提供用戶和密碼管理,任務和事件的xml傳輸協(xié)議都支持加密和壓縮
l 多種應用模式-完整的異步批量框架需要部署總控服務器、任務服務器、事件服務器,如果您不需要那么多的功能,可以靈活部署其中的任務服務器或任務服務器+總控服務器
l 豐富的監(jiān)控和分析工具-任務服務器、總控服務器、事件服務器都有自己的監(jiān)控和管理工具,能啟動、暫停、重起服務器。另外批量框架提供了對日志實時分析的工具,比如事件、節(jié)點、任務的運行狀態(tài)、完成進度
4.2.2 性能優(yōu)勢
l 總控服務器
1、總控服務器的事件接收、任務發(fā)送、任務信息接收,可以有3種配置模式:JMS服務器、數(shù)據(jù)庫服務器、內(nèi)存隊列,其中內(nèi)存隊列服務器效率最高、其次是JMS服務器
2、對于復雜耗時節(jié)點圖的解析可以采用異步接口的實現(xiàn),采用異步的方式提高總控服務器的相應速度
l 任務服務器
1、任務服務器的任務信息發(fā)送、任務接收,也同樣有3種配置模式:JMS服務器、數(shù)據(jù)庫服務器、內(nèi)存隊列,其中內(nèi)存隊列服務器效率最高、其次是JMS服務器
2、任務實例的執(zhí)行提供了獨立的執(zhí)行線程
3、任務實例由任務實例管理器統(tǒng)一管理,默認采用單實例模式一次創(chuàng)建多次執(zhí)行減小執(zhí)行中創(chuàng)建任務實例的開銷
4.3 平臺需求
OpenHandX-Batch 1.0需要:
l Java 5
l Servlet API 2.4 (可選)
l JSP API 2.0 (可選)
l Spring 2 (可選)
l JMS1.1(可選)
l OpenHandX common1.0.jar
4.4 OpenHandX批量架構邏輯結構
4.4.1 總體邏輯結構

l 事件由應用系統(tǒng)或事件中心創(chuàng)建,通過事件通訊服務器到達已部署的總控服務器
l 總控服務器將事件按照預先定義好的節(jié)點圖拆分、解析成任務,按照合適的條件再發(fā)送到任務通訊服務器,并記錄日志
l 任務服務器根據(jù)自身的資源情況從任務通訊服務器接受相應的任務去執(zhí)行
l 任務執(zhí)行完成后將記錄日志,并將完成后的任務信息發(fā)送回任務通訊服務器
l 總控服務器再從任務通訊服務器取回任務信息,判斷節(jié)點和事件的完成情況,如果未完成繼續(xù)后續(xù)節(jié)點的拆分和任務的發(fā)送,如果全部節(jié)點的任務完成則該事件完成
4.4.2 總控服務器內(nèi)部結構

l 一個總控服務器由部署的多個應用實例,總上下文、總的資源、配置管理組成
l 總控服務器以Task、Event對象的形式與外界傳輸數(shù)據(jù)
l 每個應用實例運行在自己獨立的應用容器里和獨立的線程,并且包含了多個不同的事件接收實例、應用上下文、應用資源、應用配置管理、事件接收管理、任務發(fā)送管理、任務信息接收管理
l 每個事件接收實例有自己獨立的節(jié)點圖解析器、任務拆分器、日志記錄器、任務發(fā)送驗證器、自己的上下文、自己的資源
4.4.3 任務服務器內(nèi)部結構

l 一個任務服務器由部署的多個應用實例,總上下文、總的資源、配置管理組成
l 總控服務器以Task對象的形式與外界傳輸數(shù)據(jù)
l 每個應用實例運行在自己獨立的應用容器里和獨立的守護線程,并且包含了多個任務實例、應用上下文、任務運行池、任務實例管理類、、任務信息發(fā)送管理、任務接收管理
l 每個任務實例有自己獨立的應用容器里和獨立的執(zhí)行線程、任務執(zhí)行類、日志記錄器、自己的上下文、自己的資源
4.5 節(jié)點模型
首先節(jié)點圖是由總控服務器來解析的,負責節(jié)點及任務的拆分和調度。總控服務器默認支持3種最常用的節(jié)點圖模型,開發(fā)人員也可以通過接口擴展支持新的節(jié)點圖模型。這3種節(jié)點圖模型是:單節(jié)點模型、樹型節(jié)點圖模型、層型節(jié)電圖模型。單節(jié)點模型是由一個節(jié)點組成,非常簡單。
4.5.1 樹型節(jié)點圖
樹型節(jié)點圖每個節(jié)點執(zhí)行都依賴父節(jié)點是否完成。樹型節(jié)點圖實際上更像網(wǎng)狀結構。通過節(jié)點之間關系建立緊密的聯(lián)系,這樣的好處是每個節(jié)點執(zhí)行完能很快執(zhí)行它下級節(jié)點,效率較高。但是節(jié)點關系過于緊密,因此創(chuàng)建樹型節(jié)點圖和維護的代價很大。
如:

假設這有7個節(jié)點,他們的關系如圖所示。整個節(jié)點圖執(zhí)行完一共需要14分鐘。
4.5.2 層型節(jié)點圖
層型節(jié)點圖像瀑布從上到下一批批地執(zhí)行完,只有前一層執(zhí)行完才能到下一層。這種結構關系相對簡單,易于創(chuàng)建和維護。但是如果分層不當,層內(nèi)會因某個節(jié)點非常費時而等待,從而影響整個執(zhí)行的效率。
如:

還是這7個節(jié)點,整個節(jié)點圖執(zhí)行完一共需要18分鐘。其實這節(jié)點5也可以放到第2層,但效率更低,需要21分鐘。
4.6 組件及功能

4.6.1 任務服務器
批量任務執(zhí)行的服務器
1、每個任務服務器實例都支持多線程、多應用系統(tǒng)、多服務器集群
2、通過任務的優(yōu)先級、權重管理任務服務器群的負載均衡
3、任務類運行方式有單體類模式、配置文件容器運行模式、spring容器管理模式,最優(yōu)化合理地利用資源
4、支持多數(shù)據(jù)源、多jms源、內(nèi)存隊列、多通道接受和發(fā)送任務
5、對于jms傳送xml任務信息支持加密和壓縮
4.6.2 任務服務器監(jiān)控
監(jiān)控當前任務服務器的運行狀態(tài)


1、可以停止、暫停、重起任務服務器
2、可以對部署在任務服務器上的應用單獨暫停
3、能查詢運行的任務數(shù)量、部署的應用、內(nèi)存應用情況、正在運行任務的狀態(tài)
4.6.3 總控服務器
處理批量事件的服務器,負責事件任務拆分、任務調度
1、默認支持樹型節(jié)點圖、層型節(jié)點圖、單個節(jié)點的任務拆分
2、支持多應用部署、多事件并發(fā)執(zhí)行
3、可以設置敏感度,是否時時響應每個應用的事件
4、任務錯誤后的終止、忽略、重跑三種重跑方式
5、通過事件的優(yōu)先級、權重管理總控服務器群的負載均衡
6、支持斷點續(xù)跑,支持災難恢復
7、對于jms傳送xml任務支持加密和壓縮
4.6.4 總控服務器監(jiān)控
監(jiān)控當前總控服務器的運行狀態(tài)


1、可以停止、暫停、重起總控服務器
2、可以對部署在總控服務器上的應用單獨暫停
3、能查詢運行的總控數(shù)量、部署的應用、正在運行的事件狀態(tài)
4.6.5 事件服務器和事件中心


可以給總控服務器的發(fā)送批量事件
1、人為發(fā)起的批量事件,如:月終、年終報表等
2、事件中心默認提供發(fā)起一個事件、發(fā)起多個事件、多個順序事件、發(fā)起周期事件,可以根據(jù)需要定制事件,事件服務器負責創(chuàng)建并發(fā)送
3、可以對多個總控或多個應用發(fā)送批量事件
4.6.6 節(jié)點圖編輯平臺

定義事件的節(jié)點運行圖
1、支持樹型、層型圖的節(jié)點圖定義
2、樹型節(jié)點圖支持圖嵌套,做到節(jié)點圖定義的重用
3、節(jié)點和圖都能配置業(yè)務參數(shù),節(jié)點可以配置運行模式、權重、互斥等信息
4、支持對多個應用定義節(jié)點運行圖
5、提供對已定義的節(jié)點圖可以圖形方式預覽
4.6.7 日志分析中心


分析批量運行的結果
1、能查詢到每個事件、節(jié)點、任務的日志信息
2、已不同的顏色區(qū)分當前事件、節(jié)點、任務運行的狀態(tài)
3、提供對日志進行分析,以列表和圖形方式展現(xiàn)事件的運行節(jié)點圖
4、時時刷新分析結果可以很直觀看到事件中的每個節(jié)點或任務的運行過程
5、支持多個應用的日志查詢和日志分析
4.7 應用模式
支持多組件插拔式部署,典型的3種模式如下:
初始級的批量服務-只要部署任務服務器就可以滿足需要,部署維護簡單
應用級的批量服務-需要部署多個任務服務器,一個總控服務器,如果需要監(jiān)控還要部署WEB的總控監(jiān)控組件和任務服務器監(jiān)控組件、日志分析中心
企業(yè)級的批量服務-部署所有組件,總控服務器和任務服務器的集群可以處理龐大的批量事件,加入事件服務器可以人為根據(jù)需要發(fā)起系統(tǒng)外批量程序
云計算級批量服務-在需要加入云計算的計算機安轉批量任務服務器客戶端并啟動她,即完成了云計算的部署。在網(wǎng)絡內(nèi)的個人pc也能加入云計算,這樣就為云計算提供靈活的、更多的資源
擴展模式-除了以上三種模式還可以根據(jù)實際情況組合自己需要的組件,也可以增加或減少總控服務器及任務服務器
下載地址:http://code.google.com/p/openhandx2/downloads/list
posted on 2009-09-02 15:15
彭明華 閱讀(2074)
評論(12) 編輯 收藏 所屬分類:
OpenHandX工具