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

由應用系統發起一個異步批量的請求,請求很簡單只有一個節點一個任務,處理保存在數據庫中,由應用系統去查詢結果
2.2 應用級
應用級的批量是處理復雜業務系統的批量

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

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

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

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

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

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

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

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


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


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


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

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


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