亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VNF生命周期管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2020-07-15 05:01:24郝慧杰
        關(guān)鍵詞:數(shù)據(jù)庫語言管理

        郝慧杰,肖 建,張 糧,洪 聰

        (南京郵電大學(xué),江蘇 南京 210023)

        0 引 言

        網(wǎng)絡(luò)功能虛擬化(network function virtualization,NFV)是一種實(shí)現(xiàn)軟硬件解耦的新技術(shù)。NFV技術(shù)[1-3]一直以來都受到業(yè)界的廣泛關(guān)注,其核心是通過特定的虛擬化技術(shù),將通信網(wǎng)元功能分層解耦,實(shí)現(xiàn)網(wǎng)絡(luò)自動化從而提升網(wǎng)絡(luò)效益。虛擬網(wǎng)絡(luò)功能(VNF)是虛擬機(jī)中封裝的網(wǎng)絡(luò)功能設(shè)備的軟件實(shí)現(xiàn),位于商用硬件NFV基礎(chǔ)設(shè)施之上。VNF是NFV的核心部分,眾所周知NFV的基礎(chǔ)是虛擬網(wǎng)絡(luò)功能和軟件,能夠降低成本并獲得對網(wǎng)絡(luò)運(yùn)營的全面控制,同時具備靈活性和敏捷性的優(yōu)勢。NFV的大部分運(yùn)營都集中在VNF如何在NFV基礎(chǔ)設(shè)施中服務(wù),未來,NFV中的重大進(jìn)展將僅與VNF有關(guān)。虛擬網(wǎng)絡(luò)功能作為NFV虛擬網(wǎng)絡(luò)層的關(guān)鍵部分,實(shí)現(xiàn)對虛擬網(wǎng)絡(luò)功能生命周期的管理,對NFV技術(shù)發(fā)展來說具有重大意義[4]。

        目前在國內(nèi),研究VNF生命周期管理的公司也有許多(包括AT&T,思科,戴爾,微軟,甲骨文,Verizon,Juniper等),但是大多數(shù)用于管理VNF生命周期實(shí)例化、監(jiān)測、修復(fù)、縮放、更新和備份的方法成本高昂、繁瑣和耗時。所以,目前VNF生命周期管理系統(tǒng)的研究在很多方面還不夠完善和靈活。

        基于以上問題,本系統(tǒng)在保證各個功能單位模塊化的前提下,以標(biāo)準(zhǔn)的Linux的環(huán)境、接口、工具為基礎(chǔ),依托容器環(huán)境,通過VNF架構(gòu)分析和軟件模塊化設(shè)計(jì),實(shí)現(xiàn)了對Docker的狀態(tài)的管理監(jiān)控,包括安裝、啟動、停止、卸載、資源分配和釋放等生命周期管理行為。

        1 系統(tǒng)總體方案

        該生命周期管理系統(tǒng)的功能需求如圖1所示,軟件部分包括用戶交互層(命令行客戶端)、業(yè)務(wù)控制層(生命周期管理核心算法)、數(shù)據(jù)支撐層(開源Redis數(shù)據(jù)庫)。用戶交互層用來下發(fā)用戶指令,并及時響應(yīng)用戶請求,完成用戶操作;業(yè)務(wù)控制層主要是實(shí)現(xiàn)虛擬網(wǎng)絡(luò)生命周期管理狀態(tài)監(jiān)控和行為功能;數(shù)據(jù)支撐層實(shí)現(xiàn)整個系統(tǒng)的數(shù)據(jù)持久化,主要負(fù)責(zé)各模塊進(jìn)行相關(guān)數(shù)據(jù)的存儲和查詢。

        圖1 平臺框架

        本項(xiàng)目以標(biāo)準(zhǔn)的Linux的環(huán)境、接口、工具為基礎(chǔ),基于容器環(huán)境完成vnfc(虛擬化的網(wǎng)絡(luò)功能模塊組件)的開發(fā),采用開源的高性能key-value數(shù)據(jù)庫Redis來實(shí)現(xiàn)數(shù)據(jù)的存儲和調(diào)度,使用Thrift軟件框架,用來進(jìn)行可擴(kuò)展跨語言的服務(wù)開發(fā)實(shí)現(xiàn)RPC客戶端和服務(wù)器通信。

        2 軟件部分關(guān)鍵技術(shù)

        2.1 Thrift通信簡述

        Thrift是一個可伸縮的,并且跨語言的服務(wù)性的開發(fā)部署框架。Thrift通過一個中間語言IDL(interface definition language,接口定義語言)來定義RPC的數(shù)據(jù)類型和接口,然后通過特殊的編譯器生成不同語言的代碼,生成的代碼中不但包含目標(biāo)語言的接口定義、方法、數(shù)據(jù)類型,還包含有RPC協(xié)議層和傳輸層的實(shí)現(xiàn)代碼。Thrift的架構(gòu)如圖2所示,Thrift實(shí)際上是一種C/S模式,通過多語言生成工具將Thrift文件轉(zhuǎn)換成特定語言的接口文件,包括客戶端部分和服務(wù)器部分,從而實(shí)現(xiàn)服務(wù)端和客戶端跨語言的支持。用戶根據(jù)實(shí)際需求,編寫客戶端或服務(wù)端代碼[5]。用戶定義好Thrift的IDL文件后,使用Thrift的編譯器來生成相應(yīng)語言的代碼文件,之后服務(wù)器端提供服務(wù),客戶端調(diào)用服務(wù)。

        圖2 Thrift架構(gòu)

        選用Thrift通信機(jī)制的優(yōu)勢包括:支持非常多的語言綁定;Thrift文件生成目標(biāo)代碼,簡單易用;消息定義文件支持注釋;數(shù)據(jù)結(jié)構(gòu)與傳輸表現(xiàn)的分離,支持多種消息格式;包含完整的客戶端/服務(wù)端堆棧,可快速實(shí)現(xiàn)RPC;支持同步和異步通信。

        Thrift可以說它是現(xiàn)在最優(yōu)秀的分布式通信機(jī)制,實(shí)現(xiàn)了在大型分布式集群中各獨(dú)立模塊之間的高效協(xié)同。該框架具有可擴(kuò)展性,能夠支持跨編程語言的服務(wù)開發(fā)[6],能夠高效創(chuàng)建服務(wù)接口,因此符合本系統(tǒng)高并發(fā)、大數(shù)據(jù)量的要求。

        2.2 Redis數(shù)據(jù)庫

        Redis(remote dictionary server)[7]是一個開源的、支持網(wǎng)絡(luò)、基于內(nèi)存、支持Key-Value等多種數(shù)據(jù)結(jié)構(gòu)、可持久化的高性能存儲系統(tǒng)。它提供字符串,哈希,列表,隊(duì)列,集合結(jié)構(gòu)直接存取,支持原子性的操作,所以通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器??捎糜跁捑彺妫录l(fā)布或訂閱,數(shù)據(jù)庫和消息中間件等場景。

        Redis的持久化機(jī)制十分完備,所有數(shù)據(jù)都是保存在內(nèi)存中,然后通過異步方式不定期地保存到磁盤上,也可以把每一次數(shù)據(jù)變化都寫入到一個append only file里面。Redis支持master-slave模式的數(shù)據(jù)備份,可以通過復(fù)制功能自動實(shí)現(xiàn)同步的過程。當(dāng)從數(shù)據(jù)庫崩潰重啟后,主數(shù)據(jù)庫會自動同步數(shù)據(jù),保證數(shù)據(jù)不丟失。而當(dāng)主數(shù)據(jù)庫崩潰時,將從數(shù)據(jù)庫提升成主數(shù)據(jù)庫繼續(xù)提供服務(wù),并在原來的主數(shù)據(jù)庫啟動后將其設(shè)置成新的主數(shù)據(jù)庫的從數(shù)據(jù)庫,將數(shù)據(jù)同步回來。數(shù)據(jù)同步提高了讀取操作的可擴(kuò)展性。Redis能讀的速度是110 000次/s,寫的速度是81 000次/s,所以性能非常高。

        在實(shí)際應(yīng)用中,當(dāng)用戶請求到達(dá)Redis服務(wù)器時,只是對業(yè)務(wù)數(shù)據(jù)進(jìn)行讀寫,而沒有對數(shù)據(jù)庫進(jìn)行任何的操作,這樣就能大大提高讀寫的速度,從而達(dá)到高速響應(yīng)的需求。這些緩存的數(shù)據(jù)仍然需要持久化,也就是存入數(shù)據(jù)庫之中,所以在一個請求操作完Redis的讀/寫之后,會去判斷該高速讀/寫的業(yè)務(wù)是否結(jié)束,如果不成立,則不會操作數(shù)據(jù)庫;如果成立,則觸發(fā)事件將Redis的緩存的數(shù)據(jù)以批量的形式一次性寫入數(shù)據(jù)庫,從而完成持久化的工作。Redis數(shù)據(jù)請求操作如圖3所示。

        圖3 Redis數(shù)據(jù)請求操作

        2.3 Go語言的優(yōu)勢

        Go語言作為編譯型語言,在數(shù)據(jù)類型上也支持得非常全面,除了傳統(tǒng)的整型、浮點(diǎn)型、字符型、數(shù)組、結(jié)構(gòu)等類型外,從實(shí)用性上考慮,也對字符串類型、切片類型、字典類型、復(fù)數(shù)類型、錯誤類型、管道類型、甚至任意類型進(jìn)行了原生支持,并且用起來非常方便。比如字符串、切片類型,操作簡便性幾乎和python類似。與其他傳統(tǒng)語言相比,Go語言通過豐富的內(nèi)置類庫實(shí)現(xiàn)了大量的接口函數(shù),極大程度地簡化了開發(fā)工作,開發(fā)者們只需調(diào)用相應(yīng)的類庫即可實(shí)現(xiàn)相關(guān)的功能[8-9]。

        在異步的并發(fā)編程過程中,只能方便、快速地啟動協(xié)程還不夠。協(xié)程之間的消息通信,也是非常重要的,否則,各個協(xié)程不能協(xié)作無法控制。Go自誕生之日起就表明自己是為了簡化多并發(fā)編程,Go既支持共享內(nèi)存也支持消息傳遞的通信方式[10]。在Go語言中,使用基于消息傳遞的通信方式進(jìn)行協(xié)程間通信,并且將消息管道(channel)作為基本的數(shù)據(jù)類型,使用類型關(guān)鍵字(chan)進(jìn)行定義,并發(fā)操作時線程安全。

        真正的高效率開發(fā),是配置化的,并不需要寫太多的代碼,甚至根本就不需要寫代碼,即可完成邏輯實(shí)現(xiàn),而這種方式對于后期的維護(hù)成本也是最優(yōu)的,因?yàn)樽龅搅烁叨鹊慕y(tǒng)一。Go的語言描述效率毋庸置疑(見圖4),對上述所有公共組件的實(shí)現(xiàn),均未超過1 000行代碼,十分少的工作量就解決了通信上的問題。

        圖4 Go語言開發(fā)效率

        本項(xiàng)目用Go語言編寫一個客戶端通過與服務(wù)端通信快速實(shí)現(xiàn)對容器的數(shù)據(jù)查詢,數(shù)據(jù)存儲,并可以進(jìn)行資源調(diào)度和狀態(tài)監(jiān)控,大大提升了業(yè)務(wù)開發(fā)效率,節(jié)省了開發(fā)成本。

        3 系統(tǒng)設(shè)計(jì)

        3.1 容器的使用

        由于虛擬機(jī)是一種十分笨重的虛擬化技術(shù)[11],在有限的物理資源條件下無法實(shí)現(xiàn)大規(guī)模節(jié)點(diǎn)伸縮,因而極大地降低了在大規(guī)模部署場景下的應(yīng)用能力。而Docker容器技術(shù)具有輕量、隔離和快速部署的特點(diǎn)。容器相互之間不會有任何接口,完全使用沙箱機(jī)制。容器擁有獨(dú)立的文件系統(tǒng),安全且相互隔離的運(yùn)行環(huán)境[12]。容器里的進(jìn)程,使用到的資源都是虛擬的,這樣與底層系統(tǒng)是完全隔離的。

        Docker讓用戶可以輕松打包應(yīng)用程序的代碼、配置和依賴關(guān)系,然后移植到其他機(jī)器上,也實(shí)現(xiàn)虛擬化。容器可以幫助保證應(yīng)用程序快速、可靠、一致地部署,其間不受部署環(huán)境的影響。容器可以方便地進(jìn)行版本管理、隨時修改、快速分享。

        利用Docker的自身優(yōu)勢,可以實(shí)現(xiàn)環(huán)境一致性、運(yùn)營效率、開發(fā)人員生產(chǎn)力和版本控制等目標(biāo)。Docker相比于傳統(tǒng)虛擬化方式具有更多的優(yōu)勢,不僅可以解決硬件管理的問題,也改變了虛擬化的方式。所以本項(xiàng)目選擇Docker作為生命周期管理的實(shí)體。Docker生命周期如圖5所示。

        圖5 Docker生命周期

        3.2 VNF管理

        VNF管理[13-15]主要是為了保證虛擬網(wǎng)絡(luò)服務(wù)的正常運(yùn)行和資源合理分配,從而對VNF進(jìn)行一系列的相關(guān)操作。這些操作實(shí)現(xiàn)對網(wǎng)絡(luò)生命周期管理,包括安裝、啟動、停止、卸載、資源分配和釋放等。

        本系統(tǒng)的實(shí)現(xiàn)如下:首先用戶通過Thrift命令行客戶端下發(fā)VNF生命周期管理的請求(包括安裝、啟動、停止、卸載、資源分配和釋放),系統(tǒng)利用RPC通信將消息傳遞到Thrift的服務(wù)端,然后服務(wù)端對請求進(jìn)行一系列的合法性檢查,驗(yàn)證失敗返回error。如果驗(yàn)證通過,程序會繼續(xù)進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理下發(fā),即對Docker鏡像文件的安裝、Docker的啟動和終止等等,同時將當(dāng)前數(shù)據(jù)存入Redis數(shù)據(jù)庫中,最后將執(zhí)行結(jié)果返回到客戶端進(jìn)行展示。系統(tǒng)流程如圖6所示。

        圖6 VNF生命周期管理

        4 實(shí)驗(yàn)檢測

        4.1 測試環(huán)境

        通過簡單的實(shí)驗(yàn)來測試VNF生命周期管理系統(tǒng)的運(yùn)行,驗(yàn)證Redis數(shù)據(jù)庫存儲和Thrift通信接口測試,使用的測試環(huán)境如表1所示。

        表1 實(shí)驗(yàn)環(huán)境和工具

        4.2 數(shù)據(jù)庫測試

        在本項(xiàng)目中,Redis數(shù)據(jù)庫有著不可替代的作用,數(shù)據(jù)庫為系統(tǒng)的管理、運(yùn)行、查詢和實(shí)現(xiàn)數(shù)據(jù)存儲等提供空間。數(shù)據(jù)庫最常見的有兩種問題,這兩種問題導(dǎo)致的錯誤為數(shù)據(jù)一致性錯誤和輸出錯誤。數(shù)據(jù)一致性錯誤來源于使用者提交的信息數(shù)據(jù)格式不正確,另外一種輸出錯誤一般是網(wǎng)絡(luò)和程序設(shè)計(jì)過程中的問題等導(dǎo)致,對于以上兩種問題,將分別測試。測試項(xiàng)目如表2所示。

        表2 數(shù)據(jù)庫測試

        4.3 通信接口測試

        生命周期管理系統(tǒng)服務(wù)端與命令行客戶端通過Thrift調(diào)用方式進(jìn)行通信,因此需要對所有接口進(jìn)行測試調(diào)用,以保證程序的正確運(yùn)行??蛻舳讼掳l(fā)VNF生命周期管理的請求(包括安裝、啟動、狀態(tài)查看、停止、卸載、資源分配和釋放)都需要進(jìn)行測試,圖7為下發(fā)命令進(jìn)行狀態(tài)查看。

        圖7 Docker狀態(tài)查看測試

        通過實(shí)驗(yàn)所有支持的命令行都能夠通過Thrift通信接口下發(fā)成功,并返回預(yù)期的結(jié)果。

        對系統(tǒng)的性能,利用客戶端調(diào)用做最簡單的阻塞式多次調(diào)用壓力測試。用多個客戶端多連接,多個線程,模擬發(fā)送請求??偣舶l(fā)送10 000 request 100client并發(fā),執(zhí)行五次時間如下:681 ms,543 ms,604 ms,542 ms,576 ms;平均時間:589.2 ms,16 972 request/s。

        4.4 實(shí)驗(yàn)結(jié)果

        實(shí)驗(yàn)得出,Redis數(shù)據(jù)庫可以實(shí)現(xiàn)在任務(wù)執(zhí)行過程中高效獲取共享數(shù)據(jù)的分布式緩存,解決共享數(shù)據(jù)的存儲問題。在并發(fā)性上,Thrift支持多進(jìn)程,可以同時啟用多個客戶端,下發(fā)request服務(wù)端并發(fā)處理請求,耗時少,性能高。通過實(shí)驗(yàn)得出該方案在實(shí)用性、可擴(kuò)展性、通用性等方面都有所改進(jìn),但是在客戶端界面實(shí)現(xiàn)等方面還是存在一些問題需要再進(jìn)行完善。

        5 結(jié)束語

        該系統(tǒng)主要借鑒前人經(jīng)驗(yàn),努力克服當(dāng)前VNF生命周期管理系統(tǒng)中存在的缺點(diǎn)和限制,開發(fā)設(shè)計(jì)一套成本低、耗時少、簡單易操作的生命周期管理系統(tǒng)。該系統(tǒng)以標(biāo)準(zhǔn)的Linux的環(huán)境、接口、工具為基礎(chǔ),基于容器環(huán)境完成vnfc(虛擬化的網(wǎng)絡(luò)功能模塊組件)的開發(fā),采用開源的高性能key-value數(shù)據(jù)庫Redis來實(shí)現(xiàn)數(shù)據(jù)的存儲和調(diào)度,采用Thrift軟件框架,用來進(jìn)行可擴(kuò)展跨語言的服務(wù)開發(fā)實(shí)現(xiàn)RPC客戶端和服務(wù)器通信,實(shí)現(xiàn)對Docker的狀態(tài)進(jìn)行監(jiān)控和生命周期管理。容器是操作系統(tǒng)級的一種虛擬化形式,它將應(yīng)用程序依賴關(guān)系、所需的庫和配置封裝在同一操作系統(tǒng)的其他容器隔離的包中。容器能讓應(yīng)用程序以獨(dú)立的方式運(yùn)行,并且可以輕松遷移。隨著向云原生的遷移,VNF微服務(wù)部署在容器中是發(fā)展的趨勢。該系統(tǒng)將為Docker平臺的普及發(fā)展提供助力,提高Docker平臺的應(yīng)用、開發(fā)、部署及運(yùn)維應(yīng)用的效率。

        猜你喜歡
        數(shù)據(jù)庫語言管理
        棗前期管理再好,后期管不好,前功盡棄
        語言是刀
        文苑(2020年4期)2020-05-30 12:35:30
        讓語言描寫搖曳多姿
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        累積動態(tài)分析下的同聲傳譯語言壓縮
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        “這下管理創(chuàng)新了!等7則
        雜文月刊(2016年1期)2016-02-11 10:35:51
        我有我語言
        91三级在线观看免费| 国产精品视频一区日韩丝袜| 国产爆乳美女娇喘呻吟久久| av黄色大片久久免费| 人妻少妇精品久久久久久| 300部国产真实乱| 欧美色图50p| 免费看草逼操爽视频网站| 亚洲va中文字幕无码一二三区| 久久国产热这里只有精品| 综合91在线精品| 在线观看国产自拍视频| 亚洲av色影在线| 欧美日韩精品一区二区在线观看 | 亚洲日韩精品A∨片无码加勒比| 国产精品人成在线765| 国产情侣自拍一区视频| 亚洲综合精品伊人久久| 欧美 亚洲 国产 日韩 综AⅤ | 国产极品女主播国产区| 日日躁夜夜躁狠狠躁超碰97| 国产午夜精品久久久久九九| 少妇人妻无奈的跪趴翘起| 久久久久免费看成人影片 | 国产一区二区在线免费视频观看| 午夜精品久久久久久久无码| 久久久久无码国产精品不卡| 亚洲24小时在线免费视频网站| 亚洲最大在线视频一区二区| 亚洲国产精品综合久久网各| 国产精品久久码一区二区| 久久夜色精品国产三级| 性欧美长视频免费观看不卡| 狠狠躁夜夜躁人人爽天天天天97| AV无码系列一区二区三区| 美女视频一区二区三区在线| 国产精品福利自产拍在线观看| 老汉tv永久视频福利在线观看 | 国产激情久久久久影院老熟女| 亚洲国产成人久久综合一区77| 亚洲中文字幕在线第六区|