国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Fire 開源庫(kù)的MNSS 命令行重構(gòu)方法設(shè)計(jì)與應(yīng)用

2020-07-08 02:00:34郝亞平
科學(xué)技術(shù)創(chuàng)新 2020年15期
關(guān)鍵詞:命令行開源底層

郝亞平

(常州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇 常州213000)

MNSS 平臺(tái)是基于開源軟件的虛擬仿真教學(xué)實(shí)驗(yàn)平臺(tái),旨在利用瀏覽器實(shí)現(xiàn)在線虛擬仿真實(shí)驗(yàn)[1]。MNSS 綜合利用云計(jì)算、虛擬化、linux bridge 等技術(shù)[2],同時(shí)整合了眾多優(yōu)秀的開源底層軟件作為基礎(chǔ),構(gòu)建了一個(gè)以云計(jì)算技術(shù)為基礎(chǔ)的“高性能、集中式、開放性”兼具的創(chuàng)新型在線實(shí)驗(yàn)平臺(tái)??梢院芎玫膽?yīng)用于教學(xué)、科研、實(shí)踐等方面[3-4]。

MNSS 平臺(tái)主要由一臺(tái)管理機(jī)服務(wù)器、一臺(tái)原型機(jī)服務(wù)器與執(zhí)行機(jī)服務(wù)器群構(gòu)成,并且在平臺(tái)中集成了眾多的開源底層軟件。由于其系統(tǒng)架構(gòu)龐大,導(dǎo)致管理、運(yùn)營(yíng)和維護(hù)較為復(fù)雜,因而如何提升平臺(tái)的可維護(hù)性、可拓展性與安全性變得尤為重要[5]。目前,平臺(tái)的運(yùn)營(yíng)和管理比較零散,缺乏統(tǒng)一的平臺(tái)架構(gòu)。

為了解決以上的問題,我們以Python 開源庫(kù)Fire 為基礎(chǔ),將系統(tǒng)底層中的命令行以功能進(jìn)行統(tǒng)一分類,并進(jìn)行二次封裝,采用命名加參數(shù)的形式進(jìn)行調(diào)用,該架構(gòu)不僅可以使命令行更加安全的運(yùn)行,并且在開發(fā)過程中,提高開發(fā)人員的二次開發(fā)效率,增加平臺(tái)的可維護(hù)性與可拓展性。

1 Fire 的基本使用方法與實(shí)現(xiàn)原理

Fire 是谷歌團(tuán)隊(duì)開源的Python 庫(kù),用于將Python 代碼自動(dòng)轉(zhuǎn)換為代碼行(CLI),開發(fā)者不需要定義參數(shù),設(shè)置幫助信息,也不需要編寫具體執(zhí)行代碼的main 函數(shù)。相反,開發(fā)者只需從main 模塊調(diào)用“Fire”函數(shù),其余工作全部交由Python Fire 來完成。

Fire 的實(shí)現(xiàn)原理如圖1 所示,采用Fire 編寫命令行中的參數(shù)順序和代碼內(nèi)部對(duì)象的樹狀層次結(jié)構(gòu)是直接對(duì)應(yīng)的關(guān)系。如果fire 不帶參數(shù)暴露了當(dāng)前的模塊,那么第一個(gè)參數(shù)就應(yīng)該是這個(gè)模塊內(nèi)部的函數(shù)名、類名或者是變量名。如果第一個(gè)參數(shù)是函數(shù),那么接下來的參數(shù)就是函數(shù)的參數(shù)。如果第一個(gè)參數(shù)是類,那么接下來的參數(shù)可以用這個(gè)類實(shí)例內(nèi)部的方法或者字段。如果第一個(gè)參數(shù)是變量名,后面沒有參數(shù)的話,就直接顯示這個(gè)變量。如果后面還有參數(shù),那么就把這個(gè)變量看成一個(gè)對(duì)象,然后繼續(xù)使用后續(xù)參數(shù)來深入解析這個(gè)對(duì)象。由于Fire 可以使開發(fā)人員專注于方法本身,而不需要考慮如何轉(zhuǎn)變?yōu)槊?,非常?shí)用,因此我們采用Fire 將MNSS 平臺(tái)的運(yùn)營(yíng)、管理、開發(fā)等工作轉(zhuǎn)化為命令行,實(shí)現(xiàn)底層代碼和上層顯示的隔離。

