竇 帥,李子揚(yáng),朱家佳,李曉輝,米 琳,李傳榮
(中國(guó)科學(xué)院 空天信息創(chuàng)新研究院 中國(guó)科學(xué)院定量遙感信息技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 100094)
綜合性的數(shù)據(jù)處理系統(tǒng)往往需要實(shí)施多種類型的數(shù)據(jù)處理業(yè)務(wù),數(shù)據(jù)處理算法集成是研制建設(shè)此類系統(tǒng)的一項(xiàng)重要內(nèi)容,集成框架設(shè)計(jì)或集成方法的好壞將在很大程度上影響系統(tǒng)的數(shù)據(jù)處理效率、系統(tǒng)功能的可擴(kuò)展性.同時(shí),此類綜合性數(shù)據(jù)處理系統(tǒng)提供計(jì)算分析服務(wù)常常采用分布式的架構(gòu)實(shí)現(xiàn),在分布式系統(tǒng)中采用松耦合方式進(jìn)行算法集成,有利于提高系統(tǒng)運(yùn)行效率、降低系統(tǒng)的運(yùn)行維護(hù)成本.
軟件插件技術(shù)作為組件復(fù)用技術(shù)的一種,能在不修改程序主體的情況下對(duì)軟件的功能進(jìn)行加強(qiáng)[1],增強(qiáng)代碼的可重用性,提高軟件的開發(fā)生產(chǎn)率[2,3],可應(yīng)用于數(shù)據(jù)處理算法集成.近年來軟件插件技術(shù)應(yīng)用廣泛,多種常用應(yīng)用軟件甚至操作系統(tǒng)均采用了插件技術(shù)[4],但是在分布式計(jì)算系統(tǒng)中集成、調(diào)用插件程序時(shí),由于不同插件程序的開發(fā)者選用的開發(fā)語(yǔ)言、部署平臺(tái)方面存在差異且各插件程序產(chǎn)生的數(shù)據(jù)格式不統(tǒng)一[5],需要解決插件程序間的遠(yuǎn)程消息通信、異構(gòu)數(shù)據(jù)共享等問題.目前很多應(yīng)用系統(tǒng)未考慮插件程序間的信息交互,容易產(chǎn)生信息孤島[6].此外,在分布式計(jì)算系統(tǒng)中調(diào)度算法插件程序時(shí),需建立動(dòng)態(tài)反饋機(jī)制,根據(jù)各計(jì)算節(jié)點(diǎn)的資源使用情況動(dòng)態(tài)調(diào)度節(jié)點(diǎn)中的插件程序,保證各計(jì)算節(jié)點(diǎn)資源使用不超載.
為探索臨近空間環(huán)境和生態(tài)系統(tǒng),國(guó)內(nèi)多家科研院所聯(lián)合參與了“臨近空間科學(xué)實(shí)驗(yàn)系統(tǒng)”科技專項(xiàng),旨在建成我國(guó)首個(gè)臨近空間科學(xué)實(shí)驗(yàn)系統(tǒng),在多個(gè)典型區(qū)域分階段、多次開展覆蓋參量全、高度范圍完整的臨近空間綜合探測(cè)科學(xué)實(shí)驗(yàn)和相關(guān)科學(xué)研究.為了能夠?qū)γ嫦蚨喾N臨近空間科學(xué)研究主題(如大氣交換、電磁輻射環(huán)境探測(cè)、生物適應(yīng)性、氣體與同位素探測(cè)等)的大型綜合性科學(xué)探測(cè)實(shí)驗(yàn)任務(wù)提供支撐與保障,需要設(shè)計(jì)和建設(shè)兼具任務(wù)規(guī)劃、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)計(jì)算、運(yùn)行管理、數(shù)據(jù)分析、數(shù)據(jù)展示等多種功能的科學(xué)實(shí)驗(yàn)支持系統(tǒng).快速高效完成各類科學(xué)載荷探測(cè)數(shù)據(jù)的處理、分析與展示是該科學(xué)實(shí)驗(yàn)支持系統(tǒng)的核心功能之一,數(shù)據(jù)處理算法集成也成為系統(tǒng)設(shè)計(jì)建設(shè)的一個(gè)重要工作.與其他綜合性數(shù)據(jù)處理系統(tǒng)相比,臨近空間科學(xué)實(shí)驗(yàn)支持系統(tǒng)的數(shù)據(jù)處理分析算法集成具有以下特點(diǎn):1)專業(yè)領(lǐng)域跨越大.臨近空間科學(xué)探測(cè)涉及多種科學(xué)研究領(lǐng)域,不同專業(yè)領(lǐng)域的探測(cè)數(shù)據(jù)在形式、體量和處理方法上存在很大差異.2)探測(cè)載荷多類且多變.臨近空間科學(xué)探測(cè)載荷類別多樣(成像/非成像、探空/地基……),即使是相同的探測(cè)載荷,也可能由于不斷的改進(jìn)優(yōu)化,使得各次實(shí)驗(yàn)數(shù)據(jù)的記錄格式、探測(cè)內(nèi)容或處理算法隨之變化.3)處理算法多樣且不固定.作為一個(gè)科學(xué)研究支持系統(tǒng),數(shù)據(jù)處理需要滿足研究需求:系統(tǒng)需要集成研究過程中由于研究方法和思路的變化產(chǎn)生的不同處理算法;需要滿足對(duì)比分析的需求,系統(tǒng)需要針對(duì)某一探測(cè)數(shù)據(jù)集成多種版本的處理算法(具有不同參數(shù)、不同處理過程、不同處理方法的算法).以上數(shù)據(jù)特點(diǎn)與功能需求,采用分布式計(jì)算+算法集成的方法構(gòu)建處理數(shù)據(jù)處理系統(tǒng),將大幅降低系統(tǒng)升級(jí)維護(hù)、算法迭代的復(fù)雜度,且有利于提升數(shù)據(jù)處理效率.
針對(duì)以上系統(tǒng)需求和集成難點(diǎn),本文借鑒軟件插件設(shè)計(jì)的思想,探討了一種在大型分布式科學(xué)分析系統(tǒng)中集成多種、多版本、多功能算法的集成方法:綜合考慮了算法運(yùn)行依賴、算法注冊(cè)規(guī)范等方面因素,設(shè)計(jì)了算法管理器、算法調(diào)度器,實(shí)現(xiàn)了插件的加載與管控,將算法模塊設(shè)計(jì)為擁有獨(dú)立目錄結(jié)構(gòu)、相互隔離、可以“即插即用”的算法插件.采用該方法集成的系統(tǒng)部署運(yùn)行在ZStack 私有云平臺(tái)上,對(duì)臨近空間科學(xué)實(shí)驗(yàn)多種大氣參數(shù)、原位探測(cè)參數(shù)、生態(tài)參數(shù)的計(jì)算分析實(shí)驗(yàn)驗(yàn)證了該方法的有效性.
插件是應(yīng)用系統(tǒng)的一部分,但是是相對(duì)獨(dú)立的自治域.插件可被軟件主體所引用,與之發(fā)生信息交互,但不能獨(dú)立的脫離軟件主體運(yùn)行[7].與之相對(duì)的是軟件主體可在無插件的情況下獨(dú)立運(yùn)行,不需依賴插件.
基于插件框架的設(shè)計(jì),是將部分功能從軟件主體中剝離出來,以松耦合的方式和軟件主體進(jìn)行連接.二者遵守共同的約定的接口協(xié)議,可以獨(dú)立的發(fā)生變化、升級(jí)、發(fā)布,互相不發(fā)生影響.這種松耦合的方式將整個(gè)軟件的復(fù)雜度分布在軟件主體和各插件中,降低了各自的開發(fā)難度,在軟件研發(fā)初期若出現(xiàn)需求不確定的情況,或預(yù)期在軟件運(yùn)行期業(yè)務(wù)邏輯易發(fā)生變化,都可以采取這種方式應(yīng)對(duì).
一個(gè)基本的插件框架由3 部分組成,應(yīng)用程序主體、插件接口和插件組成.應(yīng)用程序主體負(fù)責(zé)實(shí)現(xiàn)軟件的主體功能,插件接口負(fù)責(zé)插件的接口協(xié)議和通訊,插件負(fù)責(zé)實(shí)現(xiàn)剝離出來的功能.其基本結(jié)構(gòu)如圖1所示.

