劉丹 閆國龍
摘要摘要:互聯(lián)網(wǎng)以及虛擬技術(shù)的廣泛應(yīng)用,推動了數(shù)字出版的普及,催生了多種出版應(yīng)用模式。IT技術(shù)的進步,使得基于互聯(lián)網(wǎng)構(gòu)建以自動化排版為特征的動態(tài)數(shù)字出版解決方案成為現(xiàn)實。集群調(diào)度技術(shù)通過構(gòu)建任務(wù)管理中心,接收并實現(xiàn)外部請求任務(wù)在多個業(yè)務(wù)處理模塊之間的分發(fā)與調(diào)度,從而充分利用計算資源,提升任務(wù)處理效率。針對自動化排版并發(fā)性強、即時性高以及對數(shù)據(jù)安全的特殊要求,提出了一種集群出版方法。基于XML格式進行傳輸參數(shù)的數(shù)據(jù)封裝,采用抽象化的分層設(shè)計,確保排版任務(wù)在分發(fā)、調(diào)度與管理上與排版業(yè)務(wù)處理分離,從而降低模塊間的耦合度,提升自動化排版的多任務(wù)并發(fā)處理能力以及系統(tǒng)的可擴展性。
關(guān)鍵詞關(guān)鍵詞:集群調(diào)度;自動化排版;動態(tài)數(shù)字出版
DOIDOI:10.11907/rjdk.161202
中圖分類號:TP301文獻標識碼:A文章編號文章編號:16727800(2016)007000703
引言
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,相互孤立的出版環(huán)節(jié)被數(shù)據(jù)鏈和信息鏈連接,信息孤島被消除的同時催生出了新的出版模式。虛擬技術(shù)的應(yīng)用,使硬件設(shè)備的并行處理能力得到優(yōu)化,以自動化排版為特征的動態(tài)數(shù)字出版成為現(xiàn)實[1]。
傳統(tǒng)排版方式下,大量的重復(fù)性工作需要人工操作完成,不僅費時費力,而且存在編排內(nèi)容被誤刪誤改的風險。自動化排版采用內(nèi)容與版式相分離的設(shè)計思路,將有規(guī)律的內(nèi)容樣式、版面布局設(shè)計成可復(fù)用的樣式模板,通過自動化排版引擎,實現(xiàn)出版內(nèi)容與版式結(jié)合,從而自動完成排版作業(yè)[2]。自動化排版減少了人工參與度,提升了效率,降低了手工排版帶來的內(nèi)容性風險。
基于單機模式的自動化排版在處理多任務(wù)請求時,需要采取排隊方式逐一順次處理,無法發(fā)揮多核服務(wù)器設(shè)備并行處理的能力,成為系統(tǒng)運行的瓶頸,從而阻礙動態(tài)數(shù)字出版系統(tǒng)整體效率的提升。
本文針對自動化排版需求,在多任務(wù)并發(fā)請求情況下提出了多項核心技術(shù),構(gòu)建了基于集群調(diào)度模式的動態(tài)數(shù)字出版方案,通過充分利用單服務(wù)器并行處理能力及多服務(wù)器協(xié)同工作能力,顯著提升了自動化排版工作效率。
1系統(tǒng)原理
本文采用分布式體系結(jié)構(gòu)構(gòu)建集群出版引擎,以解決動態(tài)數(shù)字出版過程中多任務(wù)并發(fā)情況下的低效率問題。同時引入數(shù)據(jù)庫系統(tǒng)作為管理工具,將集群調(diào)度體系中任務(wù)請求的流轉(zhuǎn)狀態(tài)交由數(shù)據(jù)庫管理,為作業(yè)中斷和現(xiàn)場恢復(fù)提供支持??紤]到集群出版引擎在任務(wù)調(diào)度與分發(fā)上的通用性,系統(tǒng)基于XML格式進行傳輸參數(shù)封裝。基于專業(yè)排版工具,通過二次開發(fā)方式構(gòu)建自動化排版引擎終端,基于內(nèi)容與版式相分離的設(shè)計思想,將規(guī)律性的版式效果做成樣式模板,通過排版引擎終端,實現(xiàn)模板與內(nèi)容的結(jié)合,自動輸出專業(yè)的排版結(jié)果文件。系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1中,處于中心位置的任務(wù)管理數(shù)據(jù)庫承擔著整個系統(tǒng)承上啟下的重要作用,也是系統(tǒng)作業(yè)運行狀態(tài)監(jiān)控的核心,對任務(wù)的有效管理是任務(wù)管理數(shù)據(jù)庫的主要職責,其主要數(shù)據(jù)是排版內(nèi)容與樣式模板,指明了任務(wù)作業(yè)所需的排版素材。另外,作業(yè)中還記錄了排版作業(yè)信息,有請求者、請求消息、作業(yè)三者之間的對應(yīng)關(guān)系,以便查詢作業(yè)狀態(tài)。
樣式模版是一種可以重復(fù)利用的資源,任務(wù)管理數(shù)據(jù)庫對其單獨管理,樣式表中除了記錄樣式的基本信息外,還指定了該樣式所對應(yīng)的內(nèi)容數(shù)據(jù)結(jié)構(gòu),排版作業(yè)將根據(jù)樣式模版中的內(nèi)容數(shù)據(jù)結(jié)構(gòu),匹配排版作業(yè)請求所提供的內(nèi)容數(shù)據(jù),從而自動出版。
內(nèi)容數(shù)據(jù)庫負責存儲排版內(nèi)容,自動化排版引擎解析排版任務(wù)中的內(nèi)容源參數(shù),通過網(wǎng)絡(luò)通信,即時訪問內(nèi)容數(shù)據(jù)庫,提取所需數(shù)據(jù),完成內(nèi)容的自動出版。
以任務(wù)管理數(shù)據(jù)庫為核心,集群調(diào)度控制器對任務(wù)請求進行合理的調(diào)度處理。當任務(wù)管理數(shù)據(jù)庫前端的消息解析器接收到排版請求后,將自動排版任務(wù)請求解析生成相應(yīng)的作業(yè)記錄,加入到數(shù)據(jù)庫中等待處理。集群調(diào)度控制器檢查到任務(wù)管理數(shù)據(jù)庫中有未處理任務(wù)時,根據(jù)作業(yè)記錄狀態(tài)讀取相關(guān)信息,通過設(shè)備能力評估,按照自動出版流程定義選擇設(shè)備分配該作業(yè)。作業(yè)每完成自動出版流程中定義的一個處理環(huán)節(jié),調(diào)度控制器收到反饋信息后,就修改任務(wù)管理數(shù)據(jù)庫中的狀態(tài)信息,以便該作業(yè)等待后續(xù)處理。以此順序,直到每個作業(yè)全部完成處理流程,最后由消息解析器將結(jié)果返回使用者。
動態(tài)數(shù)字出版方法實現(xiàn)涉及到傳輸參數(shù)的封裝與任務(wù)的構(gòu)建、集群體系結(jié)構(gòu)的建立、基于流程的集群調(diào)度算法和優(yōu)化策略[3]、基于內(nèi)容與版式相分離的自動化排版。下面重點闡述如何實現(xiàn)傳輸參數(shù)封裝、集群體系結(jié)構(gòu)建立等關(guān)鍵技術(shù)。
2關(guān)鍵技術(shù)
2.1基于XML的傳輸參數(shù)數(shù)據(jù)封裝
集群出版引擎基于網(wǎng)絡(luò)環(huán)境進行部署和應(yīng)用,采用標準的WebService接口與外部業(yè)務(wù)系統(tǒng)進行銜接和集成?;跀?shù)據(jù)封裝的標準性和可擴展性考慮,采用XML格式對傳輸參數(shù)進行數(shù)據(jù)封裝。以自動化排版輸出PDF結(jié)果為例,排版任務(wù)的數(shù)據(jù)封裝結(jié)果如下:
其中,< CmdName >項指明任務(wù)類型,< CmdId >項指明任務(wù)標識ID,< Params >約定了自動化排版任務(wù)的具體參數(shù),< ParamGroup >則詳細定義了自動化排版方式,以及在該方式下的輸入輸出參數(shù)。
2.2可擴展的集群體系結(jié)構(gòu)
為保證自動化排版對響應(yīng)速度的要求,集群出版的任務(wù)處理能力和效率成為解決問題的關(guān)鍵。為此,本文提出了一種可擴展的集群體系結(jié)構(gòu),解決排版效率低的問題。該體系以樹形擴展結(jié)構(gòu)為基礎(chǔ),搭建分布式的“控制器-設(shè)備-具體業(yè)務(wù)處理”三級組件模型結(jié)構(gòu),具有多極擴展、綜合業(yè)務(wù)處理能力強等特點,如圖2所示。
在“控制器-設(shè)備-具體業(yè)務(wù)處理”三級組件結(jié)構(gòu)中,第一級調(diào)度控制器負責整個作業(yè)處理流程在集群結(jié)構(gòu)中的調(diào)度與控制;中間層級是抽象的邏輯設(shè)備;最底層的 “業(yè)務(wù)處理”單元對應(yīng)于具體的處理功能,指功能設(shè)備,將根據(jù)上級邏輯設(shè)備的需要,以不同的方式組合,集中計算能力。將出版流程所需的各個處理步驟分散在不同設(shè)備上,按流水作業(yè)處理的方式提供高效的并發(fā)處理。出版流程中的某些處理過程不能簡單用單一的功能設(shè)備來實現(xiàn),需要多個子步驟相互配合共同完成。因此,本文提出“邏輯設(shè)備”概念來代表系統(tǒng)流程中的關(guān)鍵處理環(huán)節(jié),使得整個集群體系具有良好的可擴展結(jié)構(gòu)。
邏輯設(shè)備可以是單層結(jié)構(gòu),代表流程中的某個簡單處理過程,通過直接連接相應(yīng)的設(shè)備來實現(xiàn)該功能;也可以是多層嵌套結(jié)構(gòu),代表高層流程中的一個處理過程,同時也是自身所代表的子流程,依靠下級邏輯設(shè)備構(gòu)成并完成子流程處理,實現(xiàn)自身在高層流程中的處理能力。
2.3樹形網(wǎng)絡(luò)通信結(jié)構(gòu)
集群體系架構(gòu)采用靈活的低耦合度分布式結(jié)構(gòu),每個設(shè)備可能位于不同的物理主機上,因此需要良好的內(nèi)部網(wǎng)絡(luò)通信支持這種分布式結(jié)構(gòu)。
流程的樹型結(jié)構(gòu)決定了網(wǎng)絡(luò)通信的樹形結(jié)構(gòu)。參照“控制器-設(shè)備-具體業(yè)務(wù)處理”三級模型的結(jié)構(gòu)特征,網(wǎng)絡(luò)通信的目標是:任何一個設(shè)備都只有唯一的父連接,但可能有多個子連接;設(shè)備向上只與父節(jié)點、向下只與子節(jié)點建立通信關(guān)系,而不能越級直接通信,以此簡化通信方式;頂層的根節(jié)點對應(yīng)調(diào)度控制器,只有子連接而無父連接;葉節(jié)點對應(yīng)功能設(shè)備,只有父連接而無子連接,從而構(gòu)成一個網(wǎng)絡(luò)通訊樹。
在集群調(diào)度體系中,邏輯設(shè)備和功能設(shè)備是通信的主要參與者。為了使設(shè)備的通信功能更為有效,系統(tǒng)引入了設(shè)備管理員概念,為各層設(shè)備建立并維護其賴以生存的通信網(wǎng)絡(luò);同時引入“信使”概念,每個設(shè)備都攜帶一個“信使”作為自己的專用通信工具,由“信使”來完成其所在設(shè)備在集群體系中的網(wǎng)絡(luò)通信工作。
2.4支持同步/異步響應(yīng)模式
在集群排版引擎中,由邏輯設(shè)備及關(guān)聯(lián)的業(yè)務(wù)處理模塊構(gòu)成處理引擎單元,每個處理引擎作為業(yè)務(wù)實現(xiàn)單元完成排版引擎的接收和排版作業(yè)的執(zhí)行。集群排版系統(tǒng)支持同步和異步兩種任務(wù)響應(yīng)模式。在同步響應(yīng)模式下,集群排版引擎接收到業(yè)務(wù)系統(tǒng)的任務(wù)請求后,判斷是否存在空閑的處理引擎,如果存在,則分發(fā)任務(wù)到空閑的處理引擎。完成自動化排版后,將結(jié)果反饋給業(yè)務(wù)系統(tǒng),如圖3所示。同步響應(yīng)模式提高了系統(tǒng)間信息傳遞的實時性。對于大文檔排版,由于耗時較長,需要等待較長的時間,影響了用戶體驗和系統(tǒng)運行效率。鑒于大文檔排版存在耗時長、體驗差的問題,集群排版引擎提供了異步響應(yīng)模式。與同步響應(yīng)模式的不同之處在于,異步響應(yīng)方式在接收到業(yè)務(wù)系統(tǒng)的請求之后,將任務(wù)放入集群調(diào)度控制器進行任務(wù)排隊和調(diào)度,當任務(wù)執(zhí)行完成之后,再向業(yè)務(wù)系統(tǒng)反饋處理結(jié)果。異步模式無須長時間等待,改善了用戶體驗。
3結(jié)語
本文通過對排版任務(wù)進行XML數(shù)據(jù)封裝,采用可擴展的集群架構(gòu)、樹形網(wǎng)絡(luò)通信結(jié)構(gòu)以及對同步/異步調(diào)用機制的支持,實現(xiàn)了多排版任務(wù)的調(diào)度與管理,提升了并發(fā)請求下自動化排版的效率。