在Python 里面所有的變量都是對(duì)象,包括普通的整數(shù)、字符串、浮點(diǎn)數(shù)、布爾值等。理論上可以一直將對(duì)象結(jié)構(gòu)遞歸下去,形成一個(gè)復(fù)雜的鏈?zhǔn)秸{(diào)用。

2 基于Fire 的MNSS 命令行重構(gòu)方法設(shè)計(jì)

MNSS 采用集群式服務(wù)器設(shè)計(jì),并集成了眾多開源底層軟件,為了保障系統(tǒng)底層命令行的運(yùn)行安全,提升系統(tǒng)可維護(hù)性和可拓展性,我們以Python 開源庫(kù)Fire 為基礎(chǔ),重新設(shè)計(jì)了一套針對(duì)MNSS 平臺(tái)的命令集。

圖1 Fire 原理圖

2.1 MNSS 平臺(tái)框架

MNSS 平臺(tái)在物理架構(gòu)上主要由一臺(tái)管理機(jī)服務(wù)器、一臺(tái)原型機(jī)服務(wù)器與若干執(zhí)行機(jī)服務(wù)器群組成,如圖2 所示:

圖2 MNSS 架構(gòu)圖

管理機(jī)服務(wù)器:主要實(shí)現(xiàn)用戶管理、資源管理、執(zhí)行機(jī)管理和運(yùn)維管理。

原型機(jī)服務(wù)器:為執(zhí)行機(jī)的運(yùn)行提供共性資源,如實(shí)驗(yàn)拓?fù)洹⒁曨l教程、用戶數(shù)據(jù)、虛擬元器件等等。

執(zhí)行機(jī)服務(wù)器集群:執(zhí)行機(jī)服務(wù)器集群主要由若干執(zhí)行機(jī)組成,執(zhí)行機(jī)掛載原型機(jī)服務(wù)器中的資源。執(zhí)行機(jī)為用戶仿真提供計(jì)算資源、內(nèi)存資源、存儲(chǔ)資源等必要的資源,在用戶登錄期間,每個(gè)用戶與一臺(tái)執(zhí)行機(jī)動(dòng)態(tài)綁定,當(dāng)用戶退出后,執(zhí)行機(jī)資源將動(dòng)態(tài)釋放。通過不斷增加執(zhí)行機(jī)的數(shù)量,可以滿足MNSS的共同在線用戶數(shù)量。每個(gè)執(zhí)行機(jī)的資源都是可以靈活調(diào)配的,管理員可以通過增加執(zhí)行機(jī)的CPU、內(nèi)存、網(wǎng)絡(luò)等資源,為每個(gè)用戶動(dòng)態(tài)配置所需的資源。

2.2 重構(gòu)方法設(shè)計(jì)

我們以Fire 為設(shè)計(jì)思路,將MNSS 底層的命令行按照功能進(jìn)行統(tǒng)一分類。其重構(gòu)包括以下步驟:第一步,由于目前MNSS底層軟件中,有大量以Python 語(yǔ)言為基礎(chǔ)的軟件,我們可以將此類軟件接口直接使用Fire 進(jìn)行重寫,按照其功能,在調(diào)用時(shí)統(tǒng)一分類;第二步,將MNSS 平臺(tái)對(duì)于底層命令行的調(diào)用按照功能進(jìn)行統(tǒng)一分類,包含之前對(duì)于Python 的命令行調(diào)用,并二次封裝;第三步,按照功能對(duì)二次封裝的接口進(jìn)行統(tǒng)一分類命名,并按照Fire 的原理,命名層次結(jié)構(gòu)與功能進(jìn)行一一對(duì)應(yīng)。

