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

?

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

2020-07-15 05:01郝慧杰
關(guān)鍵詞:服務(wù)端生命周期虛擬化

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

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

0 引 言

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

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

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

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

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

圖1 平臺(tái)框架

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

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

2.1 Thrift通信簡(jiǎn)述

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

圖2 Thrift架構(gòu)

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

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

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

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

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

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

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

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

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

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

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

圖4 Go語(yǔ)言開(kāi)發(fā)效率

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

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

3.1 容器的使用

由于虛擬機(jī)是一種十分笨重的虛擬化技術(shù)[11],在有限的物理資源條件下無(wú)法實(shí)現(xiàn)大規(guī)模節(jié)點(diǎn)伸縮,因而極大地降低了在大規(guī)模部署場(chǎng)景下的應(yīng)用能力。而Docker容器技術(shù)具有輕量、隔離和快速部署的特點(diǎn)。容器相互之間不會(huì)有任何接口,完全使用沙箱機(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)行版本管理、隨時(shí)修改、快速分享。

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

圖5 Docker生命周期

3.2 VNF管理

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

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

圖6 VNF生命周期管理

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

4.1 測(cè)試環(huán)境

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

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

4.2 數(shù)據(jù)庫(kù)測(cè)試

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

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

4.3 通信接口測(cè)試

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

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

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

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

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

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

5 結(jié)束語(yǔ)

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

猜你喜歡
服務(wù)端生命周期虛擬化
全生命周期下呼吸機(jī)質(zhì)量控制
基于工程全生命周期的項(xiàng)目管理過(guò)程創(chuàng)新分析
基于云制造模式的產(chǎn)品碳足跡生命周期評(píng)價(jià)
射頻識(shí)別技術(shù)在手術(shù)室儀器設(shè)備全生命周期管理應(yīng)用
多人聯(lián)機(jī)對(duì)戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)
基于三層結(jié)構(gòu)下機(jī)房管理系統(tǒng)的實(shí)現(xiàn)分析
基于三層結(jié)構(gòu)下機(jī)房管理系統(tǒng)的實(shí)現(xiàn)分析
淺談虛擬化工作原理
用戶怎樣選擇虛擬化解決方案
虛擬化整合之勢(shì)凸顯