隨筆 - 11  文章 - 79  trackbacks - 0
          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          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)擊某個按鈕系統(tǒng)就能很快查詢出需要的信息,整個過程不需要長時間等待。隨著計(jì)算機(jī)系統(tǒng)的普及化,更高級業(yè)務(wù)需求,如:分析型的報表、復(fù)雜的數(shù)據(jù)加工被提了出來。如果再做成同步交易用戶可能需要等待幾十分鐘或數(shù)小時的時間,這顯然是不被接受的。這時就需要一個高效異步交易系統(tǒng)。異步交易是指用戶提交一個請求后系統(tǒng)很快返回提交成功的信息,隨后用戶可以繼續(xù)做其它的工作,提交的請求由后臺程序按照一定規(guī)則去處理,處理完成后用戶可以取到結(jié)果,整個過程用戶都不用刻意去等待因此是異步的。面對更高層的應(yīng)用,更大的海量處理如:天氣預(yù)報的衛(wèi)星云圖、生物基因工程等計(jì)算。

          傳統(tǒng)聯(lián)機(jī)架構(gòu)只能處理響應(yīng)較快的普通業(yè)務(wù)處理,對于耗時等復(fù)雜業(yè)務(wù)處理會造成服務(wù)器資源大量被占用,客戶端失去響應(yīng)等嚴(yán)重問題。異步批量架構(gòu)是解決復(fù)雜業(yè)務(wù)處理、數(shù)據(jù)分析、科學(xué)計(jì)算等耗時工作任務(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ā)起一個異步批量的請求,請求很簡單只有一個節(jié)點(diǎn)一個任務(wù),處理保存在數(shù)據(jù)庫中,由應(yīng)用系統(tǒng)去查詢結(jié)果

          2.2       應(yīng)用級

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


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

          2.3       企業(yè)級

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

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

           2.4      云計(jì)算級





          云計(jì)算級面向更大的理想應(yīng)用,能提供絕對強(qiáng)大的運(yùn)算能力,能對天氣預(yù)報、生物工程等海量數(shù)據(jù)進(jìn)行運(yùn)算。同時在同一網(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)境,不能被外界獲取,即使能獲取也是無價值的

          3.2       健壯性

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

          3.3       高性能

          企業(yè)級架構(gòu)一般部署在服務(wù)器上,企業(yè)級架構(gòu)要能利用服務(wù)器提供的資源最大、最快程度完成交給的任務(wù),并且能夠通過多個服務(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è),每個企業(yè)都有不同的情況和需求,這就需要企業(yè)級架能以各種模式來滿足不同的企業(yè)。企業(yè)級架構(gòu)應(yīng)該是由多個組件組成,每個組件都是松耦合,通過組件的不同組合方式滿足不同模式的需求

          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è)多個系統(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):一個復(fù)雜的事件是由多個步驟,每個節(jié)點(diǎn)代表一個步驟

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

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

          4.2       特性

          4.2.1    主要特性

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

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

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

          l        多種節(jié)點(diǎn)圖事件支持-總控服務(wù)器提供樹型和層型節(jié)點(diǎn)圖、單個任務(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ù)個性的代碼

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

          l        健壯性-總控服務(wù)器的每個應(yīng)用實(shí)例有自己的運(yùn)行容器和運(yùn)行線程,任務(wù)服務(wù)器也有自己的獨(dú)立任務(wù)容器和執(zhí)行線程,保證了每個獨(dú)立的應(yīng)用或任務(wù)執(zhí)行出現(xiàn)意外不影響其它執(zhí)行的應(yīng)用和任務(wù)。其次總控服務(wù)器還對每個應(yīng)用和任務(wù)執(zhí)行進(jìn)行監(jiān)控記錄,即使整個總控服務(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í)時分析的工具,比如事件、節(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ù)雜耗時節(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        一個總控服務(wù)器由部署的多個應(yīng)用實(shí)例,總上下文、總的資源、配置管理組成

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

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

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

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

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

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

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

          l        每個任務(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)模型是由一個節(jié)點(diǎn)組成,非常簡單。

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

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

          如:

          假設(shè)這有7個節(jié)點(diǎn),他們的關(guān)系如圖所示。整個節(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)會因某個節(jié)點(diǎn)非常費(fèi)時而等待,從而影響整個執(zhí)行的效率。

          如:

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

          4.6       組件及功能

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

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

          1、每個任務(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)圖、單個節(jié)點(diǎn)的任務(wù)拆分

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

          3、可以設(shè)置敏感度,是否時時響應(yīng)每個應(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ā)起的批量事件,如:月終、年終報表等

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

          3、可以對多個總控或多個應(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、支持對多個應(yīng)用定義節(jié)點(diǎn)運(yùn)行圖

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

          4.6.7    日志分析中心



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

          1、能查詢到每個事件、節(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、時時刷新分析結(jié)果可以很直觀看到事件中的每個節(jié)點(diǎn)或任務(wù)的運(yùn)行過程

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

          4.7       應(yīng)用模式

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

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

          應(yīng)用級的批量服務(wù)-需要部署多個任務(wù)服務(wù)器,一個總控服務(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)的個人pc也能加入云計(jì)算,這樣就為云計(jì)算提供靈活的、更多的資源


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


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

          posted on 2009-09-02 15:15 彭明華 閱讀(2080) 評論(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的思路很好 這個項(xiàng)目很有前途 是一個人做的嗎?需要人一起做嗎?  回復(fù)  更多評論
            
          # re: OpenView-Batch 1.0 企業(yè)級批量應(yīng)用架構(gòu) 2009-09-02 19:56 彭明華
          謝謝,這個項(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、能不能提供一個簡單例子的文檔,比如從設(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òu)需要對分布、集群等概念有個大概認(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ù)覽分為兩部分,一個是編輯節(jié)點(diǎn)運(yùn)行圖,另一個日志分析圖時提供。這兩個預(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ù)庫初始化的腳本有問題。記不清楚了,有個時間列默認(rèn)值給弄錯了,本應(yīng)該在STARTTIME 上面設(shè)置默認(rèn)值,結(jié)果設(shè)置在COMPLETETIME 上面了。導(dǎo)致整體程序執(zhí)行錯誤(通過數(shù)據(jù)庫發(fā)送信息的時候)。


          事件中心建議修改整體設(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é)束時間,那么就判斷什么時間結(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é)束時間到了,那么就終止任務(wù)。
          if(new Timestamp(System.currentTimeMillis()).compareTo(ets)>=0){
          complete = true;
          }

          }else{

          List<String> ids = ParamParse.getValues(event.getId());//有多少個ID就創(chuàng)建多少個事件
          if(ids!=null && !ids.isEmpty() && (ts==null || new Timestamp(System.currentTimeMillis()).compareTo(ts)>=0)){
          if(checkIsCreate(params)){//檢查周期性時間是否匹配,匹配就創(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 又是一個bug已經(jīng)修正

          open.batch.taskserver.message.TaskSenderManager
          這個類應(yīng)做錯誤處理,將發(fā)送失敗的任務(wù)重新進(jìn)入隊(duì)列中。同時需要修改他送任務(wù)的接口,讓其只返回發(fā)送失敗的任務(wù)。 否則一旦發(fā)送失敗,這個任務(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ù)覽分為兩部分,一個是編輯節(jié)點(diǎn)運(yùn)行圖,另一個日志分析圖時提供。這兩個預(yù)覽又分提供列表和圖型方式提供展示,但是圖型方式(使用VML技術(shù))必須在IE6以上版本才能看”(注:引用)

          異步任務(wù)監(jiān)控調(diào)度代碼中確實(shí)沒有圖形監(jiān)控的代碼,我看jsp和js代碼了。另外在IE瀏覽器9下面無法打開。可能是extjs3的問題,在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)后部的一個按鈕)  回復(fù)  更多評論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 当涂县| 东兴市| 蒙山县| 满城县| 花莲市| 上林县| 乌苏市| 庄浪县| 马关县| 东乌珠穆沁旗| 玉环县| 沂水县| 商丘市| 卢氏县| 无棣县| 灵璧县| 类乌齐县| 尼木县| 西峡县| 曲阳县| 淄博市| 张家川| 田东县| 天津市| 桂林市| 隆尧县| 花莲县| 清远市| 浮山县| 邓州市| 麦盖提县| 登封市| 彝良县| 鄂尔多斯市| 武清区| 龙江县| 中牟县| 慈利县| 宾阳县| 泌阳县| 郴州市|