劉丹 閆國(guó)龍



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