圖1 插件框架基本結(jié)構(gòu)
在大型分布式系統(tǒng)中,由于插件的松耦合特性,非常適合用來實(shí)現(xiàn)動(dòng)態(tài)變化的某些核心業(yè)務(wù)邏輯,使用插件方式,可有效降低整個(gè)系統(tǒng)的維護(hù)特性.
但在分布式系統(tǒng)中插件與單機(jī)軟件中的實(shí)現(xiàn)方式有所區(qū)別.
首先,由于不同的插件可能運(yùn)行于不同的物理設(shè)備上,因此插件的接口更為復(fù)雜,往往包含了多機(jī)通訊的內(nèi)容,一個(gè)插件有可能與多個(gè)物理設(shè)備發(fā)生交互.
其次,由于有調(diào)度問題,分布式系統(tǒng)中的插件,需配合調(diào)度方法或工作流,以實(shí)現(xiàn)不同業(yè)務(wù)邏輯.
再次,插件的接口有可能不一定直接和軟件主體發(fā)生聯(lián)系,而是以中間件的方式,通過第三方軟件與系統(tǒng)主體進(jìn)行交互.
最后,由于大型分布式系統(tǒng)的特性,插件的數(shù)量和規(guī)模,有可能比單機(jī)軟件大一到兩個(gè)數(shù)量級(jí).
圖2顯示了一種使用中間件的插件實(shí)現(xiàn)方式.

