999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Fire 開源庫的MNSS 命令行重構方法設計與應用

2020-07-08 02:00:34郝亞平
科學技術創新 2020年15期

郝亞平

(常州工業職業技術學院,江蘇 常州213000)

MNSS 平臺是基于開源軟件的虛擬仿真教學實驗平臺,旨在利用瀏覽器實現在線虛擬仿真實驗[1]。MNSS 綜合利用云計算、虛擬化、linux bridge 等技術[2],同時整合了眾多優秀的開源底層軟件作為基礎,構建了一個以云計算技術為基礎的“高性能、集中式、開放性”兼具的創新型在線實驗平臺。可以很好的應用于教學、科研、實踐等方面[3-4]。

MNSS 平臺主要由一臺管理機服務器、一臺原型機服務器與執行機服務器群構成,并且在平臺中集成了眾多的開源底層軟件。由于其系統架構龐大,導致管理、運營和維護較為復雜,因而如何提升平臺的可維護性、可拓展性與安全性變得尤為重要[5]。目前,平臺的運營和管理比較零散,缺乏統一的平臺架構。

為了解決以上的問題,我們以Python 開源庫Fire 為基礎,將系統底層中的命令行以功能進行統一分類,并進行二次封裝,采用命名加參數的形式進行調用,該架構不僅可以使命令行更加安全的運行,并且在開發過程中,提高開發人員的二次開發效率,增加平臺的可維護性與可拓展性。

1 Fire 的基本使用方法與實現原理

Fire 是谷歌團隊開源的Python 庫,用于將Python 代碼自動轉換為代碼行(CLI),開發者不需要定義參數,設置幫助信息,也不需要編寫具體執行代碼的main 函數。相反,開發者只需從main 模塊調用“Fire”函數,其余工作全部交由Python Fire 來完成。

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

在Python 里面所有的變量都是對象,包括普通的整數、字符串、浮點數、布爾值等。理論上可以一直將對象結構遞歸下去,形成一個復雜的鏈式調用。

2 基于Fire 的MNSS 命令行重構方法設計

MNSS 采用集群式服務器設計,并集成了眾多開源底層軟件,為了保障系統底層命令行的運行安全,提升系統可維護性和可拓展性,我們以Python 開源庫Fire 為基礎,重新設計了一套針對MNSS 平臺的命令集。

圖1 Fire 原理圖

2.1 MNSS 平臺框架

MNSS 平臺在物理架構上主要由一臺管理機服務器、一臺原型機服務器與若干執行機服務器群組成,如圖2 所示:

圖2 MNSS 架構圖

管理機服務器:主要實現用戶管理、資源管理、執行機管理和運維管理。

原型機服務器:為執行機的運行提供共性資源,如實驗拓撲、視頻教程、用戶數據、虛擬元器件等等。

執行機服務器集群:執行機服務器集群主要由若干執行機組成,執行機掛載原型機服務器中的資源。執行機為用戶仿真提供計算資源、內存資源、存儲資源等必要的資源,在用戶登錄期間,每個用戶與一臺執行機動態綁定,當用戶退出后,執行機資源將動態釋放。通過不斷增加執行機的數量,可以滿足MNSS的共同在線用戶數量。每個執行機的資源都是可以靈活調配的,管理員可以通過增加執行機的CPU、內存、網絡等資源,為每個用戶動態配置所需的資源。

2.2 重構方法設計

我們以Fire 為設計思路,將MNSS 底層的命令行按照功能進行統一分類。其重構包括以下步驟:第一步,由于目前MNSS底層軟件中,有大量以Python 語言為基礎的軟件,我們可以將此類軟件接口直接使用Fire 進行重寫,按照其功能,在調用時統一分類;第二步,將MNSS 平臺對于底層命令行的調用按照功能進行統一分類,包含之前對于Python 的命令行調用,并二次封裝;第三步,按照功能對二次封裝的接口進行統一分類命名,并按照Fire 的原理,命名層次結構與功能進行一一對應。

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

圖3 命名模塊結構圖

我們以基礎組件模塊為例,其命名結構如圖4 所示。

圖4 基礎模塊命名結構圖

