譚羽豐,陳 旻,張博文,沈超然,溫永寧
1. 虛擬地理環(huán)境教育部重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210023; 2. 江蘇省地理信息資源開(kāi)發(fā)與利用協(xié)同創(chuàng)新中心,江蘇 南京 210023; 3. 江蘇省地理環(huán)境演化國(guó)家重點(diǎn)實(shí)驗(yàn)室培育建設(shè)點(diǎn),江蘇 南京 210023
地理建模與模擬環(huán)境是虛擬地理環(huán)境的核心子環(huán)境,是虛擬地理環(huán)境對(duì)現(xiàn)實(shí)世界進(jìn)行預(yù)測(cè)與模擬的關(guān)鍵。地理分析模型的接入、高效利用是地理建模與模擬子環(huán)境實(shí)現(xiàn)的基礎(chǔ),需要充分利用已有的地理分析模型資源,與虛擬地理環(huán)境進(jìn)行集成,這就涉及對(duì)已有地理模型資源的共享與重用問(wèn)題[1-6]。隨著地理科學(xué)的研究與發(fā)展,地理學(xué)家針對(duì)不同的研究目標(biāo)、研究對(duì)象、研究區(qū)域以及不同的尺度,構(gòu)建了大量的地理分析模型,這些地理分析模型對(duì)虛擬地理環(huán)境發(fā)展具有重要的現(xiàn)實(shí)意義[7-8]。由于地理分析模型來(lái)自多領(lǐng)域、多學(xué)科,且開(kāi)發(fā)及使用標(biāo)準(zhǔn)不一,使得這些模型難以共享及重用,直接影響了網(wǎng)絡(luò)環(huán)境下虛擬地理環(huán)境開(kāi)放式構(gòu)建的進(jìn)程。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,由于平臺(tái)的不同,地理分析模型共享與重用過(guò)程中的模型封裝、模型運(yùn)行、數(shù)據(jù)傳遞等關(guān)鍵環(huán)節(jié)具有較大的差異性,阻礙了模型在網(wǎng)絡(luò)環(huán)境下的服務(wù)效能。當(dāng)前地理分析模型運(yùn)行環(huán)境主要集中于Windows平臺(tái)與Linux平臺(tái),面向Windows平臺(tái)下的地理分析模型封裝已經(jīng)有了較多的研究,如文獻(xiàn)[9]借助地理信息服務(wù)組合研究了模型網(wǎng)絡(luò)化共享策略;文獻(xiàn)[10]基于代碼遷移技術(shù)對(duì)WPS(web processing service)服務(wù)進(jìn)行改進(jìn);文獻(xiàn)[11—13]通過(guò)對(duì)地理分析模型的特點(diǎn)進(jìn)行總結(jié)與分析,提出了面向開(kāi)放式網(wǎng)絡(luò)環(huán)境的地理模型服務(wù)化封裝理論并進(jìn)行了相關(guān)研究。但是,地理分析模型的服務(wù)化封裝相關(guān)研究目前尚集中在Windows平臺(tái)下,對(duì)Linux平臺(tái)下的地理分析模型服務(wù)共享研究相對(duì)較少。Linux平臺(tái)下具有較多數(shù)量的模型,并且在不斷增加、豐富和完善。因此,在開(kāi)放式網(wǎng)絡(luò)環(huán)境下針對(duì)Linux平臺(tái)的模型,設(shè)計(jì)其服務(wù)化封裝策略,將有效推動(dòng)地理分析模型共享與重用進(jìn)程。相關(guān)難點(diǎn)存在于:
(1) Linux平臺(tái)下有多個(gè)系統(tǒng)分支,且各系統(tǒng)具有多個(gè)版本,這些系統(tǒng)與版本的安全策略不盡相同,導(dǎo)致模型數(shù)據(jù)訪問(wèn)及程序執(zhí)行時(shí)容易產(chǎn)生權(quán)限不足等相關(guān)問(wèn)題。
(2) 運(yùn)行在Linux平臺(tái)下的地理分析模型通常存在結(jié)構(gòu)復(fù)雜、數(shù)據(jù)異構(gòu)等特點(diǎn),需要尋求通用封裝標(biāo)準(zhǔn),以滿足Linux平臺(tái)的地理分析模型服務(wù)化封裝。
(3) Linux平臺(tái)下地理分析模型所依賴(lài)的運(yùn)行環(huán)境較為復(fù)雜,包括眾多的硬件環(huán)境、軟件環(huán)境及依賴(lài)項(xiàng)等,模型環(huán)境配置描述也是模型服務(wù)化封裝的難點(diǎn)之一。
面向以上難點(diǎn),本文研究Linux平臺(tái)下地理分析模型的封裝方法,設(shè)計(jì)了安全策略及模型服務(wù)化接口,服務(wù)于地理分析模型在Linux平臺(tái)不同操作系統(tǒng)下的可遷移部署及訪問(wèn),以支持模型資源在網(wǎng)絡(luò)環(huán)境下的共享與重用。
為了在網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)Linux平臺(tái)下地理分析模型的服務(wù)共享與重用,本文面向Linux平臺(tái)特性對(duì)模型服務(wù)化封裝進(jìn)行整體設(shè)計(jì)。如圖1所示,模型服務(wù)封裝起源于模型描述,服務(wù)于模型部署及發(fā)布。模型描述是對(duì)模型信息的結(jié)構(gòu)化表達(dá),它包括模型的名稱(chēng)、用途、機(jī)理等基本信息,模型執(zhí)行的權(quán)限及行為信息,部署所需的依賴(lài)環(huán)境、安全需求等部署相關(guān)信息?;谀P兔枋?,模型的封裝主要需要解決兩方面問(wèn)題:①Linux平臺(tái)下模型服務(wù)化封裝的安全性問(wèn)題;②模型在Linux平臺(tái)不同系統(tǒng)下的異構(gòu)性問(wèn)題。封裝后的模型可以支持部署及調(diào)用,從而實(shí)現(xiàn)模型服務(wù)共享與重用。
針對(duì)Linux平臺(tái)下地理分析模型的特征及使用流程,模型服務(wù)化封裝首先需要對(duì)Linux平臺(tái)的安全性進(jìn)行分析,主要分為兩個(gè)方面:用戶權(quán)限與防火墻配置。用戶權(quán)限設(shè)計(jì)用于保障用戶對(duì)于Linux平臺(tái)下模型的順利調(diào)用;防火墻設(shè)計(jì)保護(hù)模型資源及計(jì)算資源的運(yùn)行安全。
其次,需要設(shè)計(jì)Linux平臺(tái)下地理分析模型服務(wù)化封裝的基本接口:模型基本信息描述接口、執(zhí)行接口和部署接口。①模型基本信息描述接口負(fù)責(zé)對(duì)模型語(yǔ)義信息進(jìn)行描述;②執(zhí)行接口負(fù)責(zé)模型數(shù)據(jù)與執(zhí)行行為的描述;③部署接口負(fù)責(zé)描述模型的部署信息、Linux平臺(tái)不同系統(tǒng)權(quán)限與安全設(shè)置。模型提供者能夠借助模型部署接口以結(jié)構(gòu)化的方式提供模型部署所需的相關(guān)信息。
Linux平臺(tái)的安全問(wèn)題是地理分析模型封裝必須克服的難點(diǎn)問(wèn)題之一。為了確保計(jì)算資源硬軟件環(huán)境、事件處理的安全性和可靠性,以及數(shù)據(jù)傳輸過(guò)程的機(jī)密性,需要設(shè)計(jì)一套安全策略以支撐模型封裝的靈活配置。下面主要從權(quán)限設(shè)置、防火墻設(shè)置兩個(gè)方面對(duì)安全策略進(jìn)行具體分析。
2.1.1 權(quán)限設(shè)置
在Linux平臺(tái)下,所有的事物都以文件的形式存在,系統(tǒng)安全的核心即為文件管理系統(tǒng)[14]。地理分析模型在計(jì)算節(jié)點(diǎn)上是以文件夾與文件的形式存在,所以Linux平臺(tái)文件系統(tǒng)權(quán)限配置是模型運(yùn)行的關(guān)鍵。
Linux操作系統(tǒng)的用戶權(quán)限比Windows系統(tǒng)中的權(quán)限要嚴(yán)格。Linux對(duì)用戶角色主要分3類(lèi):第1類(lèi)是文件擁有者(User),即創(chuàng)建該文件的用戶;第2類(lèi)為文件擁有者所在的組(Group),當(dāng)某個(gè)用戶創(chuàng)建一個(gè)文件后,這個(gè)文件所在的組就是該用戶所在的組,其中不包含文件擁有者;第3類(lèi)是其他用戶(Other),即除了User和Group以外的用戶。用戶權(quán)限屬于文件的屬性,Linux平臺(tái)下提供了相關(guān)接口查詢的文件屬性,圖2為某一個(gè)文件的屬性。
圖2 Linux平臺(tái)下文件屬性Fig.2 File property on Linux
文件的類(lèi)型權(quán)限主要分5種,通常用文件類(lèi)型權(quán)限字符串的第1個(gè)字符進(jìn)行表示。當(dāng)為[d]時(shí),則代表該文件的類(lèi)型為文件夾;當(dāng)為[-]時(shí),則表示是單個(gè)文件等。此外,其他字符每3個(gè)為一組,均為r、w、x 3個(gè)字母的組合,r代表可讀(read),w代表可寫(xiě)(write)、x代表可執(zhí)行(execute)。3個(gè)字母的順序是固定的,當(dāng)沒(méi)有權(quán)限的時(shí)候會(huì)被[-]代替。如圖3所示,該文件類(lèi)型為單個(gè)文件,文件擁有者的權(quán)限為可讀、可寫(xiě)與可執(zhí)行。
2.1.2 防火墻配置
服務(wù)化之后的地理分析模型需要部署在Linux平臺(tái)計(jì)算節(jié)點(diǎn)上進(jìn)行調(diào)用,網(wǎng)絡(luò)安全問(wèn)題至關(guān)重要,需要依據(jù)計(jì)算節(jié)點(diǎn)運(yùn)行機(jī)制制定對(duì)應(yīng)的防火墻策略,保障模型服務(wù)的穩(wěn)定運(yùn)行。
Linux平臺(tái)下防火墻通過(guò)制定一些規(guī)則,對(duì)進(jìn)入局域網(wǎng)的主機(jī)封包數(shù)據(jù)進(jìn)行管理。本文基于Nefilter框架[15]對(duì)模型計(jì)算節(jié)點(diǎn)配置相應(yīng)防火墻規(guī)則,控制模型相關(guān)服務(wù)的訪問(wèn)。該框架可以對(duì)流入與流出的數(shù)據(jù)進(jìn)行細(xì)化控制,實(shí)現(xiàn)防火墻及數(shù)據(jù)包分隔等功能。借助Nefilter的配置工具iptables,可以對(duì)計(jì)算節(jié)點(diǎn)的數(shù)據(jù)包流入流出進(jìn)行過(guò)濾,有效地阻止部分網(wǎng)絡(luò)攻擊和非法數(shù)據(jù)流入,保護(hù)數(shù)據(jù)資源、模型資源的安全。
基于以上分析,本節(jié)從用戶權(quán)限的安全策略、防火墻配置策略兩個(gè)方面對(duì)模型服務(wù)化安全策略進(jìn)行設(shè)計(jì)。
(1) 從地理分析模型文件結(jié)構(gòu)對(duì)用戶權(quán)限進(jìn)行設(shè)置,將具有相關(guān)聯(lián)系的文件歸到統(tǒng)一的文件夾,構(gòu)建模型整體文件夾結(jié)構(gòu)。制定相應(yīng)的用戶權(quán)限如圖4所示。
圖4 模型標(biāo)準(zhǔn)化文件權(quán)限控制Fig.4 Model standardized package permission control
Linux平臺(tái)下運(yùn)行地理分析模型程序,如果對(duì)文件的權(quán)限考慮不周全可能會(huì)造成文件沒(méi)有訪問(wèn)權(quán)限或者被攻擊。為保證模型運(yùn)行時(shí)對(duì)相關(guān)文件的順利調(diào)用,對(duì)各個(gè)模型相關(guān)文件進(jìn)行權(quán)限設(shè)置。其中Model文件里儲(chǔ)存內(nèi)容為地理分析模型的啟動(dòng)文件和模型描述文檔(model description language,MDL)等,模型啟動(dòng)文件是模型運(yùn)行的核心文件;Assmbly文件夾存儲(chǔ)了地理分析模型封裝所需相關(guān)庫(kù)文件以及必須依賴(lài)的運(yùn)行庫(kù)文件;Supportive文件夾存儲(chǔ)了模型相關(guān)依賴(lài)項(xiàng)文件;Testify文件夾存儲(chǔ)了模型的測(cè)試示例數(shù)據(jù);Licence.txt為模型的版權(quán)信息和相關(guān)的開(kāi)源聲明,僅供模型使用者查看;Package.config文件為模型運(yùn)行的入口文件配置、端口說(shuō)明等。由此可見(jiàn),地理分析模型的文件結(jié)構(gòu)中,每個(gè)文件具有各自的職能與作用,要考慮到每個(gè)文件夾及文件在模型運(yùn)行過(guò)程中的權(quán)限控制。首先,從整體上對(duì)模型的文件夾的權(quán)限進(jìn)行統(tǒng)一控制,文件夾設(shè)置為可讀、可寫(xiě)及可操作,文件設(shè)置為可讀、不可寫(xiě)及不可操作。其次,在具體過(guò)程中對(duì)模型文件夾及文件的操作權(quán)限進(jìn)一步的設(shè)置,例如模型執(zhí)行程序、MDL、示例數(shù)據(jù)等文件需要對(duì)其設(shè)置為可讀、可寫(xiě)與可操作。
(2) 本文基于Linux平臺(tái)提供的Netfilter框架,研究服務(wù)化地理分析模型封裝過(guò)程中軟件防火墻的配置策略。
由于網(wǎng)絡(luò)環(huán)境的不同,防火墻的基本策略制定需要根據(jù)不同環(huán)境制定不同的安全策略。在模型封裝過(guò)程中,因?yàn)長(zhǎng)inux平臺(tái)下的計(jì)算節(jié)點(diǎn)是地理分析模型在網(wǎng)絡(luò)環(huán)境中的樞紐,所以對(duì)此設(shè)計(jì)策略為:模型服務(wù)與其相關(guān)服務(wù)的防火墻出入站配置列為允許,如模型運(yùn)行服務(wù)和數(shù)據(jù)庫(kù)服務(wù);被列為不允許的服務(wù)都是禁止,如一些DOS攻擊等。此外,其他服務(wù)不進(jìn)行處理,按照系統(tǒng)默認(rèn)規(guī)則進(jìn)行配置。
采用這種策略是為了保證計(jì)算節(jié)點(diǎn)的安全性,但可能造成其他的一些服務(wù)無(wú)法正常使用,所以要明確地規(guī)定計(jì)算節(jié)點(diǎn)的每項(xiàng)服務(wù)與相關(guān)的協(xié)議。圖5是Linux平臺(tái)計(jì)算節(jié)點(diǎn)的防火墻規(guī)則的過(guò)濾流程圖,對(duì)模型服務(wù)、模型相關(guān)服務(wù)以及相關(guān)禁止服務(wù)檢測(cè)并進(jìn)行相應(yīng)的處理。
圖5 Linux平臺(tái)下防火墻規(guī)則Fig.5 Firewall ruleson Linux
基于開(kāi)放式網(wǎng)絡(luò)環(huán)境下地理分析模型共享的本質(zhì)需求[16-18],本文面向Linux平臺(tái)下地理分析模型服務(wù)共享提出了一種封裝策略,如圖6所示。該策略封裝了模型的3類(lèi)接口:①模型基本信息描述接口,以幫助用戶更好地對(duì)模型進(jìn)行基本信息的描述;②模型行為接口,包含了模型數(shù)據(jù)接口與模型執(zhí)行行為接口,模型數(shù)據(jù)接口對(duì)模型數(shù)據(jù)進(jìn)行統(tǒng)一化的表達(dá),模型執(zhí)行行為接口利用狀態(tài)機(jī)響應(yīng)模型(SM-ER模型)對(duì)模型的行為進(jìn)行具體的描述;③模型部署接口,服務(wù)于模型在Linux平臺(tái)不同系統(tǒng)下的部署。這些接口的設(shè)計(jì)同時(shí)兼顧用戶權(quán)限、安全等問(wèn)題,實(shí)現(xiàn)跨Linux平臺(tái)系統(tǒng)的模型服務(wù)共享。
圖6 Linux平臺(tái)下模型服務(wù)化封裝接口設(shè)計(jì)圖Fig.6 Design for model service encapsulation interface on Linux
本文參考本研究小組已經(jīng)提出的相關(guān)模型基本信息描述接口設(shè)計(jì)[12],基于對(duì)Linux平臺(tái)相關(guān)特性以及地理分析模型要素的分析,擴(kuò)展了模型基本信息描述接口,實(shí)現(xiàn)了圖形化可動(dòng)態(tài)配置的模型描述接口生成工具。
原接口主要包含了模型類(lèi)別集合(category collection)和本地化屬性集合(localattri-butecollection)的接口。本文基于此進(jìn)行了擴(kuò)展,將模型不同節(jié)點(diǎn)抽象出統(tǒng)一的節(jié)點(diǎn)結(jié)構(gòu),對(duì)不同的節(jié)點(diǎn)進(jìn)行結(jié)構(gòu)化的描述。如圖7所示,ModelTreeNode為節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),包含Name和Attribute兩個(gè)屬性;其中Name為節(jié)點(diǎn)的名稱(chēng);Attribute為每個(gè)節(jié)點(diǎn)的特有屬性,在不同的派生類(lèi)中由不同的對(duì)象來(lái)表達(dá),例如,在ModelCategoryObject類(lèi)中由ModelCategory表達(dá),在ModelLocalAttrbuteObject類(lèi)中由ModelLocalAttrbute
表達(dá)。在IAtrributeSet接口中,本文將Category-Collection與LocalAttributeCollection進(jìn)行了改進(jìn),其中所操作的對(duì)象為ModelCategoryObject和ModelLocalAttributeObject?;趯?duì)該接口的擴(kuò)展,用戶可以對(duì)模型基本信息進(jìn)行圖形化動(dòng)態(tài)可配置描述,從而使用戶能夠更直觀地了解模型信息。根據(jù)改進(jìn)模型基本信息接口生成的模型基本信息動(dòng)態(tài)配置工具如圖8所示。
圖7 基于模型描述接口的自動(dòng)化配置接口Fig.7 Automated configuration interface based on model description interface
圖8 模型基本信息生成工具Fig.8 Configure tool of model basic information
3.2.1 模型數(shù)據(jù)接口
由于各領(lǐng)域建模方法的差異性,使得不同地理分析模型的數(shù)據(jù)需求具有較大的差異性[19]。本研究小組在對(duì)大量地理分析模型數(shù)據(jù)進(jìn)行系統(tǒng)分析的基礎(chǔ)上,提出并設(shè)計(jì)了針對(duì)地理分析模型的統(tǒng)一數(shù)據(jù)表達(dá)與交換模型(universal data description and eXchange model,UDX),以此來(lái)描述復(fù)雜的地理模型數(shù)據(jù)語(yǔ)義及結(jié)構(gòu)信息,目的在于屏蔽模型數(shù)據(jù)使用過(guò)程中的異構(gòu)性[20]。UDX主要分為兩個(gè)部分,一部分為UDX Data,負(fù)責(zé)承載模型數(shù)據(jù);另一部分為UDX Schema,用于描述地理分析模型的數(shù)據(jù)結(jié)構(gòu)與語(yǔ)義信息。由于數(shù)據(jù)接口描述不涉及Linux平臺(tái)特性,本文直接借助UDX實(shí)現(xiàn)Linux平臺(tái)下模型數(shù)據(jù)接口的設(shè)計(jì),UDX也為模型數(shù)據(jù)交換控制的安全性奠定了基礎(chǔ)。
3.2.2 模型執(zhí)行行為接口
模型執(zhí)行過(guò)程中涉及多個(gè)計(jì)算過(guò)程,通常情況下,模型需要與模型使用者進(jìn)行頻繁的交互操作。在Linux平臺(tái)下,模型運(yùn)行每個(gè)計(jì)算過(guò)程中的數(shù)據(jù)交換均需要對(duì)其權(quán)限進(jìn)行控制。如圖9所示:本研究利用狀態(tài)機(jī)-事件響應(yīng)模型(the state-machine event response model,SM-ER模型)[21-22]對(duì)模型的計(jì)算過(guò)程進(jìn)行描述,模型的運(yùn)行流程由多個(gè)計(jì)算過(guò)程組成,并抽象為一個(gè)狀態(tài)機(jī);模型每個(gè)計(jì)算過(guò)程被抽象為一個(gè)狀態(tài);每個(gè)狀態(tài)中的模型數(shù)據(jù)交換抽象為事件。在模型運(yùn)算流程中,每個(gè)事件中均有對(duì)模型數(shù)據(jù)交換的權(quán)限控制,以保證模型輸入輸出數(shù)據(jù)的傳輸及存儲(chǔ)安全。
圖9 兼顧權(quán)限控制的模型執(zhí)行行為Fig.9 The model execution behavior combining permissions control
模型執(zhí)行行為接口設(shè)計(jì)UML如圖10所示。ModelBehavior接口用來(lái)描述模型運(yùn)行過(guò)程中的狀態(tài)與行為,包含模型數(shù)據(jù)需求的描述RealatedDataSet和模型狀態(tài)組StateGroup。RealatedDataSet描述模型執(zhí)行行為的驅(qū)動(dòng)數(shù)據(jù);模型狀態(tài)組StateGroup由一個(gè)或多個(gè)狀態(tài)ModelState組成,每個(gè)ModelState表示模型運(yùn)行時(shí)不同的狀態(tài),ModelState包含一個(gè)或多個(gè)ModelEvent,每個(gè)ModelEvent表示模型的數(shù)據(jù)交換行為。ModelEvent中PermissionDesc字段表示對(duì)此輸入、輸出數(shù)據(jù)的操作權(quán)限控制描述,通過(guò)對(duì)這一字段進(jìn)行設(shè)置,從而對(duì)模型輸入輸出數(shù)據(jù)文件的權(quán)限進(jìn)行設(shè)定,以達(dá)到模型對(duì)輸入輸出文件安全性進(jìn)行控制的目的。
圖10 模型執(zhí)行行為接口Fig.10 Model behavior interface
為了將地理分析模型部署在分布式網(wǎng)絡(luò)下不同Linux計(jì)算節(jié)點(diǎn)上,以及降低Linux平臺(tái)不同系統(tǒng)所帶來(lái)的影響,保證地理分析模型的可移植性,根據(jù)計(jì)算機(jī)科學(xué)領(lǐng)域中的代碼分層化設(shè)計(jì)思路,將模型部署接口分為兩個(gè)部分:Linux平臺(tái)系統(tǒng)的模型部署主體接口和環(huán)境相關(guān)接口。模型部署接口的整體架構(gòu)設(shè)計(jì)如圖11所示。
圖11 模型部署接口設(shè)計(jì)圖Fig.11 Design for model deployment interface
(1) 模型部署主體接口負(fù)責(zé)模型部署過(guò)程中共性部分,這樣設(shè)計(jì)的目的使模型部署依賴(lài)與Linux平臺(tái)系統(tǒng)環(huán)境特征解耦,使得模型部署具有可遷移性;模型部署主體接口(IModelDeployment)設(shè)計(jì)如圖12所示,由模型執(zhí)行程序信息(ModelEntrance)、模型配置文檔信息(ModelConfigure)、模型依賴(lài)項(xiàng)信息(ModelAssembly)及模型用戶權(quán)限信息(ModelUserPermission)組成。
圖12 模型部署主體接口Fig.12 Model deployment main interface
(2) 環(huán)境相關(guān)接口是面向Linux平臺(tái)不同系統(tǒng)下模型運(yùn)行環(huán)境描述設(shè)計(jì)的接口,如圖13所示,主要包括環(huán)境基本信息檢測(cè)(LinuxInfo)和環(huán)境配置(LinuxConfig)等。環(huán)境基本信息檢測(cè)實(shí)現(xiàn)對(duì)系統(tǒng)版本(check_sys())、內(nèi)核(check_kernel_version())以及其他基本信息的檢測(cè)并根據(jù)檢測(cè)結(jié)果選擇部署方案。環(huán)境配置主要實(shí)現(xiàn)以下功能:①Linux平臺(tái)環(huán)境下的防火墻策略(set_firewall()),根據(jù)Linux平臺(tái)不同的系統(tǒng)動(dòng)態(tài)設(shè)置防火墻;②依賴(lài)項(xiàng)(install_dependencies())安裝,集成Linux平臺(tái)不同系統(tǒng)的包管理工具對(duì)依賴(lài)項(xiàng)進(jìn)行安裝;③用戶權(quán)限(set_user_permission()),對(duì)模型的使用權(quán)限進(jìn)行設(shè)置;④錯(cuò)誤監(jiān)測(cè)(error_detect_depends()),對(duì)模型部署過(guò)程中遇到的環(huán)境配置問(wèn)題中的錯(cuò)誤進(jìn)行輸出。
圖13 模型部署環(huán)境接口Fig.13 Model deployment environment interface
面向Linux平臺(tái)不同系統(tǒng),可以根據(jù)模型部署接口對(duì)Linux平臺(tái)下的模型部署相關(guān)信息進(jìn)行描述。通過(guò)該接口,實(shí)現(xiàn)了對(duì)不同系統(tǒng)的透明使用,以滿足模型可移植性部署的需求。
SAGA GIS是自動(dòng)化的地理科學(xué)分析工具,是基于C++編程的地理信息系統(tǒng)分析軟件,具有良好的可移植性,便于在Linux平臺(tái)不同系統(tǒng)下模型服務(wù)化封裝的實(shí)現(xiàn)。
本文以SAGA GIS網(wǎng)格分析模塊中Residual Analysis殘差分析模型為例,介紹了該服務(wù)化封裝流程,以驗(yàn)證Linux平臺(tái)模型服務(wù)化封裝的可行性與實(shí)用性。
(1) 通過(guò)MDL對(duì)Residual Analysis模型進(jìn)行描述,描述信息與模型接口的對(duì)應(yīng)關(guān)系如圖14 所示。
圖14 模型描述語(yǔ)言與接口映射關(guān)系Fig.14 Relationship of MDL and interfaces
(2) 根據(jù)模型數(shù)據(jù)接口對(duì)Residual Analysis模型的輸入數(shù)據(jù)進(jìn)行組織與準(zhǔn)備,如圖15所示。
圖15 Residual Analysis模型輸入數(shù)據(jù)UDX組織Fig.15 UDX structure for residual analysis model input data
(3) 對(duì)Residual Analysis模型輸入、輸出數(shù)據(jù)的行為及權(quán)限進(jìn)行分析,模型執(zhí)行過(guò)程中數(shù)據(jù)操作權(quán)限控制可以精確到的具體步驟,以適用于不同模型運(yùn)行場(chǎng)景。基于模型行為接口對(duì)該模型進(jìn)行封裝,形成Linux平臺(tái)下標(biāo)準(zhǔn)化的模型可執(zhí)行程序。如圖16所示。
圖16 Residual Analysis模型行為接口Fig.16 Residual Analysis model behavior interface
(4) 通過(guò)模型部署接口對(duì)Residual Analysis模型封裝后的標(biāo)準(zhǔn)化文件從3個(gè)方面進(jìn)行部署。
第1步是對(duì)Residual Analysis模型權(quán)限的設(shè)置(set_user_permission()),如圖17所示。首先對(duì)模型文件夾及文件的整體結(jié)構(gòu)權(quán)限進(jìn)行初步設(shè)置,其次針對(duì)特定的文件夾及文件權(quán)限進(jìn)行詳細(xì)設(shè)置。
第2步是對(duì)模型依賴(lài)的軟硬件環(huán)境進(jìn)行檢測(cè)(check_sys(),check_kernel_version())并配置(install_dependencies())。該模型主要依賴(lài)的環(huán)境為GDAL(GIS的文件格式),TIFF(用于處理TIFF的格式的圖像文件庫(kù)函數(shù))等。對(duì)于可配置的環(huán)境提供相應(yīng)的安裝方案,如該模型可以在Ubuntu與Centos系統(tǒng)下運(yùn)行,但其依賴(lài)項(xiàng)的安裝方式并不同,本文通過(guò)對(duì)Linux平臺(tái)環(huán)境檢測(cè),利用不同系統(tǒng)下的包管理工具apt-get和yum分別處理依賴(lài)項(xiàng)安裝的問(wèn)題。針對(duì)不能利用包管理工具安裝的軟件,提供相應(yīng)的源碼安裝方式。對(duì)于不可配置的環(huán)境提示模型封裝者切換其他計(jì)算節(jié)點(diǎn)進(jìn)行部署,如圖18所示。
第3步是防火墻配置(set_firewall()),防火墻策略針對(duì)Linux平臺(tái)不同系統(tǒng)的防火墻進(jìn)行的配置。如圖19所示,CentOS6系統(tǒng)利用iptables工具對(duì)防火墻進(jìn)行配置;CentOS7系統(tǒng)利用firewall-cmd工具對(duì)防火墻進(jìn)行配置;Ubuntu與Debian系統(tǒng)可利用UFW工具對(duì)防火墻進(jìn)行配置。對(duì)傳進(jìn)來(lái)的ModelPort端口參數(shù)進(jìn)行處理,如:放行了8060端口,以便對(duì)Residual Analysis模型進(jìn)行調(diào)用;放行了27017端口,以便對(duì)相關(guān)模型信息進(jìn)行獲取。
通過(guò)該文件管理系統(tǒng)將Residual Analysis模型部署到Linux平臺(tái)下的計(jì)算節(jié)點(diǎn),發(fā)布與調(diào)用。如圖20所示:①為部署成功的狀態(tài),可以查看Residual Analysis模型基本信息;②為準(zhǔn)備Residual Analysis殘差分析輸入的ASCII GRID數(shù)據(jù);③為Residual Analysis運(yùn)行狀態(tài);④為Residual Analysis輸出的參數(shù)。成功部署的模型可以供使用者在網(wǎng)絡(luò)環(huán)境下進(jìn)行查詢調(diào)用并產(chǎn)生相應(yīng)的結(jié)果。模型使用者在此過(guò)程中無(wú)須考慮模型的運(yùn)行環(huán)境、依賴(lài)項(xiàng)與權(quán)限問(wèn)題,從而實(shí)現(xiàn)對(duì)地理分析模型的共享與重用。
圖17 模型部署過(guò)程中權(quán)限設(shè)置Fig.17 Permissions setting in model deployment
圖18 模型部署過(guò)程中環(huán)境匹配Fig.18 Environment matching in model deployment
本文研究了面向Linux平臺(tái)下模型服務(wù)化封裝的安全策略和接口設(shè)計(jì),設(shè)計(jì)了Linux平臺(tái)不同系統(tǒng)的模型封裝與調(diào)用方法,實(shí)現(xiàn)了MDL動(dòng)態(tài)配置工具,促進(jìn)了Linux平臺(tái)下的地理分析模型的共享與重用。Linux平臺(tái)下的地理分析模型共享與重用,將推動(dòng)虛擬地理環(huán)境建模與模擬環(huán)境的發(fā)展。然而,Linux安全涉及的方面還有很多,如模型運(yùn)行過(guò)程中保證進(jìn)程與線程安全性和大量地理數(shù)據(jù)傳輸與存儲(chǔ)的可靠性等問(wèn)題;此外,面向模型封裝效率的提高,還需要開(kāi)發(fā)一系列更友好的封裝輔助工具;以上問(wèn)題都有待進(jìn)一步研究。
圖19 模型部署過(guò)程中防火墻設(shè)置Fig.19 Firewall setting for model deployment
圖20 Residual Analysis模型服務(wù)化流程Fig.20 Service-oriented diagram of residual analysis model