本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地,涉及一種用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝方法以及Web服務(wù)封裝系統(tǒng)。
背景技術(shù):數(shù)值模擬是海洋研究的重要手段,在海洋科學(xué)研究中發(fā)揮著越來(lái)越重要的作用。而海洋數(shù)值模式通過(guò)數(shù)值求解控制海水運(yùn)動(dòng)的偏微分方程組來(lái)實(shí)現(xiàn)對(duì)海水運(yùn)動(dòng)的數(shù)值模擬。在眾多海洋數(shù)值模式中,ROMS(RegionalOceanModelingSystem)是其中一個(gè)區(qū)域和大洋環(huán)流模式,作為主要的海洋業(yè)務(wù)化模式之一,ROMS已經(jīng)得到大量使用。ROMS采用Fortran90/95編寫,支持共享和分布式兩種計(jì)算機(jī)體系架構(gòu),具有計(jì)算密集、IO讀寫量大、網(wǎng)絡(luò)帶寬要求高等特點(diǎn)。ROMS模式具有較好的并行擴(kuò)展性,問(wèn)題規(guī)模較小時(shí)可加速到將近100核,問(wèn)題規(guī)模較大時(shí)可達(dá)到200-600核。同時(shí),ROMS也可跟其它海洋氣象模式組成耦合模式,或者作為其它海洋氣象應(yīng)用的驅(qū)動(dòng)模式。用ROMS進(jìn)行海洋數(shù)值模擬的計(jì)算量一般較大,因此需要在高性能計(jì)算集群上進(jìn)行并行計(jì)算。在現(xiàn)在有的操作方式中,用戶通常需要使用遠(yuǎn)程字符終端連接到高性能計(jì)算集群,并在命令行環(huán)境下執(zhí)行一系列操作才能完成這一數(shù)值模擬過(guò)程,一般包含如下幾個(gè)流程:用ROMS進(jìn)行海洋數(shù)值模擬的計(jì)算量一般較大,因此需要在高性能計(jì)算集群上進(jìn)行并行計(jì)算。在現(xiàn)在有的操作方式中,用戶通常需要使用遠(yuǎn)程字符終端連接到高性能計(jì)算集群系統(tǒng),并在命令行環(huán)境下執(zhí)行一系列操作才能完成這一數(shù)值模擬過(guò)程,一般包含如下幾個(gè)流程:準(zhǔn)備ROMS的可執(zhí)行文件及其需要的數(shù)據(jù)文件。這些文件通常需要放置在集群的全局共享存儲(chǔ)中,用戶一般使用FTP、SFTP等工具向集群上傳這些文件,在大多數(shù)情況下,用戶還需要用文本編輯工具對(duì)這些文件進(jìn)行修改。如果計(jì)算集群系統(tǒng)上有作業(yè)調(diào)度器,則用戶需要使用文本編輯器編寫一個(gè)腳本文件,其中填寫需要申請(qǐng)的計(jì)算資源數(shù)量,以及運(yùn)行ROMS程序的命令,然后使用作業(yè)調(diào)度命令提交作業(yè)。如果沒(méi)有作業(yè)調(diào)度器,則用戶需要將運(yùn)行ROMS程序的進(jìn)程數(shù)以及在哪些節(jié)點(diǎn)上運(yùn)行等信息通過(guò)命令行參數(shù)的方式傳遞給MPI的進(jìn)程啟動(dòng)器,如mpirun、mpiexec等。通過(guò)MPI的進(jìn)程啟動(dòng)器啟動(dòng)ROMS程序來(lái)進(jìn)行并行計(jì)算。程序運(yùn)行完成后,使用FTP、SFTP等工具下載結(jié)果文件到用戶本地計(jì)算機(jī)查看計(jì)算結(jié)果?,F(xiàn)有運(yùn)行ROMS計(jì)算程序的方法存在以下缺陷:(1)使用難度大。想要順利完成ROMS程序的計(jì)算任務(wù),用戶往往需要非常熟悉很多計(jì)專業(yè)的計(jì)算機(jī)知識(shí)和工具,如Linux操作系統(tǒng)基本操作、Shell腳本語(yǔ)言、常用的文本編輯和字符處理工具、MPI環(huán)境的使用、作業(yè)調(diào)度軟件的使用等等。(2)執(zhí)行效率低。想要順利提交一個(gè)ROMS程序的計(jì)算任務(wù),需要執(zhí)行多個(gè)流程,需要在命令行環(huán)境執(zhí)行復(fù)雜繁瑣的操作,從而導(dǎo)致并行計(jì)算任務(wù)的提交費(fèi)時(shí)費(fèi)力,效率低下。(3)出錯(cuò)概率大。對(duì)于大部分普通用戶來(lái)說(shuō),在命令行環(huán)境執(zhí)行復(fù)雜繁瑣的操作,出現(xiàn)人為操作失誤的概率很大。特別是對(duì)于操作流程不熟悉的用戶,在執(zhí)行的各個(gè)環(huán)節(jié)均容易遇到問(wèn)題。(4)安全風(fēng)險(xiǎn)高。傳統(tǒng)的操作方法需要對(duì)普通用戶開(kāi)放命令行終端訪問(wèn)權(quán)限,對(duì)于高性能計(jì)算集群的管理員來(lái)說(shuō),對(duì)普通用戶開(kāi)放命令行終端存在安全性的風(fēng)險(xiǎn)。用戶的誤操作可能會(huì)影響系統(tǒng)的穩(wěn)定運(yùn)行,黑客也有可能趁虛而入。針對(duì)相關(guān)技術(shù)中的問(wèn)題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:針對(duì)相關(guān)技術(shù)中的問(wèn)題,本發(fā)明提出一種降低用戶對(duì)海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS提交作業(yè)的Web封裝方法以及Web封裝系統(tǒng)。本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:在一方面,提供了一種用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝方法,包括:通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息;根據(jù)所接收到的與任務(wù)相關(guān)的信息由腳本生成器提取有用信息并生成作業(yè)腳本文件;將所生成的作業(yè)腳本文件提交給計(jì)算集群系統(tǒng);所述計(jì)算集群系統(tǒng)根據(jù)所述作業(yè)腳本文件調(diào)用所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS來(lái)執(zhí)行相應(yīng)的作業(yè)。在可選實(shí)施例中,在通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息的步驟之前,所述Web封裝方法還包括:根據(jù)接收到的應(yīng)用請(qǐng)求獲取對(duì)應(yīng)的應(yīng)用配置文件;以及,根據(jù)所述應(yīng)用配置文件以及所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的運(yùn)行情況生成相對(duì)應(yīng)的Web服務(wù)界面。在可選實(shí)施例中,所述與任務(wù)相關(guān)的信息包括以下之一或任意組合:所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS所在路徑、所需輸入文件的目錄、執(zhí)行命令、所需的計(jì)算節(jié)點(diǎn)、每個(gè)計(jì)算節(jié)點(diǎn)的CPU核心數(shù)和內(nèi)存大小以及執(zhí)行任務(wù)的計(jì)算時(shí)間。在可選實(shí)施例中,根據(jù)所接收到的與任務(wù)相關(guān)的信息由腳本生成器提取有用信息并生成作業(yè)腳本之前,所述Web封裝方法還包括:檢測(cè)所述與任務(wù)相關(guān)的信息是否合法,檢測(cè)為是時(shí),執(zhí)行根據(jù)所接收到的與任務(wù)相關(guān)的信息由腳本生成器提取有用信息并生成作業(yè)腳本的步驟;檢測(cè)否時(shí),生成不合法提示信息并顯示在所述Web服務(wù)界面上。在可選實(shí)施例中,將所生成的作業(yè)腳本提交給所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS系統(tǒng)以執(zhí)行作業(yè),包括:將所生成的作業(yè)腳本文件提交作業(yè)調(diào)度隊(duì)列中,由作業(yè)調(diào)度系統(tǒng)進(jìn)行調(diào)度以執(zhí)行作業(yè)。在可選實(shí)施例中,在通過(guò)Web服務(wù)應(yīng)用界面接收與任務(wù)相關(guān)的信息之前,檢測(cè)所述計(jì)算集群系統(tǒng)的隊(duì)列信息,包括:隊(duì)列名、可使用總核數(shù)、隊(duì)列中的作業(yè)數(shù)和可用計(jì)算節(jié)點(diǎn)數(shù)。在可選實(shí)施例中,在通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息之前,檢測(cè)用戶的磁盤配額和計(jì)費(fèi)額度。在另一方面提供了一種用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝系統(tǒng),包括:Web應(yīng)用模塊,用于通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息;腳本生成模塊,用于根據(jù)所接收到的與任務(wù)相關(guān)的信息提取有用信息并生成作業(yè)腳本文件;作業(yè)提交模塊,用于將所生成的作業(yè)腳本文件提交給計(jì)算集群系統(tǒng);以便所述計(jì)算集群系統(tǒng)根據(jù)所述作業(yè)腳本文件調(diào)用所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS來(lái)執(zhí)行相應(yīng)的作業(yè)。在可選實(shí)施例中,所述Web應(yīng)用模塊包括:配置解析模塊,用于根據(jù)接收到的應(yīng)用請(qǐng)求獲取對(duì)應(yīng)的應(yīng)用配置文件;以及,Web服務(wù)界面生成模塊,用于根據(jù)所述應(yīng)用配置文件以及所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的運(yùn)行情況生成相對(duì)應(yīng)的Web服務(wù)界面。在可選實(shí)施例中,所述Web服務(wù)封裝系統(tǒng)還包括檢測(cè)模塊,用于檢測(cè)所述與任務(wù)相關(guān)的信息是否合法,檢測(cè)為是時(shí),所述腳本生成模塊根據(jù)所接收到的與任務(wù)相關(guān)的信息提取有用信息并生成作業(yè)腳本文件;檢測(cè)否時(shí),生成不合法提示信息并顯示在所述Web服務(wù)界面上。附圖說(shuō)明圖1示出根據(jù)本發(fā)明一實(shí)施例的用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝方法的流程圖。圖2示出根據(jù)本發(fā)明另一實(shí)施例的用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝系統(tǒng)的示意框圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步地說(shuō)明。圖1是根據(jù)本發(fā)明一實(shí)施例的用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝方法的流程圖。如圖1所示,該Web服務(wù)封裝方法包括:S101,通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息??蛇x地,在步驟S101之前,該Web服務(wù)封裝方法還可以包括根據(jù)接 收到的應(yīng)用請(qǐng)求獲取對(duì)應(yīng)的應(yīng)用配置文件;根據(jù)所述應(yīng)用配置文件以及所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的運(yùn)行情況生成相對(duì)應(yīng)的Web服務(wù)界面。在本發(fā)明實(shí)施例中,對(duì)于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的每個(gè)應(yīng)用,都會(huì)有一個(gè)相對(duì)應(yīng)的應(yīng)用配置文件。該應(yīng)用配置文件中包括:相應(yīng)的頁(yè)面各項(xiàng)初始值,配置解析會(huì)根據(jù)計(jì)算集群系統(tǒng)的運(yùn)行情況以及應(yīng)用的實(shí)際情況進(jìn)行配置解析,生成相應(yīng)的應(yīng)用頁(yè)面,也就是相對(duì)應(yīng)的Web服務(wù)界面??蛇x地,與任務(wù)相關(guān)的信息可以包括:在所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS所在路徑、所需輸入文件的目錄和執(zhí)行命令。可選地,在步驟S101之前、同時(shí)或之后還可以通過(guò)所述Web服務(wù)界面接收與要執(zhí)行的作業(yè)相關(guān)的計(jì)算資源信息,所述計(jì)算資源信息包括:CPU核心數(shù)、內(nèi)存大小和計(jì)算時(shí)間??蛇x地,用戶還可以通過(guò)Web服務(wù)界面,選擇是否使用虛擬網(wǎng)絡(luò)計(jì)算機(jī)(VirtualNetworkComputing,VNC)功能或CheckPoint功能(即斷點(diǎn)再計(jì)算功能)。可選地,用戶還可以通過(guò)Web服務(wù)界面提交計(jì)算集群系統(tǒng)中的節(jié)點(diǎn)、單節(jié)點(diǎn)核心數(shù)、網(wǎng)速協(xié)議、執(zhí)行命令、應(yīng)用所需輸入文件等。S102,根據(jù)所接收到的與任務(wù)相關(guān)的信息由腳本生成器提取有用信息并生成作業(yè)腳本文件。S103,將所生成的作業(yè)腳本文件提交給計(jì)算集群系統(tǒng),以便所述計(jì)算集群系統(tǒng)根據(jù)所述作業(yè)腳本文件調(diào)用所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS來(lái)執(zhí)行相應(yīng)的作業(yè)。在可選實(shí)施例中,所述Web封裝方法在步驟S102之前還包括:檢測(cè)所述與任務(wù)相關(guān)的信息是否合法,檢測(cè)為是時(shí),執(zhí)行步驟S103;檢測(cè)否時(shí),生成不合法提示信息并顯示在所述Web服務(wù)界面上。在可選實(shí)施例中,計(jì)算集群系統(tǒng)包括作業(yè)調(diào)度系統(tǒng),步驟S103包括:將所生成的作業(yè)腳本文件提交計(jì)算集群系統(tǒng)的作業(yè)調(diào)度隊(duì)列中,由作業(yè)調(diào)度系統(tǒng)進(jìn)行調(diào)度以便調(diào)用所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS來(lái)執(zhí)行相應(yīng)的作業(yè)。在可選實(shí)施例中,在步驟S101之前,Web封裝方法還包括:檢測(cè)所述計(jì)算集群系統(tǒng)的隊(duì)列信息,包括:隊(duì)列名、可使用總核數(shù)、隊(duì)列中的作業(yè) 數(shù)和可用計(jì)算節(jié)點(diǎn)數(shù)。在可選實(shí)施例中,在通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息之前,檢測(cè)用戶的磁盤配額和計(jì)費(fèi)額度。圖2是根據(jù)本發(fā)明實(shí)施例的用于海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的Web服務(wù)封裝系統(tǒng)的示意框圖。如圖2所示意,該Web服務(wù)封裝系統(tǒng)包括:Web應(yīng)用模塊10,用于通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息;腳本生成模塊20,用于根據(jù)所接收到的與任務(wù)相關(guān)的信息提取有用信息并生成作業(yè)腳本文件;以及,作業(yè)提交模塊30,用于將所生成的作業(yè)腳本文件提交給計(jì)算集群系統(tǒng);以便所述計(jì)算集群系統(tǒng)根據(jù)所述作業(yè)腳本文件調(diào)用所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS來(lái)執(zhí)行相應(yīng)的作業(yè)。在可選實(shí)施例中,所述與任務(wù)相關(guān)的信息包括以下之一或任意組合:所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS所在路徑、所需輸入文件的目錄、執(zhí)行命令、所需的計(jì)算節(jié)點(diǎn)、每個(gè)計(jì)算節(jié)點(diǎn)的CPU核心數(shù)和內(nèi)存大小以及執(zhí)行任務(wù)的計(jì)算時(shí)間。在可選實(shí)施例中,所述Web應(yīng)用模塊包括:配置解析模塊,用于根據(jù)接收到的應(yīng)用請(qǐng)求獲取對(duì)應(yīng)的應(yīng)用配置文件;以及,Web服務(wù)界面生成模塊,用于根據(jù)所述應(yīng)用配置文件以及所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的運(yùn)行情況生成相對(duì)應(yīng)的Web服務(wù)界面。在可選實(shí)施例中,所述Web服務(wù)封裝系統(tǒng)還包括檢測(cè)模塊,用于檢測(cè)所述與任務(wù)相關(guān)的信息是否合法,檢測(cè)為是時(shí),所述腳本生成模塊根據(jù)所接收到的與任務(wù)相關(guān)的信息提取有用信息并生成作業(yè)腳本文件;檢測(cè)否時(shí),生成不合法提示信息并顯示在所述Web服務(wù)界面上。在可選實(shí)施例中,作業(yè)提交模塊將所生成的作業(yè)腳本文件提交給計(jì)算集群系統(tǒng)包括:將所生成的作業(yè)腳本文件提交計(jì)算集群系統(tǒng)的作業(yè)調(diào)度隊(duì)列中,由作業(yè)調(diào)度系統(tǒng)進(jìn)行作業(yè)調(diào)度以便調(diào)用所述海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS來(lái)執(zhí)行相應(yīng)的作業(yè)。在可選實(shí)施例中,所述檢測(cè)模塊還用于在Web服務(wù)應(yīng)用界面接收與任務(wù)相關(guān)的信息之前,檢測(cè)所述計(jì)算集群系統(tǒng)的隊(duì)列信息,包括:隊(duì)列名、可使用總核數(shù)、隊(duì)列中的作業(yè)數(shù)和可用計(jì)算節(jié)點(diǎn)數(shù)。在可選實(shí)施例中,所述Web服務(wù)封裝系統(tǒng)還包括額度計(jì)算模塊,用于在通過(guò)Web服務(wù)界面接收與任務(wù)相關(guān)的信息之前,檢測(cè)用戶的磁盤配額和計(jì)費(fèi)額度,以便Web服務(wù)封裝系統(tǒng)根據(jù)用戶的磁盤配額和計(jì)費(fèi)額度確定是否為該用戶的作業(yè)提供Web封裝服務(wù)。進(jìn)一步地,根據(jù)用戶的磁盤配額還可以用于計(jì)算集群系統(tǒng)為該用戶分配相應(yīng)的資源。本發(fā)明通過(guò)Web封裝,將海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS的作業(yè)提交流程隱藏在底層,提供給用戶一個(gè)簡(jiǎn)單直觀的Web頁(yè)面,用戶只需要Web頁(yè)面上執(zhí)行簡(jiǎn)單的操作就能實(shí)現(xiàn)數(shù)據(jù)文件準(zhǔn)備、計(jì)算資源申請(qǐng)、作業(yè)提交、結(jié)果查看等整套流程。通過(guò)Web封裝,可以大大降低用戶的使用門檻,提高使用效率,減小出錯(cuò)概率。其有益效果可以體現(xiàn)在以下幾個(gè)方面:(1)降低使用難度。用戶不再需要掌握Linux操作系統(tǒng)基本操作、Shell腳本語(yǔ)言、常用的文本編輯和字符處理工具、MPI環(huán)境的調(diào)用、作業(yè)調(diào)度軟件等與其專業(yè)背景無(wú)關(guān)的知識(shí)和工具,就能輕松完成海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS計(jì)算任務(wù)的準(zhǔn)備、執(zhí)行等工作,大大降低了使用門檻。(2)提高工作效率。繁瑣復(fù)雜的命令行操作全部隱藏在底層,在底層自動(dòng)批量執(zhí)行,可以節(jié)省大量的人為操作時(shí)間,提高使用效率。(3)提高任務(wù)提交的成功率。本發(fā)明實(shí)施例中,會(huì)對(duì)用戶在Web界面提交的參數(shù)和數(shù)據(jù)進(jìn)行各種合法性檢查。比如,檢查用戶申請(qǐng)的計(jì)算資源是否超過(guò)其權(quán)限,用戶輸入的參數(shù)是否合法,用戶的輸入文件格式是否正確等,如果判斷出錯(cuò)誤,會(huì)在Web界面給出相應(yīng)提示。通過(guò)這些合法性檢查可以大大提高并行任務(wù)提交的成功率。(4)可輕松地實(shí)現(xiàn)復(fù)雜功能。海洋數(shù)值模擬計(jì)算系統(tǒng)ROMS運(yùn)行的一些復(fù)雜或高級(jí)功能,比如計(jì)算網(wǎng)絡(luò)的選擇,啟動(dòng)CPU進(jìn)程綁定等,如果通過(guò)命令行方式需要指定復(fù)雜的參數(shù),操作繁瑣,使用難度較大。進(jìn)行Web封裝后,用戶只需要通過(guò)界面上的一些選項(xiàng)框就能實(shí)現(xiàn)這些功能。(5)提高高性能計(jì)算集群系統(tǒng)的使用安全性。將普通用戶的任務(wù)提交操作封裝在Web后,用戶執(zhí)行的都是封閉式的操作,很大程度上避免了影響系統(tǒng)穩(wěn)定或安全的用戶非法操作。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。