圖2 一種利用中間件通訊的插件架構(gòu)
面向服務(wù)的架構(gòu)SOA是一種有效的分布式系統(tǒng)松耦合集成方式,它將應(yīng)用系統(tǒng)不同的功能單元包裝成獨(dú)立的服務(wù),通過服務(wù)間定義的接口協(xié)議進(jìn)行通訊,協(xié)同完成系統(tǒng)功能.相對(duì)本文的插件來說,SOA的服務(wù)是一種粗粒度的,而計(jì)算內(nèi)核是相對(duì)內(nèi)斂的,非完全功能的模塊,而是針對(duì)某特定計(jì)算過程的程序,其更新速度要求開發(fā)及更新難度小,因此本文沒有采用SOA 方式,而是采用了插件架構(gòu)進(jìn)行數(shù)據(jù)處理算法的集成,將數(shù)據(jù)計(jì)算視為一種服務(wù),該服務(wù)由算法管理器、算法調(diào)度器和多種算法插件組成.因此在本系統(tǒng)中采用的是如圖3所示架構(gòu).

圖3 系統(tǒng)架構(gòu)圖
為滿足某大型科學(xué)實(shí)驗(yàn)系統(tǒng)中的數(shù)據(jù)處理需求,設(shè)計(jì)了用于探測(cè)數(shù)據(jù)處理的算法集成插件框架.框架主要包括了系統(tǒng)主體、算法管理器、算法調(diào)度器.系統(tǒng)主體實(shí)現(xiàn)實(shí)驗(yàn)數(shù)據(jù)的采集、存儲(chǔ)、管理、檢索、任務(wù)控制等主體功能,由多種數(shù)據(jù)處理算法實(shí)現(xiàn)具體的科學(xué)數(shù)據(jù)計(jì)算功能.算法管理器實(shí)現(xiàn)了算法插件注冊(cè)、算法注冊(cè)信息管理、算法運(yùn)行環(huán)境配置.算法調(diào)度器實(shí)現(xiàn)了計(jì)算節(jié)點(diǎn)的計(jì)算資源監(jiān)視、任務(wù)分配、算法調(diào)度功能.算法管理器、算法調(diào)度器共同實(shí)現(xiàn)了多種數(shù)據(jù)處理算法的集成.在系統(tǒng)實(shí)現(xiàn)過程中還專門設(shè)計(jì)了算法注冊(cè)規(guī)范,方便科研人員規(guī)范算法實(shí)現(xiàn)方式,規(guī)范化上注數(shù)據(jù)處理算法.同時(shí)還考慮了算法間的依賴問題,以算法依賴圖的方式輔助算法的調(diào)度過程.
算法管理器負(fù)責(zé)算法插件的注冊(cè),對(duì)系統(tǒng)中注冊(cè)的算法進(jìn)行管理,同時(shí)負(fù)責(zé)系統(tǒng)中算法插件運(yùn)行環(huán)境的配置.算法管理器提供數(shù)據(jù)處理算法插件上傳服務(wù),科研人員根據(jù)統(tǒng)一的處理算法集成接口上傳各自算法,由算法管理器實(shí)現(xiàn)多計(jì)算節(jié)點(diǎn)的部署.算法注冊(cè)信息管理包括了算法信息的錄入、查詢、瀏覽、編輯與刪除等功能.算法插件運(yùn)行環(huán)境配置實(shí)現(xiàn)算法插件的輸入路徑、輸出路徑、數(shù)據(jù)庫(kù)環(huán)境配置,構(gòu)建支持算法插件正常運(yùn)行的環(huán)境.算法管理器接口如圖4所示.