3 重構應用

我們以用戶登錄MNSS 后,對執行機服務器的性能優化為例進行命令行的重構。MNSS 平臺在每個用戶登錄執行機的時候,為避免某些進程重復開啟或某些應用的內存需要進行清理,在登錄代碼中,我們加入了進程清理與內存釋放的代碼,代碼如下:

我們將此段代碼進行二次封裝到統一命令行運行類中,按照功能命名為:mnss performance login_operation clean,封裝后的代碼如下:

重構完成后,我們可以看到,對于開發人員來說,不僅提高了代碼可讀性,而且,在后續開發中,如若添加或修改性能優化命令行時,只需要在統一命令行運行類中,將對應命名的方法進行修改就可以完成,對于復用性比較高的命令行來說,此架構可以大大提高開發效率,并且由于統一分類,可以大大提升平臺的可維護性和可拓展性。

4 結論

本文以Python 開源庫Fire 為設計思路,重新設計了一套MNSS 平臺底層中命令行的設計架構。該架構不僅將MNSS 底層中的Python 命令行使用Fire 進行優化,更采用Fire 的設計思路,將MNSS 底層命令行按功能統一分類,并進行二次封裝,采用命名加參數的方式進行調用,使命令行更加安全的運行,并且在開發過程中,可以提高開發人員的二次開發效率,提升平臺的可維護性與可拓展性。

主站蜘蛛池模板: 69综合网| 欧美成人午夜在线全部免费| AV无码一区二区三区四区| 91免费在线看| 亚洲欧洲免费视频| 一本色道久久88| 狠狠亚洲婷婷综合色香| 日韩精品少妇无码受不了| 国产美女主播一级成人毛片| 国产欧美日韩综合在线第一| 久热re国产手机在线观看| 又爽又大又光又色的午夜视频| 欧美一级爱操视频| 呦女亚洲一区精品| 美女无遮挡免费网站| 天天综合网站| 欧美有码在线观看| 亚洲天堂网在线观看视频| 久久男人资源站| 亚洲国产精品日韩专区AV| 国产欧美日韩免费| 高清免费毛片| 国产精品精品视频| 97色伦色在线综合视频| 国产成人免费手机在线观看视频| 在线人成精品免费视频| 国产成人福利在线| 在线观看视频一区二区| 国产成人精品三级| 无遮挡一级毛片呦女视频| 日本少妇又色又爽又高潮| 久久鸭综合久久国产| 国产第四页| 国产亚洲男人的天堂在线观看| 亚洲天堂免费| 999精品视频在线| 国产日韩精品一区在线不卡| 女人18毛片一级毛片在线 | 亚洲品质国产精品无码| 欧美午夜视频在线| 欧美性色综合网| 免费高清a毛片| 无码中文字幕精品推荐| 久久99精品久久久大学生| 伦伦影院精品一区| 国产成人福利在线视老湿机| 色首页AV在线| 亚洲免费黄色网| 亚洲天堂精品在线| 国产日韩av在线播放| 亚洲资源在线视频| 国产毛片久久国产| 亚洲色无码专线精品观看| 国产亚洲欧美日韩在线一区二区三区| 久久精品国产999大香线焦| 欧美日韩资源| 久久99热这里只有精品免费看| 黄色网页在线播放| 亚洲av中文无码乱人伦在线r| 二级特黄绝大片免费视频大片| 国产精品欧美在线观看| 真人免费一级毛片一区二区| 久久大香伊蕉在人线观看热2| 欧美精品黑人粗大| 成人毛片免费在线观看| 国产婬乱a一级毛片多女| 久久动漫精品| 亚洲人成日本在线观看| 99久久婷婷国产综合精| 欧美 亚洲 日韩 国产| 久久免费看片| 国产喷水视频| 男人天堂伊人网| 午夜日韩久久影院| 精品成人免费自拍视频| 亚洲综合片| 91久久偷偷做嫩草影院精品| 国产成人午夜福利免费无码r| 国产精品久久国产精麻豆99网站| 国产女人18毛片水真多1| 91成人在线免费观看| 国产又大又粗又猛又爽的视频|