我們統(tǒng)一將封裝后命令行以mnss 作為一級(jí)名稱,以系統(tǒng)模塊作為二級(jí)名稱,以功能作為三級(jí)名稱,以具體實(shí)現(xiàn)作為四級(jí)名稱,中間以空格分隔。具體模塊分類如圖3 所示。

圖3 命名模塊結(jié)構(gòu)圖

我們以基礎(chǔ)組件模塊為例,其命名結(jié)構(gòu)如圖4 所示。

圖4 基礎(chǔ)模塊命名結(jié)構(gòu)圖

3 重構(gòu)應(yīng)用

我們以用戶登錄MNSS 后,對(duì)執(zhí)行機(jī)服務(wù)器的性能優(yōu)化為例進(jìn)行命令行的重構(gòu)。MNSS 平臺(tái)在每個(gè)用戶登錄執(zhí)行機(jī)的時(shí)候,為避免某些進(jìn)程重復(fù)開啟或某些應(yīng)用的內(nèi)存需要進(jìn)行清理,在登錄代碼中,我們加入了進(jìn)程清理與內(nèi)存釋放的代碼,代碼如下:

我們將此段代碼進(jìn)行二次封裝到統(tǒng)一命令行運(yùn)行類中,按照功能命名為:mnss performance login_operation clean,封裝后的代碼如下:

重構(gòu)完成后,我們可以看到,對(duì)于開發(fā)人員來說,不僅提高了代碼可讀性,而且,在后續(xù)開發(fā)中,如若添加或修改性能優(yōu)化命令行時(shí),只需要在統(tǒng)一命令行運(yùn)行類中,將對(duì)應(yīng)命名的方法進(jìn)行修改就可以完成,對(duì)于復(fù)用性比較高的命令行來說,此架構(gòu)可以大大提高開發(fā)效率,并且由于統(tǒng)一分類,可以大大提升平臺(tái)的可維護(hù)性和可拓展性。

4 結(jié)論

本文以Python 開源庫(kù)Fire 為設(shè)計(jì)思路,重新設(shè)計(jì)了一套MNSS 平臺(tái)底層中命令行的設(shè)計(jì)架構(gòu)。該架構(gòu)不僅將MNSS 底層中的Python 命令行使用Fire 進(jìn)行優(yōu)化,更采用Fire 的設(shè)計(jì)思路,將MNSS 底層命令行按功能統(tǒng)一分類,并進(jìn)行二次封裝,采用命名加參數(shù)的方式進(jìn)行調(diào)用,使命令行更加安全的運(yùn)行,并且在開發(fā)過程中,可以提高開發(fā)人員的二次開發(fā)效率,提升平臺(tái)的可維護(hù)性與可拓展性。

猜你喜歡
命令行開源底層
航天企業(yè)提升采購(gòu)能力的底層邏輯
Windows 10新版CMD更新
五毛錢能買多少頭牛
Linux系統(tǒng)下GRIB2格式GFS資料轉(zhuǎn)為GRIB1格式的方法詳解
大家說:開源、人工智能及創(chuàng)新
開源中國(guó)開源世界高峰論壇圓桌會(huì)議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
開源計(jì)算機(jī)輔助翻譯工具研究
回到現(xiàn)實(shí)底層與悲憫情懷
小說林(2014年5期)2014-02-28 19:51:47
略論“底層”
雜文選刊(2013年7期)2013-02-11 10:41:11
低碳生活,從命令行開始
宝坻区| 清涧县| 淮北市| 新密市| 巴林左旗| 迁西县| 新邵县| 灵石县| 剑阁县| 安新县| 上饶县| 咸丰县| 永泰县| 洪江市| 扎鲁特旗| 三门县| 濮阳县| 枣阳市| 陆川县| 平顶山市| 虹口区| 收藏| 黄平县| 平度市| 邯郸县| 潮州市| 五台县| 保康县| 财经| 石阡县| 屏南县| 张掖市| 进贤县| 双柏县| 高邑县| 张家港市| 会东县| 泸州市| 高雄县| 仲巴县| 永福县|