圖4 算法管理器接口圖
算法管理器通過算法插件注冊(cè)單元接收用戶上傳的算法插件注冊(cè)信息及插件程序,向算法注冊(cè)信息管理單元發(fā)送算法插件注冊(cè)信息.算法注冊(cè)信息管理單元接收算法插件注冊(cè)單元提供的算法插件注冊(cè)信息;接收算法插件提供用戶輸入的編輯、刪除、檢索指令,向用戶提供算法注冊(cè)信息檢索、編輯、刪除等功能.算法插件運(yùn)行環(huán)境配置單元接收算法插件提供用戶提交的算法插件運(yùn)行環(huán)境配置信息,配置運(yùn)行環(huán)境.
算法插件注冊(cè)與集成過程如圖5所示.
1)用戶向系統(tǒng)上傳插件程序,由系統(tǒng)推薦或手工指定部署至某數(shù)據(jù)處理節(jié)點(diǎn).
2)系統(tǒng)解析用戶提交的算法注冊(cè)信息并存儲(chǔ),包括算法名稱、適用范圍、輸入輸出等.
3)配置算法運(yùn)行環(huán)境,例如依賴包、文件交互路徑、數(shù)據(jù)庫(kù)信息等.
4)算法入庫(kù)完成.

圖5 算法插件注冊(cè)與集成流程圖
在科學(xué)探測(cè)實(shí)驗(yàn)中,獲取的探測(cè)數(shù)據(jù)種類多,數(shù)據(jù)處理任務(wù)量大,處理過程消耗時(shí)間長(zhǎng),并且對(duì)系統(tǒng)硬件資源有較高需求.為提高數(shù)據(jù)處理任務(wù)的執(zhí)行效率,采用了集群式并行數(shù)據(jù)處理技術(shù),在多臺(tái)數(shù)據(jù)計(jì)算節(jié)點(diǎn)間合理地分配探測(cè)數(shù)據(jù)處理任務(wù).探測(cè)數(shù)據(jù)并行處理過程涉及資源調(diào)度節(jié)點(diǎn)以及多個(gè)數(shù)據(jù)計(jì)算節(jié)點(diǎn).資源調(diào)度節(jié)點(diǎn)接收到數(shù)據(jù)處理任務(wù)后,采集各數(shù)據(jù)計(jì)算節(jié)點(diǎn)的系統(tǒng)資源狀態(tài),根據(jù)任務(wù)分配算法將任務(wù)分配至相應(yīng)的數(shù)據(jù)計(jì)算節(jié)點(diǎn).數(shù)據(jù)計(jì)算節(jié)點(diǎn)按照?qǐng)?zhí)行流程,逐步對(duì)探測(cè)數(shù)據(jù)進(jìn)行處理,并上報(bào)處理進(jìn)度,直至任務(wù)執(zhí)行完畢,最后將產(chǎn)品數(shù)據(jù)存儲(chǔ)至文件存儲(chǔ)系統(tǒng).
要使并行集群有較好的處理效果,需要考慮數(shù)據(jù)計(jì)算節(jié)點(diǎn)自身的處理性能和當(dāng)前的實(shí)時(shí)負(fù)載情況,因此,引入動(dòng)態(tài)反饋機(jī)制以實(shí)時(shí)獲取數(shù)據(jù)計(jì)算節(jié)點(diǎn)的當(dāng)前狀態(tài),各個(gè)計(jì)算節(jié)點(diǎn)需要定期的將自身的狀態(tài)信息反饋給調(diào)度節(jié)點(diǎn),更新資源調(diào)度節(jié)點(diǎn)上記錄的信息.
動(dòng)態(tài)反饋機(jī)制模型如圖6所示.調(diào)度主節(jié)點(diǎn)會(huì)周期地收集信息,W0 代表數(shù)據(jù)計(jì)算節(jié)點(diǎn)前一個(gè)周期的權(quán)重值,數(shù)據(jù)計(jì)算節(jié)點(diǎn)周期性地向調(diào)度主節(jié)點(diǎn)反饋其當(dāng)前的負(fù)載信息,調(diào)度主節(jié)點(diǎn)根據(jù)算法F和這些信息對(duì)當(dāng)前數(shù)據(jù)計(jì)算節(jié)點(diǎn)的權(quán)重值進(jìn)行調(diào)整,計(jì)算出其當(dāng)前權(quán)重值New_W(i).當(dāng)數(shù)據(jù)處理任務(wù)r到來后,調(diào)度主節(jié)點(diǎn)根據(jù)算法把任務(wù)分配到負(fù)載權(quán)值比例較小(即相對(duì)空閑)的數(shù)據(jù)計(jì)算節(jié)點(diǎn)上[8].

