• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于GIT的氣象數(shù)值模式代碼管理平臺(tái)METCODE

      2021-08-25 11:10:32趙春燕王彬孫婧常飚胡江凱周斌
      氣象科技 2021年4期
      關(guān)鍵詞:代碼氣象分布式

      趙春燕 王彬* 孫婧 常飚 胡江凱 周斌

      (1 國(guó)家氣象信息中心,北京 100081; 2 國(guó)家氣象中心,北京 100081)

      引言

      氣象數(shù)值模式是氣象科技創(chuàng)新的核心組成部分,已成為氣象部門技術(shù)進(jìn)步與業(yè)務(wù)發(fā)展的重要標(biāo)志之一。氣象數(shù)值模式不同于一般意義的軟件產(chǎn)品,其研發(fā)是一個(gè)科學(xué)探索性較強(qiáng)的過程,同時(shí)需要規(guī)范嚴(yán)格的技術(shù)手段保障業(yè)務(wù)運(yùn)行。由于兼具科研試驗(yàn)、業(yè)務(wù)管理以及科研-業(yè)務(wù)轉(zhuǎn)化的多重需求,持續(xù)改進(jìn)的過程管理和代碼版本控制對(duì)氣象數(shù)值模式的可持續(xù)發(fā)展至關(guān)重要。代碼管理是軟件配置管理中的基礎(chǔ)管理過程[1],是軟件能力成熟度評(píng)估標(biāo)準(zhǔn)中的關(guān)鍵過程域。近幾年,軟件開發(fā)規(guī)模越來越大,開發(fā)團(tuán)隊(duì)也隨之?dāng)U大,分布式開發(fā)成為常態(tài),團(tuán)隊(duì)開發(fā)質(zhì)量和協(xié)作效率問題也越來越突出,而優(yōu)秀的代碼管理平臺(tái)能夠支撐開發(fā)人員更高效地協(xié)同開發(fā),同時(shí)保證軟件資產(chǎn)的完整性和可跟蹤性。

      代碼管理軟件技術(shù)的發(fā)展經(jīng)歷了本地版本控制、集中式的版本控制和分布式版本控制3個(gè)階段[2]。在20世紀(jì)中葉,計(jì)算機(jī)得到初步應(yīng)用,軟件系統(tǒng)開發(fā)周期較長(zhǎng),出現(xiàn)了如RCS的基于計(jì)算機(jī)系統(tǒng)本地的代碼管理工具[3]。隨著計(jì)算機(jī)的發(fā)展和軟件規(guī)模的擴(kuò)大,20世紀(jì)70、80年代,出現(xiàn)了C/S架構(gòu)的集中式代碼管理工具如CVS、SVN、Perforce等[3],由服務(wù)端提供合并、版本記錄集中式的管理。20世紀(jì)90年代到21世紀(jì)初,隨著互聯(lián)網(wǎng)的蓬勃發(fā)展、軟件規(guī)模日益擴(kuò)大,分布式開發(fā)團(tuán)隊(duì)廣泛出現(xiàn),分布式版本控制系統(tǒng)應(yīng)運(yùn)而生,如Git[4]、Mercurial。隨著互聯(lián)網(wǎng)開放程度的提高與云計(jì)算技術(shù)的發(fā)展成熟,代碼托管及共享服務(wù)平臺(tái)、項(xiàng)目協(xié)作生態(tài)社區(qū)成為代碼管理的主要形式,如全球最大的開源社交編程及代碼托管網(wǎng)站的GitHub[5]、國(guó)內(nèi)的碼云Gitee和CODING[6],其分布式、高效協(xié)同共享的特點(diǎn),使其成為現(xiàn)代代碼管理的主要手段。國(guó)際上,歐洲中期天氣預(yù)報(bào)中心、美國(guó)國(guó)家環(huán)境預(yù)報(bào)中心、美國(guó)國(guó)家大氣研究中心均已采用Git分布式技術(shù)支撐模式協(xié)同研發(fā),解決了國(guó)際合作研究的研發(fā)協(xié)同問題,提升了模式研發(fā)的協(xié)同效率。

      氣象數(shù)值模式[7]是實(shí)現(xiàn)數(shù)值天氣預(yù)報(bào)的核心技術(shù)手段,氣象數(shù)值模式具有持續(xù)性、科學(xué)性、分布性、廣泛交叉應(yīng)用衍生等特性,對(duì)代碼管理提出了新的挑戰(zhàn)。以GRAPES[8](Global/Regional Assimilation PrEdiction System)模式為例,從2001年起至今,經(jīng)歷了近20年的持續(xù)改進(jìn)升級(jí),如何保持研發(fā)歷史脈絡(luò)的清晰和可持續(xù)性成為關(guān)鍵問題之一。GRAPES模式包括資料同化[9]、模式動(dòng)力框架、物理過程等模塊,基于Fortran采用模塊化的設(shè)計(jì)[10]組合調(diào)用,采用并行框架調(diào)試運(yùn)行在氣象高性能計(jì)算機(jī)系統(tǒng)[11],融合了氣象科學(xué)、計(jì)算科學(xué),尤其在眾核異構(gòu)計(jì)算發(fā)展趨勢(shì)下,支持眾核加速計(jì)算架構(gòu)下模式移植優(yōu)化研發(fā)[12]、跨學(xué)科跨部門的交叉協(xié)同合作成為迫切需求。GRAPES模式已發(fā)展了GRAPES_GFS[13](全球中期預(yù)報(bào)模式)和GRAPES_MESO(區(qū)域中尺度模式),各區(qū)域氣象業(yè)務(wù)中心根據(jù)業(yè)務(wù)的特點(diǎn)發(fā)展了特色的應(yīng)用模式,如集合預(yù)報(bào)[14]、沙塵暴預(yù)報(bào)、臺(tái)風(fēng)預(yù)報(bào)[15]、水文洪水預(yù)警預(yù)報(bào)等,擁有眾多的分布式開發(fā)團(tuán)隊(duì),研發(fā)力量地理上分散,涉及大量的分布式協(xié)同共享、集成合并管理需求。綜上,需要建立支撐模式分布式協(xié)同眾創(chuàng)研發(fā)的代碼管理平臺(tái),支持大規(guī)模協(xié)作共享研發(fā)、科學(xué)規(guī)范代碼集成管理和脈絡(luò)清晰可追蹤的研發(fā)成果管理。

      本文圍繞氣象數(shù)值預(yù)報(bào)模式的研發(fā)特點(diǎn)和發(fā)展需求,通過技術(shù)選型分析,設(shè)計(jì)建立了一個(gè)基于Git的分布式代碼協(xié)作共享管理平臺(tái)METCODE,保存模式研發(fā)歷史,支撐氣象數(shù)值模式的持續(xù)發(fā)展和國(guó)省合作研發(fā)應(yīng)用的協(xié)作共享,建立了模式代碼管理標(biāo)準(zhǔn),規(guī)范化研發(fā)、集成合作和業(yè)務(wù)化各個(gè)環(huán)節(jié)。

      1 氣象數(shù)值模式研發(fā)管理現(xiàn)狀

      2010年,中國(guó)氣象局引進(jìn)了商業(yè)版本管理軟件應(yīng)用于GRAPES研發(fā)[16],建立了氣象數(shù)值模式代碼管理系統(tǒng),首次實(shí)現(xiàn)了GRAPES模式研發(fā)的代碼管理,運(yùn)行至今建立了956個(gè)用戶終端,更新次數(shù)21260次,系統(tǒng)集成2059次,支撐發(fā)布版本21套。隨著模式研發(fā)歷史的累積,系統(tǒng)訪問性能開始出現(xiàn)下降。同時(shí),由于服務(wù)端軟件版本沒有升級(jí),一定程度上限制了客戶端軟件版本的兼容性,在新的高性能計(jì)算平臺(tái)上應(yīng)用存在困難。

      發(fā)展我國(guó)自主可控的氣象數(shù)值模式,是一個(gè)持續(xù)發(fā)展的科學(xué)工程。氣象科學(xué)發(fā)展邁入了地球系統(tǒng)時(shí)代,天氣和氣候模式呈現(xiàn)一體化發(fā)展融合的趨勢(shì)。天氣、環(huán)境、水文等學(xué)科呈現(xiàn)更廣泛交叉應(yīng)用衍生的趨勢(shì),模式研發(fā)的生態(tài)逐漸建立,模式研究更加開放共享,分布式協(xié)作的需求更加突出。因此,亟待建立一套安全、分布、支持協(xié)作共享的代碼管理系統(tǒng)。同時(shí),隨著地球系統(tǒng)模式發(fā)展、數(shù)值模式預(yù)報(bào)的精度與預(yù)報(bào)時(shí)效的不斷提高,科學(xué)計(jì)算規(guī)模呈指數(shù)級(jí)增加,異構(gòu)眾核、低耗高效超算架構(gòu)體系[17]成為高性能計(jì)算的發(fā)展趨勢(shì),多態(tài)、異構(gòu)[12]的研發(fā)計(jì)算平臺(tái)需要代碼管理工具具備較高的兼容性,廣泛的支持混合計(jì)算架構(gòu)[13]下的研發(fā)交互以及結(jié)合代碼編輯工具的集成使用。

      2 METCODE平臺(tái)設(shè)計(jì)

      氣象數(shù)值模式代碼管理平臺(tái)METCODE在Git、Docker、Spring、React.js、MySQL、Redis等開源軟件基礎(chǔ)上,進(jìn)行了自主定制開發(fā)形成了國(guó)產(chǎn)代碼管理和共享協(xié)作平臺(tái),部署于中國(guó)氣象局私有云[18-19],是以B/S為主、C/S為輔的整套應(yīng)用級(jí)軟件,支持DevOps[20]研發(fā)運(yùn)維一體化的過程管理。

      2.1 平臺(tái)功能

      METCODE平臺(tái)由云端代碼管理共享協(xié)作平臺(tái)和云端集成開發(fā)工具組成(圖1)。云端代碼管理共享協(xié)作平臺(tái)以Web方式,圍繞研發(fā)流程提供項(xiàng)目管理、分布式代碼管理、文件管理、知識(shí)管理及DevOps等功能,以項(xiàng)目為組織單元建立代碼庫,實(shí)現(xiàn)對(duì)項(xiàng)目的代碼管理和協(xié)作共享,支持對(duì)項(xiàng)目人員及權(quán)限管理、集成共享管理、項(xiàng)目文件、項(xiàng)目任務(wù)、版本發(fā)布等進(jìn)行管理。云端集成開發(fā)環(huán)境支撐協(xié)同編輯的Web在線開發(fā)終端環(huán)境,定制了氣象主要編程語言Fortran語法提示功能。

      圖1 METCODE功能結(jié)構(gòu)

      METCODE代碼管理共享協(xié)作平臺(tái)支持實(shí)現(xiàn)項(xiàng)目生命周期的DevOps一體化全過程管理,可用于氣象各類項(xiàng)目建設(shè)的過程管理和成果管理,包含項(xiàng)目管理、任務(wù)管理、代碼管理、持續(xù)集成、測(cè)試管理、部署管理和構(gòu)建管理等功能,實(shí)現(xiàn)了結(jié)合云端開發(fā)環(huán)境提供代碼的在線開發(fā)、編譯、部署。

      2.2 氣象數(shù)值模式研發(fā)應(yīng)用設(shè)計(jì)

      METCODE基于中國(guó)氣象局私有云部署,根據(jù)用戶分布式的特點(diǎn),設(shè)計(jì)支持氣象部門內(nèi)部用戶、區(qū)域中心的用戶和外部用戶的合作研發(fā)管理。設(shè)立了備份系統(tǒng),對(duì)關(guān)鍵數(shù)據(jù)進(jìn)行定時(shí)備份以保證應(yīng)用數(shù)據(jù)的安全完整。METCODE提供統(tǒng)一域名訪問Web頁面,支持項(xiàng)目管理和代碼管理、集成交互和共享,發(fā)揮代碼托管和共享的主要功能(B/S方式),研發(fā)人員可在個(gè)人電腦、筆記本電腦上通過瀏覽器訪問Web網(wǎng)頁界面或通過可視化客戶端來訪問METCODE代碼庫。 氣象數(shù)值模式一般基于高性能計(jì)算機(jī)系統(tǒng)研發(fā)和業(yè)務(wù)運(yùn)行,在中國(guó)氣象局“派-曙光”高性能計(jì)算機(jī)上部署Git客戶端,通過命令行操作可與METCODE代碼庫交互,開展模式研發(fā)、模式異構(gòu)眾核移植優(yōu)化的代碼管理(C/S方式)。用戶也可通過Git可視化客戶端、集成IDE結(jié)合METCODE域名,實(shí)現(xiàn)代碼管理。為了支持內(nèi)外部用戶合作研發(fā)成果的集成共享,平臺(tái)實(shí)現(xiàn)了代碼庫分支級(jí)別的數(shù)據(jù)同步功能(圖2)。

      圖2 氣象數(shù)值模式研發(fā)應(yīng)用示意

      模式研發(fā)用戶在“派-曙光”高性能計(jì)算機(jī)上通過命令行訪問METCODE代碼倉庫的工作流程如圖3所示,首先從遠(yuǎn)程代碼庫克隆到高性能計(jì)算機(jī)本地工作目錄,或者從遠(yuǎn)程代碼庫拉取代碼到本地代碼庫,并與本地代碼庫進(jìn)行合并。用戶在本地用戶工作目錄下進(jìn)行研發(fā)(增、刪、改),將修改的版本提交到本地代碼庫,文件先被添加到緩存區(qū),再被提交到本地代碼庫,通過推送到METCODE遠(yuǎn)程代碼庫統(tǒng)一管理。

      圖3 “派-曙光”訪問流程

      3 關(guān)鍵技術(shù)及實(shí)現(xiàn)

      3.1 平臺(tái)技術(shù)架構(gòu)

      METCODE是B/S架構(gòu)的系統(tǒng),基于國(guó)產(chǎn)CODING軟件系統(tǒng)定制開發(fā),采用Linux、容器技術(shù),基于微服務(wù)[21]、服務(wù)發(fā)現(xiàn)方式進(jìn)行架構(gòu),具有去中心管理、粒度小、耦合度低、易擴(kuò)展、易維護(hù)等優(yōu)點(diǎn)。系統(tǒng)從上至下分為應(yīng)用層、微服務(wù)層、數(shù)據(jù)庫層和基礎(chǔ)架構(gòu)層(圖4)?;A(chǔ)架構(gòu)層采用容器技術(shù)編排維護(hù)系統(tǒng),數(shù)據(jù)庫層采用MySQL關(guān)系型數(shù)據(jù)庫存儲(chǔ)項(xiàng)目等通用信息,采用Redis緩存技術(shù)實(shí)現(xiàn)數(shù)據(jù)的高效訪問。微服務(wù)層采用了Git-Server 和Repo Manager實(shí)現(xiàn)代碼倉庫的傳輸服務(wù)和管理,將代碼庫的管理、維護(hù)、備份等功能通過微服務(wù)組件管理,以精細(xì)粒度管理應(yīng)用,耦合了Git本身可獨(dú)立應(yīng)用的特點(diǎn)?;赟SO技術(shù)實(shí)現(xiàn)了用戶統(tǒng)一認(rèn)證和單點(diǎn)登錄集成,應(yīng)用層采用Nginx實(shí)現(xiàn)服務(wù)請(qǐng)求管理,并實(shí)現(xiàn)了分布式架構(gòu)的負(fù)載均衡,基于云架構(gòu)可有效支持高并發(fā)訪問,集成了集成開發(fā)環(huán)境插件及第三方的Jenkins、Sonar等插件。

      圖4 METCODE技術(shù)架構(gòu)

      3.2 用戶統(tǒng)一認(rèn)證及單點(diǎn)登錄

      “派-曙光”高性能計(jì)算機(jī)系統(tǒng)設(shè)計(jì)有一套規(guī)范的高性能計(jì)算機(jī)用戶管理機(jī)制,并建有北京高性能計(jì)算機(jī)應(yīng)用中心門戶網(wǎng)站,實(shí)現(xiàn)了用戶的統(tǒng)一管理和單點(diǎn)登錄。為了便捷支撐研發(fā)人員在“派-曙光”上基于METCODE開展模式研發(fā)協(xié)同,實(shí)現(xiàn)了METCODE與北京高性能計(jì)算機(jī)應(yīng)用中心的用戶統(tǒng)一認(rèn)證管理和單點(diǎn)登錄[22],采用SSO 認(rèn)證機(jī)制,與北京高性能計(jì)算機(jī)應(yīng)用中心 SSO 認(rèn)證中心的接口通信以交換令牌、校驗(yàn)令牌及發(fā)起登錄、注銷請(qǐng)求。認(rèn)證流程如圖5所示,用戶通過向門戶網(wǎng)站發(fā)送登錄請(qǐng)求,門戶網(wǎng)站將該請(qǐng)求轉(zhuǎn)發(fā)到統(tǒng)一認(rèn)證中心進(jìn)行認(rèn)證請(qǐng)求,認(rèn)證中心認(rèn)證通過后,返回認(rèn)證唯一令牌到門戶網(wǎng)站,門戶網(wǎng)站攜帶認(rèn)證中心提供的令牌信息,向被保護(hù)資源發(fā)送訪問請(qǐng)求響應(yīng)。

      圖5 METCODE用戶統(tǒng)一認(rèn)證流程

      3.3 分支同步技術(shù)

      國(guó)家級(jí)氣象數(shù)值模式研發(fā)主要基于中國(guó)氣象局骨干網(wǎng)進(jìn)行,解決了國(guó)省合作、外部單位的合作研發(fā)協(xié)同,保障模式代碼庫的安全性,實(shí)現(xiàn)了骨干網(wǎng)代碼庫和互聯(lián)網(wǎng)DMZ區(qū)代碼庫分支級(jí)別的同步功能,支持內(nèi)外網(wǎng)研發(fā)成果交互共享。分支同步由內(nèi)網(wǎng)項(xiàng)目管理員發(fā)起,支持雙向分支同步,基于SSH協(xié)議和接口技術(shù)實(shí)現(xiàn)。通過Git獲取訪問分支的公鑰,讀取分支內(nèi)容,基于SSH協(xié)議傳輸至目標(biāo)系統(tǒng),再通過Git操作提交到目標(biāo)項(xiàng)目中,實(shí)現(xiàn)分支信息的同步(圖6)。

      圖6 METCODE分支同步示意

      4 業(yè)務(wù)應(yīng)用

      METCODE在氣象部門內(nèi)得到成功應(yīng)用,支撐了GRAPES全球/區(qū)域模式、GRAPES大氣化學(xué)耦合模式(GRAPES_CUACE)聯(lián)合研發(fā),為氣候海洋模式(MOM5)、模式后處理[23]、模式GPU移植開發(fā)、模式支撐軟件、氣象信息軟件等項(xiàng)目建立了協(xié)同開發(fā)和代碼管理功能。

      4.1 代碼庫遷移

      為了保障模式研發(fā)歷史的延續(xù)性,實(shí)現(xiàn)新舊系統(tǒng)的無縫過渡遷移,在METCODE建立了GRAPES模式的歷史代碼庫,用于遷移在原有代碼庫中的模式研發(fā)歷史。在不同技術(shù)架構(gòu)的代碼庫中,完整的遷移研發(fā)歷史信息,需從原系統(tǒng)遷出歷史記錄,導(dǎo)入到新的系統(tǒng)保存?;贕it-p4遷移工具進(jìn)行了二次開發(fā),調(diào)用原有代碼庫命令行工具讀取原代碼庫的內(nèi)容,包括用戶信息、路徑信息、文件類型信息、變更信息等,通過METCODE的命令行工具將讀取出的內(nèi)容推送到METCODE的代碼庫中。對(duì)原有代碼庫中的路徑信息、文件名、作者信息、代碼正文中的中文進(jìn)行過濾(路徑、文件名、作者信息、文件內(nèi)容),對(duì).docx, .doc, .pdf等二進(jìn)制文件進(jìn)行過濾、正文非轉(zhuǎn)碼處理,實(shí)現(xiàn)了中文UTF8轉(zhuǎn)碼,解決了GRAPES模式研發(fā)歷史遷移中文亂碼的關(guān)鍵問題,完成了GRAPES歷史庫近10年超過10 GB 研發(fā)歷史數(shù)據(jù)的遷移(圖7)。

      圖7 模式研發(fā)歷史遷移原理

      原有模式代碼管理系統(tǒng)為C/S架構(gòu),模式的研發(fā)歷史均存儲(chǔ)于服務(wù)端元數(shù)據(jù)庫,而基于需求分析中的統(tǒng)計(jì)數(shù)字,集成更新次數(shù)只占總更新次數(shù)的10%左右,而約90%的研發(fā)歷史記錄是團(tuán)隊(duì)內(nèi)部及個(gè)人的研發(fā)記錄,大量的元數(shù)據(jù)必然導(dǎo)致系統(tǒng)性能降低,同時(shí)也不利于保持模式研發(fā)歷史脈絡(luò)的清晰?;贛ETCODE代碼管理平臺(tái),利用Git的分布式概念,將個(gè)人研發(fā)記錄保存在本地庫,METCODE遠(yuǎn)程庫僅保存團(tuán)隊(duì)以上的研發(fā)成果和歷史,能夠減少大量個(gè)人研發(fā)記錄,優(yōu)化了代碼庫的管理,更好地支撐模式持續(xù)發(fā)展。

      4.2 系統(tǒng)性能

      基于生產(chǎn)環(huán)境采用壓力測(cè)試工具模擬200并發(fā)數(shù)對(duì)METCODE的任務(wù)列表訪問、任務(wù)創(chuàng)建、代碼庫訪問、代碼目錄瀏覽、代碼源文件獲取等關(guān)鍵應(yīng)用場(chǎng)景的指令執(zhí)行、響應(yīng)時(shí)間、網(wǎng)絡(luò)吞吐和網(wǎng)絡(luò)收發(fā)速度進(jìn)行了壓力測(cè)試。表1測(cè)試結(jié)果顯示各類操作響應(yīng)時(shí)間平均小于5 s,性能滿足了模式分布式研發(fā)的需求。

      表1 METCODE性能測(cè)試

      5 結(jié)論

      在氣象數(shù)值模式發(fā)展的需求驅(qū)動(dòng)下,設(shè)計(jì)建立了基于Git的國(guó)有自主知識(shí)產(chǎn)權(quán)METCODE代碼管理協(xié)作共享平臺(tái)。METCODE采用高可靠的架構(gòu)設(shè)計(jì)、分布式的部署,能夠安全、靈活地支撐內(nèi)部、外部及合作研發(fā)的需求。METCODE現(xiàn)已支持了100多個(gè)項(xiàng)目的管理,應(yīng)用單位覆蓋國(guó)家氣象中心、國(guó)家氣候中心、中國(guó)氣象科學(xué)研究院、國(guó)家氣象信息中心等業(yè)務(wù)科研單位,以及部分合作單位。

      目前系統(tǒng)在企業(yè)級(jí)管理方面還需加強(qiáng),如對(duì)多層級(jí)單位組織架構(gòu)的支持和分級(jí)管理,將能更好地支撐中國(guó)氣象局各類大型、中型和小型等各類項(xiàng)目的靈活管理。METCODE隨著Git的深入發(fā)展具有更加廣泛的應(yīng)用前景,未來將進(jìn)一步完善,支撐全部氣象數(shù)值模式的研發(fā)管理,并推廣應(yīng)用到氣象軟件系統(tǒng)項(xiàng)目的代碼與過程管理。

      猜你喜歡
      代碼氣象分布式
      氣象
      氣象樹
      《內(nèi)蒙古氣象》征稿簡(jiǎn)則
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      大國(guó)氣象
      分布式光伏熱錢洶涌
      能源(2017年10期)2017-12-20 05:54:07
      分布式光伏:爆發(fā)還是徘徊
      能源(2017年5期)2017-07-06 09:25:54
      芜湖县| 宽城| 普安县| 丽水市| 吴旗县| 丰县| 攀枝花市| 西畴县| 博野县| 剑川县| 红安县| 清苑县| 攀枝花市| 怀集县| 富宁县| 肇州县| 商南县| 陇南市| 澄城县| 罗城| 安顺市| 若羌县| 金秀| 安泽县| 怀柔区| 明水县| 万载县| 武穴市| 沁水县| 定南县| 安顺市| 青浦区| 婺源县| 云阳县| 鲁山县| 黑河市| 汤原县| 桦南县| 吴川市| 望谟县| 高雄市|