<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 11  文章 - 79  trackbacks - 0
    <2009年9月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    歡迎合作

     

    聯(lián)系方式:openhandx@foxmail.com

     

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

     

     

     

     

      OpenHandX-Batch 1.02

    企業(yè)級批量應(yīng)用架構(gòu)

     

     

     

     

     

    2010-12-28

     

    作者:彭明華

    pengminghua@hotmail.com

     

    本文檔中的任何部分都不得以任何手段任何形式進(jìn)行復(fù)制與傳播。

    目錄

     

    1          為什么要批量架構(gòu)

     

     

    異步交易的概念相對于同步交易,同步交易是指BS/CS系統(tǒng)中當(dāng)用戶點(diǎn)擊某個(gè)按鈕系統(tǒng)就能很快查詢出需要的信息,整個(gè)過程不需要長時(shí)間等待。隨著計(jì)算機(jī)系統(tǒng)的普及化,更高級業(yè)務(wù)需求,如:分析型的報(bào)表、復(fù)雜的數(shù)據(jù)加工被提了出來。如果再做成同步交易用戶可能需要等待幾十分鐘或數(shù)小時(shí)的時(shí)間,這顯然是不被接受的。這時(shí)就需要一個(gè)高效異步交易系統(tǒng)。異步交易是指用戶提交一個(gè)請求后系統(tǒng)很快返回提交成功的信息,隨后用戶可以繼續(xù)做其它的工作,提交的請求由后臺程序按照一定規(guī)則去處理,處理完成后用戶可以取到結(jié)果,整個(gè)過程用戶都不用刻意去等待因此是異步的。面對更高層的應(yīng)用,更大的海量處理如:天氣預(yù)報(bào)的衛(wèi)星云圖、生物基因工程等計(jì)算。

    傳統(tǒng)聯(lián)機(jī)架構(gòu)只能處理響應(yīng)較快的普通業(yè)務(wù)處理,對于耗時(shí)等復(fù)雜業(yè)務(wù)處理會造成服務(wù)器資源大量被占用,客戶端失去響應(yīng)等嚴(yán)重問題。異步批量架構(gòu)是解決復(fù)雜業(yè)務(wù)處理、數(shù)據(jù)分析、科學(xué)計(jì)算等耗時(shí)工作任務(wù),這些任務(wù)被安排在特定的服務(wù)器上執(zhí)行,被統(tǒng)一規(guī)劃、拆分成子任務(wù)、統(tǒng)一調(diào)度、并發(fā)執(zhí)行,大大提高了執(zhí)行效率和可靠性,另外異步批量架構(gòu)可以部署在網(wǎng)絡(luò)內(nèi)的任意服務(wù)器或PC上形成企業(yè)的云計(jì)算。

     

    2          異步批量演化

    2.1       初始級

    初始級的批量是最簡單的異步批量

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

    2.2       應(yīng)用級

    應(yīng)用級的批量是處理復(fù)雜業(yè)務(wù)系統(tǒng)的批量


    某個(gè)應(yīng)用發(fā)起一個(gè)批量請求到異步總控服務(wù)器,請求的業(yè)務(wù)邏輯是由復(fù)雜的節(jié)點(diǎn)圖定義,總控服務(wù)器根據(jù)節(jié)點(diǎn)圖定義拆分出多個(gè)任務(wù),再發(fā)送給異步任務(wù)服務(wù)器群去并發(fā)執(zhí)行這些任務(wù),總控服務(wù)器負(fù)責(zé)任務(wù)的拆分、分配、調(diào)度

    2.3       企業(yè)級

    企業(yè)級的批量面對的是整個(gè)企業(yè)所有系統(tǒng)批量,不再局限只對某個(gè)系統(tǒng)提供服務(wù),可以看作是企業(yè)信息化的一種資源

    異步總控服務(wù)器群要處理的不僅有多個(gè)應(yīng)用系統(tǒng)批量請求,還可能有人為發(fā)起的批量請求,如:月終、年終報(bào)表等

     2.4      云計(jì)算級





    云計(jì)算級面向更大的理想應(yīng)用,能提供絕對強(qiáng)大的運(yùn)算能力,能對天氣預(yù)報(bào)、生物工程等海量數(shù)據(jù)進(jìn)行運(yùn)算。同時(shí)在同一網(wǎng)絡(luò)任何計(jì)算機(jī)終端很容易能加入到云計(jì)算系統(tǒng)中,這樣能合理利用資源減少投資。

     

     

     

    3          企業(yè)級架構(gòu)需要什么

    既然作為企業(yè)級架構(gòu)就就應(yīng)該具有一套完整的機(jī)制,比如:安全性、健壯性、高性能、擴(kuò)展性等。只有在此基礎(chǔ)上企業(yè)才能安全、有效、節(jié)省資源的情況下使用架構(gòu)

    3.1       安全性

    企業(yè)級架構(gòu)在數(shù)據(jù)存儲、傳輸過程中處于安全環(huán)境,不能被外界獲取,即使能獲取也是無價(jià)值的

    3.2       健壯性

    企業(yè)級架構(gòu)為企業(yè)重要系統(tǒng)的提供支持,甚至是核心的一部分,在系統(tǒng)中運(yùn)行的企業(yè)級架構(gòu)要有高可靠性、健壯性。除此之外,根據(jù)系統(tǒng)需要還應(yīng)該有及時(shí)有效的監(jiān)控機(jī)制,即使出現(xiàn)意外也應(yīng)該有完善的應(yīng)對方案

    3.3       高性能

    企業(yè)級架構(gòu)一般部署在服務(wù)器上,企業(yè)級架構(gòu)要能利用服務(wù)器提供的資源最大、最快程度完成交給的任務(wù),并且能夠通過多個(gè)服務(wù)器機(jī)群并發(fā)解決單一服務(wù)器的性能制約

    3.4       擴(kuò)展性

    企業(yè)級架構(gòu)最少是面向企業(yè)某一領(lǐng)域的應(yīng)用,除了架構(gòu)本身提供的缺省實(shí)現(xiàn)方法,還要提供對特殊情況的支持

    3.5       可移植性性

    企業(yè)級架構(gòu)不能僅局限于部署在某一類服務(wù)器或某一類操作系統(tǒng),企業(yè)級架構(gòu)應(yīng)該能在主流的服務(wù)器和操作系統(tǒng)中執(zhí)行,并且運(yùn)用主流的操作方式和通訊協(xié)議

    3.6       多種應(yīng)用模式

    企業(yè)級架構(gòu)面向不同企業(yè),每個(gè)企業(yè)都有不同的情況和需求,這就需要企業(yè)級架能以各種模式來滿足不同的企業(yè)。企業(yè)級架構(gòu)應(yīng)該是由多個(gè)組件組成,每個(gè)組件都是松耦合,通過組件的不同組合方式滿足不同模式的需求

    3.7       易操作性

    企業(yè)級架構(gòu)在必要情況下提供的方便、節(jié)約操作界面

    4          OpenHandX-Batch企業(yè)級批量應(yīng)用架構(gòu)

    OpenHandX-Batch 1.0是輕量級、可擴(kuò)展的企業(yè)級異步批量框架。OpenHandX-Batch 1.0異步批量框架將共性的處理抽象化并提取出來,提供多種應(yīng)用模式、并發(fā)、集群、多種節(jié)點(diǎn)圖任務(wù)運(yùn)行等能力,開發(fā)者可以將更多注意力放到自己的業(yè)務(wù)層面。減少開發(fā)環(huán)節(jié)和周期。OpenHandX-Batch 1.0異步批量框架也可以當(dāng)做企業(yè)的一種資源,將企業(yè)多個(gè)系統(tǒng)的異步批量部署到OpenHandX-Batch 1.0上,由OpenHandX-Batch 1.0統(tǒng)一支持和管理。

    4.1       術(shù)語及名詞解釋

    批量框架:OpenHandX-Batch 1.0異步批量框架的簡稱

    事件:應(yīng)用系統(tǒng)向批量框架發(fā)送一次批量的請求

    節(jié)點(diǎn):一個(gè)復(fù)雜的事件是由多個(gè)步驟,每個(gè)節(jié)點(diǎn)代表一個(gè)步驟

    節(jié)點(diǎn)圖: 將多個(gè)節(jié)點(diǎn)按照某種邏輯關(guān)系組成運(yùn)行流程,這個(gè)流程就叫節(jié)點(diǎn)運(yùn)行圖或節(jié)點(diǎn)圖

    任務(wù):一個(gè)節(jié)點(diǎn)要執(zhí)行必須實(shí)例化成任務(wù),一般一個(gè)節(jié)點(diǎn)可拆分成一個(gè)任務(wù),但一個(gè)節(jié)點(diǎn)也可能是同一類任務(wù)的定義

    4.2       特性

    4.2.1    主要特性

    l        支持多個(gè)應(yīng)用系統(tǒng)-能將多個(gè)應(yīng)用系統(tǒng)部署到同一個(gè)總控服務(wù)器或多個(gè)總控服務(wù)器,由總控服務(wù)器統(tǒng)一控制和管理

    l        支持多個(gè)異步事件-總控服務(wù)器能同時(shí)執(zhí)行和監(jiān)控多個(gè)事件,通過事件權(quán)重、優(yōu)先級衡量和控制制服務(wù)器的資源

    l        多批量任務(wù)并發(fā)-任務(wù)服務(wù)器同時(shí)支持來自多個(gè)總控服務(wù)器的任務(wù),并行執(zhí)行這些任務(wù)

    l        多種節(jié)點(diǎn)圖事件支持-總控服務(wù)器提供樹型和層型節(jié)點(diǎn)圖、單個(gè)任務(wù)類,復(fù)雜類型的事件可以通過節(jié)點(diǎn)圖配置工具來定義自己的運(yùn)行順序圖,支持?jǐn)帱c(diǎn)續(xù)跑災(zāi)難恢復(fù)

    l        良好擴(kuò)展性-從總控服務(wù)器、任務(wù)服務(wù)器、事件服務(wù)器都提供了豐富的接口,能對節(jié)點(diǎn)圖、事件和任務(wù)傳輸開發(fā)出業(yè)務(wù)個(gè)性的代碼

    l        快速開發(fā)接口-任務(wù)服務(wù)器提供一個(gè)主要接口就能完成所有應(yīng)用系統(tǒng)業(yè)務(wù)代碼的開發(fā),同時(shí)也提供對Spring框架的支持

    l        健壯性-總控服務(wù)器的每個(gè)應(yīng)用實(shí)例有自己的運(yùn)行容器和運(yùn)行線程,任務(wù)服務(wù)器也有自己的獨(dú)立任務(wù)容器和執(zhí)行線程,保證了每個(gè)獨(dú)立的應(yīng)用或任務(wù)執(zhí)行出現(xiàn)意外不影響其它執(zhí)行的應(yīng)用和任務(wù)。其次總控服務(wù)器還對每個(gè)應(yīng)用和任務(wù)執(zhí)行進(jìn)行監(jiān)控記錄,即使整個(gè)總控服務(wù)器宕機(jī)重起后能自動恢復(fù)上次運(yùn)行的步驟繼續(xù)往下執(zhí)行

    l        安全和密級-所有的批量工具提供用戶和密碼管理,任務(wù)和事件的xml傳輸協(xié)議都支持加密和壓縮

    l        多種應(yīng)用模式-完整的異步批量框架需要部署總控服務(wù)器、任務(wù)服務(wù)器、事件服務(wù)器,如果您不需要那么多的功能,可以靈活部署其中的任務(wù)服務(wù)器或任務(wù)服務(wù)器+總控服務(wù)器

    l        豐富的監(jiān)控和分析工具-任務(wù)服務(wù)器、總控服務(wù)器、事件服務(wù)器都有自己的監(jiān)控和管理工具,能啟動、暫停、重起服務(wù)器。另外批量框架提供了對日志實(shí)時(shí)分析的工具,比如事件、節(jié)點(diǎn)、任務(wù)的運(yùn)行狀態(tài)、完成進(jìn)度

    4.2.2    性能優(yōu)勢

    l        總控服務(wù)器

    1、總控服務(wù)器的事件接收、任務(wù)發(fā)送、任務(wù)信息接收,可以有3種配置模式:JMS服務(wù)器、數(shù)據(jù)庫服務(wù)器、內(nèi)存隊(duì)列,其中內(nèi)存隊(duì)列服務(wù)器效率最高、其次是JMS服務(wù)器

    2、對于復(fù)雜耗時(shí)節(jié)點(diǎn)圖的解析可以采用異步接口的實(shí)現(xiàn),采用異步的方式提高總控服務(wù)器的相應(yīng)速度

    l        任務(wù)服務(wù)器

    1、任務(wù)服務(wù)器的任務(wù)信息發(fā)送、任務(wù)接收,也同樣有3種配置模式:JMS服務(wù)器、數(shù)據(jù)庫服務(wù)器、內(nèi)存隊(duì)列,其中內(nèi)存隊(duì)列服務(wù)器效率最高、其次是JMS服務(wù)器

    2、任務(wù)實(shí)例的執(zhí)行提供了獨(dú)立的執(zhí)行線程

    3、任務(wù)實(shí)例由任務(wù)實(shí)例管理器統(tǒng)一管理,默認(rèn)采用單實(shí)例模式一次創(chuàng)建多次執(zhí)行減小執(zhí)行中創(chuàng)建任務(wù)實(shí)例的開銷

    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批量架構(gòu)邏輯結(jié)構(gòu)

    4.4.1    總體邏輯結(jié)構(gòu)

    l        事件由應(yīng)用系統(tǒng)或事件中心創(chuàng)建,通過事件通訊服務(wù)器到達(dá)已部署的總控服務(wù)器

    l        總控服務(wù)器將事件按照預(yù)先定義好的節(jié)點(diǎn)圖拆分、解析成任務(wù),按照合適的條件再發(fā)送到任務(wù)通訊服務(wù)器,并記錄日志

    l        任務(wù)服務(wù)器根據(jù)自身的資源情況從任務(wù)通訊服務(wù)器接受相應(yīng)的任務(wù)去執(zhí)行

    l        任務(wù)執(zhí)行完成后將記錄日志,并將完成后的任務(wù)信息發(fā)送回任務(wù)通訊服務(wù)器

    l        總控服務(wù)器再從任務(wù)通訊服務(wù)器取回任務(wù)信息,判斷節(jié)點(diǎn)和事件的完成情況,如果未完成繼續(xù)后續(xù)節(jié)點(diǎn)的拆分和任務(wù)的發(fā)送,如果全部節(jié)點(diǎn)的任務(wù)完成則該事件完成

    4.4.2    總控服務(wù)器內(nèi)部結(jié)構(gòu)

    l        一個(gè)總控服務(wù)器由部署的多個(gè)應(yīng)用實(shí)例,總上下文、總的資源、配置管理組成

    l        總控服務(wù)器以Task、Event對象的形式與外界傳輸數(shù)據(jù)

    l        每個(gè)應(yīng)用實(shí)例運(yùn)行在自己獨(dú)立的應(yīng)用容器里和獨(dú)立的線程,并且包含了多個(gè)不同的事件接收實(shí)例、應(yīng)用上下文、應(yīng)用資源、應(yīng)用配置管理、事件接收管理、任務(wù)發(fā)送管理、任務(wù)信息接收管理

    l        每個(gè)事件接收實(shí)例有自己獨(dú)立的節(jié)點(diǎn)圖解析器、任務(wù)拆分器、日志記錄器、任務(wù)發(fā)送驗(yàn)證器、自己的上下文、自己的資源

    4.4.3    任務(wù)服務(wù)器內(nèi)部結(jié)構(gòu)

    l        一個(gè)任務(wù)服務(wù)器由部署的多個(gè)應(yīng)用實(shí)例,總上下文、總的資源、配置管理組成

    l        總控服務(wù)器以Task對象的形式與外界傳輸數(shù)據(jù)

    l        每個(gè)應(yīng)用實(shí)例運(yùn)行在自己獨(dú)立的應(yīng)用容器里和獨(dú)立的守護(hù)線程,并且包含了多個(gè)任務(wù)實(shí)例、應(yīng)用上下文、任務(wù)運(yùn)行池、任務(wù)實(shí)例管理類、、任務(wù)信息發(fā)送管理、任務(wù)接收管理

    l        每個(gè)任務(wù)實(shí)例有自己獨(dú)立的應(yīng)用容器里和獨(dú)立的執(zhí)行線程、任務(wù)執(zhí)行類、日志記錄器、自己的上下文、自己的資源

    4.5       節(jié)點(diǎn)模型

    首先節(jié)點(diǎn)圖是由總控服務(wù)器來解析的,負(fù)責(zé)節(jié)點(diǎn)及任務(wù)的拆分和調(diào)度。總控服務(wù)器默認(rèn)支持3種最常用的節(jié)點(diǎn)圖模型,開發(fā)人員也可以通過接口擴(kuò)展支持新的節(jié)點(diǎn)圖模型。這3種節(jié)點(diǎn)圖模型是:單節(jié)點(diǎn)模型、樹型節(jié)點(diǎn)圖模型、層型節(jié)電圖模型。單節(jié)點(diǎn)模型是由一個(gè)節(jié)點(diǎn)組成,非常簡單。

    4.5.1    樹型節(jié)點(diǎn)圖

    樹型節(jié)點(diǎn)圖每個(gè)節(jié)點(diǎn)執(zhí)行都依賴父節(jié)點(diǎn)是否完成。樹型節(jié)點(diǎn)圖實(shí)際上更像網(wǎng)狀結(jié)構(gòu)。通過節(jié)點(diǎn)之間關(guān)系建立緊密的聯(lián)系,這樣的好處是每個(gè)節(jié)點(diǎn)執(zhí)行完能很快執(zhí)行它下級節(jié)點(diǎn),效率較高。但是節(jié)點(diǎn)關(guān)系過于緊密,因此創(chuàng)建樹型節(jié)點(diǎn)圖和維護(hù)的代價(jià)很大。

    如:

    假設(shè)這有7個(gè)節(jié)點(diǎn),他們的關(guān)系如圖所示。整個(gè)節(jié)點(diǎn)圖執(zhí)行完一共需要14分鐘。

    4.5.2    層型節(jié)點(diǎn)圖

    層型節(jié)點(diǎn)圖像瀑布從上到下一批批地執(zhí)行完,只有前一層執(zhí)行完才能到下一層。這種結(jié)構(gòu)關(guān)系相對簡單,易于創(chuàng)建和維護(hù)。但是如果分層不當(dāng),層內(nèi)會因某個(gè)節(jié)點(diǎn)非常費(fèi)時(shí)而等待,從而影響整個(gè)執(zhí)行的效率。

    如:

    還是這7個(gè)節(jié)點(diǎn),整個(gè)節(jié)點(diǎn)圖執(zhí)行完一共需要18分鐘。其實(shí)這節(jié)點(diǎn)5也可以放到第2層,但效率更低,需要21分鐘。

    4.6       組件及功能

    4.6.1    任務(wù)服務(wù)器

    批量任務(wù)執(zhí)行的服務(wù)器

    1、每個(gè)任務(wù)服務(wù)器實(shí)例都支持多線程、多應(yīng)用系統(tǒng)、多服務(wù)器集群

    2、通過任務(wù)的優(yōu)先級、權(quán)重管理任務(wù)服務(wù)器群的負(fù)載均衡

    3、任務(wù)類運(yùn)行方式有單體類模式、配置文件容器運(yùn)行模式、spring容器管理模式,最優(yōu)化合理地利用資源

    4、支持多數(shù)據(jù)源、多jms源、內(nèi)存隊(duì)列、多通道接受和發(fā)送任務(wù)

    5、對于jms傳送xml任務(wù)信息支持加密和壓縮

    4.6.2    任務(wù)服務(wù)器監(jiān)控

    監(jiān)控當(dāng)前任務(wù)服務(wù)器的運(yùn)行狀態(tài)


    1、可以停止、暫停、重起任務(wù)服務(wù)器

    2、可以對部署在任務(wù)服務(wù)器上的應(yīng)用單獨(dú)暫停

    3、能查詢運(yùn)行的任務(wù)數(shù)量、部署的應(yīng)用、內(nèi)存應(yīng)用情況、正在運(yùn)行任務(wù)的狀態(tài)

    4.6.3    總控服務(wù)器

    處理批量事件的服務(wù)器,負(fù)責(zé)事件任務(wù)拆分、任務(wù)調(diào)度

    1、默認(rèn)支持樹型節(jié)點(diǎn)圖、層型節(jié)點(diǎn)圖、單個(gè)節(jié)點(diǎn)的任務(wù)拆分

    2、支持多應(yīng)用部署、多事件并發(fā)執(zhí)行

    3、可以設(shè)置敏感度,是否時(shí)時(shí)響應(yīng)每個(gè)應(yīng)用的事件

    4、任務(wù)錯誤后的終止、忽略、重跑三種重跑方式

    5、通過事件的優(yōu)先級、權(quán)重管理總控服務(wù)器群的負(fù)載均衡

    6、支持?jǐn)帱c(diǎn)續(xù)跑,支持災(zāi)難恢復(fù)

    7、對于jms傳送xml任務(wù)支持加密和壓縮

    4.6.4    總控服務(wù)器監(jiān)控

    監(jiān)控當(dāng)前總控服務(wù)器的運(yùn)行狀態(tài)


    1、可以停止、暫停、重起總控服務(wù)器

    2、可以對部署在總控服務(wù)器上的應(yīng)用單獨(dú)暫停

    3、能查詢運(yùn)行的總控?cái)?shù)量、部署的應(yīng)用、正在運(yùn)行的事件狀態(tài)

    4.6.5    事件服務(wù)器和事件中心


    可以給總控服務(wù)器的發(fā)送批量事件

    1、人為發(fā)起的批量事件,如:月終、年終報(bào)表等

    2、事件中心默認(rèn)提供發(fā)起一個(gè)事件、發(fā)起多個(gè)事件、多個(gè)順序事件、發(fā)起周期事件,可以根據(jù)需要定制事件,事件服務(wù)器負(fù)責(zé)創(chuàng)建并發(fā)送

    3、可以對多個(gè)總控或多個(gè)應(yīng)用發(fā)送批量事件

    4.6.6    節(jié)點(diǎn)圖編輯平臺


    定義事件的節(jié)點(diǎn)運(yùn)行圖

    1、支持樹型、層型圖的節(jié)點(diǎn)圖定義

    2、樹型節(jié)點(diǎn)圖支持圖嵌套,做到節(jié)點(diǎn)圖定義的重用

    3、節(jié)點(diǎn)和圖都能配置業(yè)務(wù)參數(shù),節(jié)點(diǎn)可以配置運(yùn)行模式、權(quán)重、互斥等信息

    4、支持對多個(gè)應(yīng)用定義節(jié)點(diǎn)運(yùn)行圖

    5、提供對已定義的節(jié)點(diǎn)圖可以圖形方式預(yù)覽

    4.6.7    日志分析中心



    分析批量運(yùn)行的結(jié)果

    1、能查詢到每個(gè)事件、節(jié)點(diǎn)、任務(wù)的日志信息

    2、已不同的顏色區(qū)分當(dāng)前事件、節(jié)點(diǎn)、任務(wù)運(yùn)行的狀態(tài)

    3、提供對日志進(jìn)行分析,以列表和圖形方式展現(xiàn)事件的運(yùn)行節(jié)點(diǎn)圖

    4、時(shí)時(shí)刷新分析結(jié)果可以很直觀看到事件中的每個(gè)節(jié)點(diǎn)或任務(wù)的運(yùn)行過程

    5、支持多個(gè)應(yīng)用的日志查詢和日志分析

    4.7       應(yīng)用模式

    支持多組件插拔式部署,典型的3種模式如下:

    初始級的批量服務(wù)-只要部署任務(wù)服務(wù)器就可以滿足需要,部署維護(hù)簡單

    應(yīng)用級的批量服務(wù)-需要部署多個(gè)任務(wù)服務(wù)器,一個(gè)總控服務(wù)器,如果需要監(jiān)控還要部署WEB的總控監(jiān)控組件和任務(wù)服務(wù)器監(jiān)控組件、日志分析中心

    企業(yè)級的批量服務(wù)-部署所有組件,總控服務(wù)器和任務(wù)服務(wù)器的集群可以處理龐大的批量事件,加入事件服務(wù)器可以人為根據(jù)需要發(fā)起系統(tǒng)外批量程序

     

    云計(jì)算級批量服務(wù)-在需要加入云計(jì)算的計(jì)算機(jī)安轉(zhuǎn)批量任務(wù)服務(wù)器客戶端并啟動她,即完成了云計(jì)算的部署。在網(wǎng)絡(luò)內(nèi)的個(gè)人pc也能加入云計(jì)算,這樣就為云計(jì)算提供靈活的、更多的資源


    擴(kuò)展模式-除了以上三種模式還可以根據(jù)實(shí)際情況組合自己需要的組件,也可以增加或減少總控服務(wù)器及任務(wù)服務(wù)器


    下載地址:http://code.google.com/p/openhandx2/downloads/list

    posted on 2009-09-02 15:15 彭明華 閱讀(2071) 評論(12)  編輯  收藏 所屬分類: OpenHandX工具

    FeedBack:
    # re: OpenView-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2009-09-02 17:16 小麗
    牛逼?。?!  回復(fù)  更多評論
      
    # re: OpenView-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2009-09-02 18:14 wangchangbing
    下載下來試試
    異步處理在系統(tǒng)中經(jīng)常需要用到
    LZ的思路很好 這個(gè)項(xiàng)目很有前途 是一個(gè)人做的嗎?需要人一起做嗎?  回復(fù)  更多評論
      
    # re: OpenView-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2009-09-02 19:56 彭明華
    謝謝,這個(gè)項(xiàng)目已近完成了,其中異步總控部分已經(jīng)被應(yīng)用項(xiàng)目使用過了。如果使用中有問題請發(fā)帖。@wangchangbing
      回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2010-03-18 14:04 小山羊
    1、如果我換成sqlserver2005數(shù)據(jù)庫,請問怎么配置數(shù)據(jù)庫,在哪些文件中配置?
    2、能不能提供一個(gè)簡單例子的文檔,比如從設(shè)置sql腳本開始,怎么在OpenHandX-Batch 中設(shè)置,然后下一步設(shè)置或操作的步驟?因?yàn)榭茨銓懙奈臋n,有好多術(shù)語不太了解,如果結(jié)合著例子看,會事半功倍。  回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2010-03-19 14:18 彭明華
    @小山羊
    只要有sqlserver2005的jdbc驅(qū)動就可以;
    異步批量架構(gòu)太強(qiáng)大也比較復(fù)雜,目前的文檔和參數(shù)太多,我也早有想法做一個(gè)快速配置手冊,這都需要時(shí)間,我會努力的
    異步批量架構(gòu)需要對分布、集群等概念有個(gè)大概認(rèn)識。  回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2010-03-19 17:08 小山羊
    @彭明華
    期待你的文檔,頂!加油!
      回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應(yīng)用架構(gòu) 2012-09-19 11:49 wmj2003
    batchcosole 缺少預(yù)覽功能。 另外 batch核心代碼有bug。google上應(yīng)該不是最終版本。呵呵  回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應(yīng)用架構(gòu) 2012-10-31 09:26 彭明華
    @wmj2003
    batch核心可能有Bug,能說一下具體的嗎,我好解決,謝謝!
    batchcosole的預(yù)覽分為兩部分,一個(gè)是編輯節(jié)點(diǎn)運(yùn)行圖,另一個(gè)日志分析圖時(shí)提供。這兩個(gè)預(yù)覽又分提供列表和圖型方式提供展示,但是圖型方式(使用VML技術(shù))必須在IE6以上版本才能看  回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應(yīng)用架構(gòu) 2012-11-22 10:58 wmj2003
    @彭明華 (有理解不對的地方請指正。qq 229849534 王明杰-聚靈-濟(jì)南)

    數(shù)據(jù)庫初始化的腳本有問題。記不清楚了,有個(gè)時(shí)間列默認(rèn)值給弄錯了,本應(yīng)該在STARTTIME 上面設(shè)置默認(rèn)值,結(jié)果設(shè)置在COMPLETETIME 上面了。導(dǎo)致整體程序執(zhí)行錯誤(通過數(shù)據(jù)庫發(fā)送信息的時(shí)候)。


    事件中心建議修改整體設(shè)計(jì)規(guī)劃,采用JcronTab框架實(shí)現(xiàn),可以大大簡化事件發(fā)送器。
    事件發(fā)送器:CycleEvent 類
    public EventDefine createEvent(Context context,
    Map<String, String> configParams, Event event) throws EventCenterException{
    Map<String,String> params = ParamParse.getParams(event.getConfigs());

    if(params==null){
    throw new EventCenterException("the configs can not be null");
    }
    // System.out.println("type="+params.get("type"));
    // System.out.println("timeNum="+params.get("timeNum"));
    // System.out.println("startTime="+params.get("startTime"));
    // System.out.println("endTime="+params.get("endTime"));
    if(params.get("type")==null || params.get("type").trim().equals("")){
    throw new EventCenterException("the type parameter can not be null,interpose configs please");
    }
    if(params.get("timeNum")==null || params.get("timeNum").trim().equals("")){
    throw new EventCenterException("the timeNum parameter can not be null,interpose configs please");
    }
    Timestamp ts = null;
    if(params!=null && params.get("startTime")!=null && !params.get("startTime").trim().equals("")){
    ts = Timestamp.valueOf(params.get("startTime"));
    }
    Timestamp ets = null;
    if(params!=null && params.get("endTime")!=null && !params.get("endTime").trim().equals("")){
    ets = Timestamp.valueOf(params.get("endTime"));
    }
    EventDefine eventDefine = null;
    if(ets!=null){//如果定義了結(jié)束時(shí)間,那么就判斷什么時(shí)間結(jié)束
    //TODO 這段邏輯有bug
    // if(ts==null || new Timestamp(System.currentTimeMillis()).compareTo(ts)>=0){
    // eventDefine = getEvent(event.getId().replaceAll("#time#",String.valueOf(System.currentTimeMillis())),event);
    // if(new Timestamp(System.currentTimeMillis()).compareTo(ets)>=0){
    // complete = true;
    // }
    // }
    //如果結(jié)束時(shí)間到了,那么就終止任務(wù)。
    if(new Timestamp(System.currentTimeMillis()).compareTo(ets)>=0){
    complete = true;
    }

    }else{

    List<String> ids = ParamParse.getValues(event.getId());//有多少個(gè)ID就創(chuàng)建多少個(gè)事件
    if(ids!=null && !ids.isEmpty() && (ts==null || new Timestamp(System.currentTimeMillis()).compareTo(ts)>=0)){
    if(checkIsCreate(params)){//檢查周期性時(shí)間是否匹配,匹配就創(chuàng)建任務(wù)
    String tempId = ids.get(loop).replaceAll("#time#",String.valueOf(System.currentTimeMillis()));
    eventDefine = getEvent(tempId,event);
    System.out.println("CycleEvent----------開始創(chuàng)建事件請求----eventDefine="+eventDefine.getId());
    loop++;
    if(loop>=ids.size()){
    complete = true;
    }
    }
    }else{
    complete = true;
    }
    }
    return eventDefine;
    }

    控制器中:open.batch.controller.impl.application. LayerNodeMap 有bug。
    方法private List<INode> getNodes(String mapId,String params) throws SQLException 中,把標(biāo)記寫錯了。

    if(rs.getString("RERUN")!=null)
    node.setReRunMode(rs.getInt("RERUN")); //TODO 重跑模式在這里寫錯了吧,果然寫錯了.2012-09-20 又是一個(gè)bug已經(jīng)修正

    open.batch.taskserver.message.TaskSenderManager
    這個(gè)類應(yīng)做錯誤處理,將發(fā)送失敗的任務(wù)重新進(jìn)入隊(duì)列中。同時(shí)需要修改他送任務(wù)的接口,讓其只返回發(fā)送失敗的任務(wù)。 否則一旦發(fā)送失敗,這個(gè)任務(wù)就丟失了。
    (注:其他發(fā)送任務(wù)的地方也有類似的問題。)
    /**
    * @see Runnable#run()
    */
    public void run() {
    while(!stopFlag){
    synchronized(Lock){
    if(tasks!=null && !tasks.isEmpty()){
    // taskSender.sender(context,tasks,configParams);
    // tasks.clear();
    //將發(fā)送失敗的任務(wù)重新加入到任務(wù)隊(duì)列
    List<Task> taskfailures = taskSender.sendernew(context,tasks,configParams); //初步只是實(shí)現(xiàn)了DB的方式
    tasks.clear();
    this.setTasks(taskfailures); //將發(fā)送失敗的任務(wù)重新放入發(fā)送隊(duì)列。
    }
    }
    try {
    Thread.sleep(1);
    } catch (InterruptedException e) {
    log4j.error(null,e);
    }
    }
    complete = true;
    }


      回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應(yīng)用架構(gòu) 2012-11-23 11:11 彭明華
    @wmj2003
    好的,很感謝您的細(xì)心回復(fù),我會在近期修改一版上傳  回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應(yīng)用架構(gòu) 2012-11-26 10:20 wmj2003
    @彭明華
    “batchcosole的預(yù)覽分為兩部分,一個(gè)是編輯節(jié)點(diǎn)運(yùn)行圖,另一個(gè)日志分析圖時(shí)提供。這兩個(gè)預(yù)覽又分提供列表和圖型方式提供展示,但是圖型方式(使用VML技術(shù))必須在IE6以上版本才能看”(注:引用)

    異步任務(wù)監(jiān)控調(diào)度代碼中確實(shí)沒有圖形監(jiān)控的代碼,我看jsp和js代碼了。另外在IE瀏覽器9下面無法打開??赡苁莈xtjs3的問題,在firefox下面可以打開。  回復(fù)  更多評論
      
    # re: OpenHandX-Batch 1.02 企業(yè)級批量應(yīng)用架構(gòu) 2012-12-03 17:18 彭明華
    圖型方式(使用VML技術(shù))在IE6下可以使用,是我表述不準(zhǔn)確。IE9下不正常是EXT2的問題,可以使用IE9兼容方式解決(IE9地址輸入框內(nèi)后部的一個(gè)按鈕)  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲成av人片不卡无码| 久久精品视频亚洲| 在线观看国产区亚洲一区成人 | 亚洲人AV永久一区二区三区久久| 亚洲人成色7777在线观看不卡| 亚洲乱码国产一区三区| 亚洲精品免费在线观看| 亚洲天堂2016| 美女被爆羞羞网站免费 | 波多野结衣亚洲一级| 亚洲AV性色在线观看| 黄色网页在线免费观看| 最近免费中文在线视频| 在线日韩av永久免费观看| 国产精品亚洲精品日韩已方| 亚洲国产二区三区久久| 亚洲色大18成人网站WWW在线播放| 猫咪免费人成在线网站| 鲁大师在线影院免费观看 | 国产男女猛烈无遮挡免费网站| 国产偷窥女洗浴在线观看亚洲| 91情国产l精品国产亚洲区| 亚洲变态另类一区二区三区| 国产成人免费ā片在线观看老同学 | 97国产在线公开免费观看| 在线免费观看色片| 亚洲精品无码久久久久去q| 亚洲www在线观看| 国产福利电影一区二区三区,免费久久久久久久精 | 日韩精品无码区免费专区| 亚洲天堂在线视频| 亚洲国产精品成人精品小说| 免费一级做a爰片久久毛片潮| 8x成人永久免费视频| 免费a级毛片无码a∨性按摩| 亚洲视频手机在线| 人体大胆做受免费视频| 日韩精品福利片午夜免费观着| 国产亚洲色婷婷久久99精品| 亚洲精品无码专区| 亚洲电影免费在线观看|