圖6 動(dòng)態(tài)反饋機(jī)制模型
采用插件框架,要求算法開發(fā)人員要按照約定的規(guī)范對(duì)算法進(jìn)行描述,才能在系統(tǒng)中進(jìn)行算法注冊(cè).數(shù)據(jù)處理算法以程序插件形式獨(dú)立封裝,為確保算法插件可被規(guī)范化集成調(diào)用,需從內(nèi)容、格式、方法等層面制定數(shù)據(jù)處理算法集成規(guī)范,明確數(shù)據(jù)處理算法插件集成過程涉及到的算法配置要求、算法編譯要求、算法集成形式、算法接口要求、算法運(yùn)行要求及算法注冊(cè)要求.算法配置要求包括算法的依賴庫(kù)、配置文件的存放目錄要求及命名要求;算法編譯要求中規(guī)定通過相對(duì)路徑加載依賴庫(kù)和配置文件的方法;算法封裝形式要求中規(guī)定算法實(shí)體插件必須封裝為在Linux操作系統(tǒng)或Windows 操作系統(tǒng)下的可執(zhí)行程序;算法接口要求分為輸入接口和輸出接口,算法輸入接口包括探測(cè)數(shù)據(jù)文件、探測(cè)數(shù)據(jù)名稱、探測(cè)數(shù)據(jù)類型、探測(cè)數(shù)據(jù)描述信息等內(nèi)容,算法輸出接口包括探測(cè)產(chǎn)品數(shù)據(jù)、數(shù)據(jù)處理產(chǎn)品存儲(chǔ)路徑、數(shù)據(jù)處理進(jìn)度上報(bào)信號(hào)、任務(wù)完成報(bào)告格式要求;算法運(yùn)行要求包括算法插件的調(diào)用方式、算法插件的調(diào)用指令、算法插件執(zhí)行過程中的文件操作權(quán)限設(shè)計(jì)、算法插件各類結(jié)束狀態(tài)的返回值;算法注冊(cè)要求包括算法名稱、算法描述信息、算法版本、算法部署路徑、算法插件運(yùn)行最長(zhǎng)允許時(shí)間、算法插件啟動(dòng)的進(jìn)程數(shù)、算法插件占用的內(nèi)存等注冊(cè)信息的格式規(guī)范.
算法插件注冊(cè)要求包括算法插件名稱、算法插件描述信息、算法插件版本、算法插件部署路徑、算法插件啟動(dòng)的進(jìn)程數(shù)、算法插件占用的內(nèi)存、算法插件研制單位、算法插件聯(lián)系人等注冊(cè)信息的格式規(guī)范.
1)算法插件名稱:算法名稱由英文或數(shù)字構(gòu)成,不包含中文及特殊符號(hào).
2)算法插件描述信息:算法描述信息由中英文字符、符號(hào)及數(shù)字組成,不超過500 字.
3)算法插件版本:由“V”+版本號(hào)構(gòu)成,版本號(hào)范圍為0-99.
4)算法插件部署路徑:要求算法插件可在任意路徑下正常運(yùn)行.
5)算法插件啟動(dòng)進(jìn)程數(shù):描述信息由數(shù)字組成.
6)算法插件占用內(nèi)存:描述信息由數(shù)字+“MB”組成.
算法插件注冊(cè)信息需填入XML 文件后上傳至系統(tǒng),文件名為算法插件名稱+“.xml”,文件內(nèi)容如下所示:

