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 底層命令行按功能統一分類,并進行二次封裝,采用命名加參數的方式進行調用,使命令行更加安全的運行,并且在開發過程中,可以提高開發人員的二次開發效率,提升平臺的可維護性與可拓展性。

主站蜘蛛池模板: 久久综合伊人77777| 亚洲中文字幕精品| 亚洲最猛黑人xxxx黑人猛交| 亚洲一级毛片在线观播放| 中文字幕欧美成人免费| 99久久精彩视频| 国产精品视频系列专区| 亚洲一区国色天香| 亚洲第一视频网| 精品久久777| 中文字幕自拍偷拍| 国产精品嫩草影院视频| 成人在线天堂| 亚洲开心婷婷中文字幕| 日本不卡在线播放| 免费毛片全部不收费的| 又黄又湿又爽的视频| 国产成人综合在线视频| 欧美日韩中文国产| www.91在线播放| 在线观看国产精品日本不卡网| 免费一级毛片完整版在线看| 亚洲第一极品精品无码| 国产女人爽到高潮的免费视频 | 毛片a级毛片免费观看免下载| 国产午夜无码片在线观看网站| 午夜激情婷婷| 国产三级国产精品国产普男人| 欧美成a人片在线观看| 成年网址网站在线观看| 亚洲熟妇AV日韩熟妇在线| 精品国产一二三区| 亚洲青涩在线| 亚洲精品无码日韩国产不卡| 91在线高清视频| 欧美成人午夜视频免看| 国产福利在线观看精品| 亚洲男人在线| 亚洲成人播放| 久久永久免费人妻精品| 国产激爽大片高清在线观看| 福利国产在线| 婷婷成人综合| 成人午夜亚洲影视在线观看| a色毛片免费视频| 日韩中文字幕亚洲无线码| 97人人做人人爽香蕉精品| 亚洲欧洲日韩综合| 国产资源站| 无码人中文字幕| 日韩天堂视频| 亚洲免费福利视频| 国产精品免费p区| 青草91视频免费观看| 婷婷丁香在线观看| 青草91视频免费观看| 亚洲最黄视频| 亚洲一级无毛片无码在线免费视频| 色婷婷天天综合在线| 日韩高清成人| 2020精品极品国产色在线观看| 亚洲AV色香蕉一区二区| 999国产精品永久免费视频精品久久| 香蕉伊思人视频| 中文天堂在线视频| 免费A级毛片无码免费视频| 理论片一区| 亚洲中文字幕av无码区| 亚洲色图综合在线| 国产91高清视频| 精品国产中文一级毛片在线看| 国产激情影院| 精品国产中文一级毛片在线看| 在线看AV天堂| 国产免费羞羞视频| 亚洲激情区| 在线观看国产小视频| 天天做天天爱夜夜爽毛片毛片| 国产在线精品99一区不卡| 亚洲视频在线青青| 国产不卡网| 永久免费av网站可以直接看的 |