由于科學(xué)計(jì)算的數(shù)據(jù),處理過程多種多樣,算法之間有可能有依賴關(guān)系.這種依賴關(guān)系并非調(diào)用關(guān)系,而是數(shù)據(jù)處理過程與級(jí)別的關(guān)系.在本文中定義算法A1依賴于算法A2,表示為D(A1,A2).是指如果要用算法A1對(duì)某次實(shí)驗(yàn)的某個(gè)載荷獲取數(shù)據(jù)進(jìn)行處理,必須要由算法A2先對(duì)數(shù)據(jù)進(jìn)行處理.
系統(tǒng)依賴圖是程序基于圖形的中間表示,能清晰第表示出程序中的各種控制依賴和數(shù)據(jù)依賴關(guān)系及程序的語(yǔ)法與語(yǔ)義信息[9].通過構(gòu)建算法依賴圖的方式來進(jìn)行算法間的依賴描述,借用系統(tǒng)依賴圖的概念,但是做相應(yīng)簡(jiǎn)化,將語(yǔ)句節(jié)點(diǎn)、調(diào)用節(jié)點(diǎn)、參數(shù)節(jié)點(diǎn)等簡(jiǎn)化為單一算法節(jié)點(diǎn),將控制依賴、流依賴、聲明依賴、調(diào)用及傳參等關(guān)系,簡(jiǎn)化為單一的調(diào)用關(guān)系.因此算法依賴圖可用簡(jiǎn)單的有向無環(huán)圖來表示,圖中節(jié)點(diǎn)表示算法,帶方向的連接表示依賴關(guān)系.節(jié)點(diǎn)可以單獨(dú)存在,即不需依賴其他算法可獨(dú)立進(jìn)行數(shù)據(jù)處理.因算法不可循環(huán)依賴,因此圖為無環(huán)圖.圖中還有一類特殊的節(jié)點(diǎn),為底層庫(kù),多為數(shù)據(jù)格式讀寫庫(kù)、通用計(jì)算庫(kù)等,這些底層庫(kù)并非自行開發(fā).
算法注冊(cè)時(shí)表示的D(A1,A2),D(A2,A4),…,D(Am,An),最終在系統(tǒng)中合并為整個(gè)計(jì)算系統(tǒng)的算法依賴圖.圖7為部分算法的依賴關(guān)系圖示例.

圖7 算法依賴圖示例
系統(tǒng)在初始化計(jì)算任務(wù)時(shí),需根據(jù)算法依賴圖輔助計(jì)算任務(wù)的制定,以確保業(yè)務(wù)邏輯的順利執(zhí)行.
在實(shí)際工作中,用Java 實(shí)現(xiàn)了臨近空間探測(cè)數(shù)據(jù)處理算法集成調(diào)度系統(tǒng),布署于曙光天闊I620-G20機(jī)架式服務(wù)器中,算法管理器與并行計(jì)算管理器相配合,在ZStack 私有云服務(wù)器中實(shí)現(xiàn)了多業(yè)務(wù)、多算法、多類數(shù)據(jù)的并行處理和業(yè)務(wù)邏輯的隨時(shí)調(diào)整.系統(tǒng)運(yùn)行硬件環(huán)境如圖8所示.

圖8 系統(tǒng)運(yùn)行硬件環(huán)境圖
臨近空間探測(cè)數(shù)據(jù)處理算法集成調(diào)度系統(tǒng)包括:資源監(jiān)控模塊、算法集成管理模塊、任務(wù)調(diào)度模塊.資源監(jiān)控模塊收集各計(jì)算服務(wù)器的狀態(tài)信息并向用戶提供圖形化展示;算法集成管理模塊提供算法插件注冊(cè)、注冊(cè)信息管理、插件運(yùn)行環(huán)境配置等功能;任務(wù)調(diào)度模塊將隊(duì)列中的數(shù)據(jù)處理任務(wù)合理分配并調(diào)用相關(guān)的算法插件執(zhí)行數(shù)據(jù)處理任務(wù).系統(tǒng)結(jié)構(gòu)如圖9.
系統(tǒng)可支持實(shí)現(xiàn)科學(xué)探測(cè)數(shù)據(jù)的處理,包括數(shù)據(jù)歸檔處理、輻射校正、幾何校正、生態(tài)參數(shù)計(jì)算等算法共3 類16 個(gè);探測(cè)數(shù)據(jù)處理任務(wù)分配用時(shí)少于0.2 s;算法插件調(diào)度響應(yīng)時(shí)間少于0.5 s;可支持不少于32 個(gè)探測(cè)數(shù)據(jù)處理任務(wù)并行執(zhí)行.
系統(tǒng)具備良好的可擴(kuò)展性,在實(shí)驗(yàn)期間,根據(jù)處理結(jié)果分析迭代的情況,對(duì)算法進(jìn)行了多次版本升級(jí),共計(jì)12 次.版本升級(jí)過程中,大系統(tǒng)業(yè)務(wù)無影響、無宕機(jī).且多個(gè)版本共存,可根據(jù)具體業(yè)務(wù)的不同,在工作流中配置使用不同版本的算法,完成不同業(yè)務(wù)邏輯的實(shí)現(xiàn).系統(tǒng)中的資源監(jiān)控模塊界面如圖10所示.算法集成管理模塊界面如圖11所示.任務(wù)調(diào)度模塊界面如圖12所示.

圖9 系統(tǒng)結(jié)構(gòu)圖

圖10 資源監(jiān)控模塊界面截圖

圖11 算法集成管理模塊界面截圖

圖12 任務(wù)調(diào)度模塊界面截圖
本文設(shè)計(jì)的分布式計(jì)算系統(tǒng)中的插件式算法集成方法,經(jīng)過兩套科學(xué)實(shí)驗(yàn)計(jì)算系統(tǒng)的運(yùn)行實(shí)驗(yàn),驗(yàn)證了該算法集成方法的有效性,可有效的實(shí)現(xiàn)系統(tǒng)計(jì)算功能,且靈活性高,升級(jí)便利,配置方便.從目前的研究現(xiàn)狀和發(fā)展趨勢(shì)來看,在云計(jì)算、霧計(jì)算等分布式計(jì)算架構(gòu)下,研究用于靈活科學(xué)計(jì)算的插件式算法集成算法,對(duì)于科學(xué)實(shí)驗(yàn)系統(tǒng)所采集的數(shù)據(jù)開展靈活的處理與分析具有重要的實(shí)際意義.由于目前的設(shè)計(jì)模式還無法實(shí)現(xiàn)插件自己解決依賴問題,只能使用調(diào)度器,在設(shè)立處理任務(wù)的時(shí)候,用依賴圖來人工輔助,后續(xù)將持續(xù)研發(fā),實(shí)現(xiàn)任務(wù)初始化自動(dòng)遍歷依賴圖,規(guī)劃計(jì)算邏輯和流程.
計(jì)算機(jī)系統(tǒng)應(yīng)用2021年3期