基于Nomad的邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持設(shè)計(jì)與實(shí)現(xiàn)論文設(shè)計(jì)_第1頁
基于Nomad的邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持設(shè)計(jì)與實(shí)現(xiàn)論文設(shè)計(jì)_第2頁
基于Nomad的邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持設(shè)計(jì)與實(shí)現(xiàn)論文設(shè)計(jì)_第3頁
基于Nomad的邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持設(shè)計(jì)與實(shí)現(xiàn)論文設(shè)計(jì)_第4頁
基于Nomad的邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持設(shè)計(jì)與實(shí)現(xiàn)論文設(shè)計(jì)_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、摘要邊緣計(jì)算是一個(gè)新興的技術(shù)方向,邊緣計(jì)算能夠和云計(jì)算緊密結(jié)合,充分發(fā)揮邊緣的低時(shí)延、安全等特性,具有廣闊的應(yīng)用前景。邊緣計(jì)算的研究工作仍處于一種探索階段,各廠商及開源社區(qū)邊緣技術(shù)路線各不相同。本文的邊緣計(jì)算平臺(tái)是基于Nomad構(gòu)建的邊緣云落地形態(tài)。Docker等容器技術(shù)由于具備輕量級(jí)、節(jié)約資源、毫秒級(jí)啟動(dòng)時(shí)間、高性能等特性,適合大多數(shù)邊緣計(jì)算的場(chǎng)景。然而,Nomad已有的容器等運(yùn)行時(shí)并不能覆蓋某些邊緣場(chǎng)景的需求,Nomad運(yùn)行時(shí)的支持種類仍有待豐富。本文著眼于邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持,包括Libvirt虛擬機(jī)運(yùn)行時(shí)和FaaS函數(shù)運(yùn)行時(shí)。目前許多企業(yè)還存在存量虛擬機(jī)的場(chǎng)景,已有業(yè)務(wù)遷移的需要

2、以及一些邊緣場(chǎng)景需要使用傳統(tǒng)虛擬機(jī)。基于該需求,本文引入Libvirt虛擬化技術(shù),提出了Libvirt虛擬機(jī)運(yùn)行時(shí),以插件的形式作為一個(gè)中間層管理虛擬機(jī)任務(wù)。另外,物聯(lián)網(wǎng)平臺(tái)和應(yīng)用使用邊緣計(jì)算承載已成為共識(shí),但物聯(lián)網(wǎng)應(yīng)用存在海量接入、碎片化、邊緣化等特點(diǎn),并且目前云、邊、端三者的計(jì)算架構(gòu)、開發(fā)模式存在較大差異,為提升效率需要邊緣計(jì)算提供新的架構(gòu)和技術(shù)手段。本文調(diào)研了Serverless的FaaS技術(shù),提出了FaaS函數(shù)運(yùn)行時(shí)。技術(shù)選型后采用OpenFaaS,嘗試在邊緣端采用函數(shù)計(jì)算的服務(wù)模式。FaaS函數(shù)運(yùn)行時(shí)實(shí)現(xiàn)了faas-provider接口,進(jìn)行函數(shù)管理、部署和調(diào)用,將閑置的函數(shù)縮容到零

3、,并在調(diào)用前預(yù)熱函數(shù),從函數(shù)的層面定義編排函數(shù)工作流程。由此,基于Nomad的邊緣計(jì)算平臺(tái)具備虛擬機(jī)、容器、函數(shù)等多粒度多運(yùn)行時(shí)的支持。此外,Serverless=FaaS+BaaS,單獨(dú)的FaaS函數(shù)運(yùn)行時(shí)還不能滿足開發(fā)者需要,本文設(shè)計(jì)了邊緣容器鏡像倉庫方案,提供邊緣端就近地拉取鏡像的一類BaaS。以及整合其他開源項(xiàng)目,在邊緣計(jì)算平臺(tái)上提供監(jiān)控、告警、自動(dòng)擴(kuò)縮容等更多的函數(shù)計(jì)算服務(wù)方案。關(guān)鍵詞:邊緣計(jì)算,Nomad,多運(yùn)行時(shí),Libvirt,函數(shù)計(jì)算iAbstractEdge computing is an emerging technology direction, which can b

4、e tightly integrated with cloud computing to give full play to the characteristics of low latency and security at the edge, so it has broad application prospects. The research work on edge computing is still in an exploratory stage, and vendors and open source communities have different edge technol

5、ogy routes. The edge computing platform in this paper is constructed on Nomad in the landing form of edge cloud.Container technologies such as Docker are suitable for most edge computing scenarios due to their lightweight, resource-saving, millisecond-level startup time, and high performance. Howeve

6、r, the existing container and other runtimes of Nomad cannot cover the requirements of some edge scenarios, and the types of Nomad runtime still need to be enriched. This paper looks at the multi-runtime support of edge computing platform, including a virtual machine runtime of libvirt and a functio

7、n runtime of FaaS.At present, many enterprises still have scenarios of existing virtual machines. These existing service migration needs and some edge scenarios require the use of traditional virtual machines. Based on this demand, this paper introduces libvirt virtualization technology, and propose

8、s a virtual machine runtime of libvirt using plug-ins as an intermediate layer to manage virtual machine tasks. In addition, it has become common for IoT platforms and applications to use edge computing as bearers. However, IoT applications are characterized by massive access, fragmentation, and mar

9、ginalization. At present, there are large differences in the computing architecture and development models of the cloud, edge and terminal. To improve efficiency, new architecture and technical means are needed to improve edge computing. This paper investigates the serverless technology and proposes

10、 a function runtime of FaaS. After the technology selection, OpenFaaS is adopted, and the service model of function computing is used at the edge. The FaaS function runtime implements the faas-provider interface for function management, deployment, and invocation. Besides, the idle functions can be

11、reduced to zero and warmed up later when invoking. Whats more, an orchestration function workflow is defined from the function level.As a result, Nomad-based edge computing platforms in this paper have multi-granularity and multi-runtime support such as virtual machines, containers, and functions.La

12、st but not least, Serverless = FaaS + BaaS. The single FaaS function runtime cannot meet the developers needs. We designs an edge container mirroring warehouse solution in this paper to provide a type of BaaS which the mirror image can be pulled near the edge. By integrating other open source projec

13、ts, this paper provides more function computing service solutions such as monitoring, alerting, and auto scaling on edge computing platform.Keywords:Edge Computing, Nomad, Multiple Runtimes, Libvirt, FaaS iii目錄摘要iAbstractii圖目錄III表目錄V第1章 緒論11.1 邊緣計(jì)算平臺(tái)與函數(shù)計(jì)算背景與現(xiàn)狀11.1.1 邊緣計(jì)算的背景與現(xiàn)狀21.1.2 函數(shù)計(jì)算的背景與現(xiàn)狀51.1.3

14、 Nomad運(yùn)行時(shí)的背景與現(xiàn)狀81.2 邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持91.3 本文主要工作和貢獻(xiàn)111.4 本文的組織結(jié)構(gòu)12第2章 相關(guān)技術(shù)綜述142.1 Nomad原理和架構(gòu)綜述142.1.1 Nomad核心概念142.1.2 Nomad架構(gòu)簡(jiǎn)介152.1.3 Nomad的插件框架182.2 Nomad驅(qū)動(dòng)插件運(yùn)行機(jī)制分析182.3 Libvirt虛擬化技術(shù)222.4 OpenFaaS技術(shù)分析252.5 Consul服務(wù)網(wǎng)絡(luò)簡(jiǎn)介272.6 本章小結(jié)27第3章 系統(tǒng)總體架構(gòu)和運(yùn)行時(shí)需求分析293.1 系統(tǒng)架構(gòu)說明293.2 運(yùn)行時(shí)需求分析323.2.1 功能性分析353.2.2 非功能性分析3

15、6第4章 Libvirt虛擬機(jī)運(yùn)行時(shí)設(shè)計(jì)與實(shí)現(xiàn)374.1 虛擬機(jī)運(yùn)行時(shí)設(shè)計(jì)目標(biāo)374.2 Libvirt虛擬機(jī)運(yùn)行時(shí)概要設(shè)計(jì)384.3 Libvirt虛擬機(jī)運(yùn)行時(shí)關(guān)鍵功能實(shí)現(xiàn)434.3.1 驅(qū)動(dòng)配置解析及加載434.3.2 虛擬機(jī)生命周期管理444.3.3 虛擬機(jī)任務(wù)配置454.3.4 虛擬機(jī)運(yùn)行時(shí)網(wǎng)絡(luò)管理464.4 本章小結(jié)48第5章 FaaS函數(shù)運(yùn)行時(shí)設(shè)計(jì)與實(shí)現(xiàn)495.1 函數(shù)運(yùn)行時(shí)設(shè)計(jì)目標(biāo)495.2 FaaS函數(shù)運(yùn)行時(shí)概要設(shè)計(jì)505.3 FaaS函數(shù)運(yùn)行時(shí)關(guān)鍵功能實(shí)現(xiàn)525.3.1 FaaS-Nomad-Provider的實(shí)現(xiàn)525.3.2 縮容到零545.3.3 函數(shù)預(yù)熱565.3.4

16、 函數(shù)工作流程585.4 本章小結(jié)61第6章 邊緣容器鏡像倉庫方案626.1 邊緣容器鏡像倉庫的設(shè)計(jì)目標(biāo)626.2 Harbor鏡像倉庫技術(shù)分析626.3 邊緣容器鏡像倉庫方案設(shè)計(jì)646.4 本章小結(jié)69第7章 函數(shù)計(jì)算服務(wù)方案707.1 函數(shù)計(jì)算服務(wù)的設(shè)計(jì)目標(biāo)707.2 監(jiān)控707.3 告警和自動(dòng)擴(kuò)縮容727.4 負(fù)載均衡747.5 調(diào)用鏈追蹤757.6 本章小結(jié)77第8章 實(shí)驗(yàn)結(jié)果與分析788.1 Libvirt虛擬機(jī)運(yùn)行時(shí)功能性測(cè)試788.1.1 測(cè)試方法788.1.2 測(cè)試環(huán)境介紹788.1.3 實(shí)驗(yàn)結(jié)果及分析808.2 FaaS函數(shù)運(yùn)行時(shí)功能性測(cè)試808.2.1 測(cè)試方法808.2.

17、2 測(cè)試環(huán)境介紹818.2.3 實(shí)驗(yàn)結(jié)果及分析828.3 FaaS函數(shù)運(yùn)行時(shí)性能測(cè)試838.3.1 冷啟動(dòng)時(shí)間838.3.2 自動(dòng)擴(kuò)縮容效率858.4 本章小結(jié)89第9章 總結(jié)與展望90參考文獻(xiàn)92IV圖目錄圖1.1 Serverless虛擬化發(fā)展過程7圖1.2 函數(shù)計(jì)算原理示意圖7圖2.1 Nomad高層架構(gòu)圖16圖2.2 Nomad服務(wù)器多區(qū)域聯(lián)邦16圖2.3 運(yùn)行時(shí)驅(qū)動(dòng)作業(yè)執(zhí)行涉及的主要模塊19圖2.4 HCL配置樣例21圖2.5 Libvirt架構(gòu)圖22圖2.6 Libvirt用例模型23圖2.7 使用libvirtd控制遠(yuǎn)程虛擬機(jī)監(jiān)控程序24圖2.8 基于驅(qū)動(dòng)程序的Libvirt架構(gòu)

18、24圖2.9 OpenFaaS架構(gòu)圖25圖2.10 faas-provider示意圖26圖2.11 Provider調(diào)用函數(shù)26圖3.1 邊緣計(jì)算研究?jī)?nèi)容全場(chǎng)景規(guī)劃29圖3.2 邊緣多集群作業(yè)環(huán)境30圖3.3 邊緣計(jì)算管理平臺(tái)總體框架圖31圖4.1 NFV ETSI參考框架39圖4.2 基于Nomad的VIM實(shí)例化模型40圖4.3 Libvirt虛擬機(jī)運(yùn)行時(shí)支持的原理概要圖41圖4.4 Libvirt NAT網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖43圖4.5 Libvirt Bridge網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖43圖4.6 nomad-driver-libvirt驅(qū)動(dòng)插件配置44圖4.7 nomad-driver-libvir

19、t驅(qū)動(dòng)插件加載及Fingerprint44圖4.8 域生命周期的狀態(tài)圖45圖4.9 虛擬機(jī)管理抽象接口45圖4.10 nomad-driver-libvirt NAT網(wǎng)絡(luò)模型47圖4.11 nomad-driver-libvirt Bridge網(wǎng)絡(luò)模型48圖5.1 FaaS函數(shù)運(yùn)行時(shí)架構(gòu)圖50圖5.2 事件連接器模式51圖5.3 FaaS處理相關(guān)的Handler52圖5.4 FaaS-Nomad-Provider流程圖53圖5.5 部署函數(shù)工作機(jī)制時(shí)序圖54圖5.6 FaaS-Idler實(shí)現(xiàn)縮容到零55圖5.7 函數(shù)預(yù)熱實(shí)現(xiàn)時(shí)序圖57圖5.8 函數(shù)工作流程中適配器模式示意圖58圖5.9 函數(shù)工

20、作流程中聚合模式示意圖59圖5.10 函數(shù)工作流程四類編排模型60圖5.11 帶條件的動(dòng)態(tài)分支結(jié)構(gòu)實(shí)現(xiàn)60圖6.1 Harbor架構(gòu)圖63圖6.2 邊緣容器鏡像倉庫三級(jí)同步設(shè)計(jì)64圖6.3 倉庫管理用長(zhǎng)域名指定倉庫65圖6.4 主節(jié)點(diǎn)鏡像倉庫集群架構(gòu)67圖6.5 邊緣鏡像倉庫Consul DNS解析68圖7.1 監(jiān)控與其他模塊關(guān)系圖70圖7.2 函數(shù)計(jì)算監(jiān)控功能設(shè)計(jì)71圖7.3 Grafana函數(shù)監(jiān)控部分儀表板72圖7.4 告警和自動(dòng)擴(kuò)縮容功能72圖7.5 函數(shù)計(jì)算告警和自動(dòng)擴(kuò)縮容功能設(shè)計(jì)73圖7.6 自動(dòng)擴(kuò)容規(guī)則73圖7.7 擴(kuò)容中的函數(shù)作業(yè)74圖7.8 副本數(shù)擴(kuò)容監(jiān)控74圖7.9 未負(fù)載均

21、衡時(shí)函數(shù)實(shí)例累計(jì)調(diào)用次數(shù)觀測(cè)75圖7.10 負(fù)載均衡后函數(shù)實(shí)例調(diào)用次數(shù)變化觀測(cè)75圖7.11 EventHandler實(shí)現(xiàn)增加OpenTracing76圖7.12 函數(shù)調(diào)用鏈追蹤77圖8.1 冷啟動(dòng)時(shí)間測(cè)試使用的基準(zhǔn)Serverless函數(shù)83圖8.2 httpstat第一次調(diào)用分析84圖8.3 httpstat第二次調(diào)用分析84圖8.4 函數(shù)副本數(shù)隨時(shí)間變化86表目錄表3.1 開源Serverless函數(shù)運(yùn)行時(shí)比較表34表4.1 虛擬機(jī)任務(wù)配置45表5.1 縮容到零相關(guān)配置參數(shù)55表5.2 函數(shù)預(yù)熱與伸縮相關(guān)配置參數(shù)57表6.1 Harbor與主流鏡像倉庫鏡像同步互操作情況63表6.2 同步

22、規(guī)則示例66表7.1 函數(shù)計(jì)算監(jiān)控功能Prometheus采集指標(biāo)71表8.1 Libvirt功能性測(cè)試環(huán)境軟件版本79表8.2 Nomad v0.9.7 Client測(cè)試集覆蓋情況79表8.3 Libvirt虛擬機(jī)運(yùn)行時(shí)單元測(cè)試和集成測(cè)試覆蓋情況80表8.4 Libvirt虛擬機(jī)運(yùn)行時(shí)功能性相關(guān)測(cè)試結(jié)果80表8.5 FaaS函數(shù)運(yùn)行時(shí)功能性測(cè)試環(huán)境軟件版本81表8.6 FaaS函數(shù)運(yùn)行時(shí)單元測(cè)試集和集成測(cè)試集覆蓋情況82表8.7 FaaS函數(shù)運(yùn)行時(shí)功能性相關(guān)測(cè)試結(jié)果83表8.8 AWS Lambda調(diào)用基準(zhǔn)函數(shù)測(cè)試85表8.9 FaaS函數(shù)運(yùn)行時(shí)負(fù)載下擴(kuò)容的服務(wù)質(zhì)量86表8.10 AWS L

23、ambda負(fù)載下擴(kuò)容的服務(wù)質(zhì)量88VIII第1章 緒論1.1 邊緣計(jì)算平臺(tái)與函數(shù)計(jì)算背景與現(xiàn)狀目前,邊緣計(jì)算(Edge Computing)是一個(gè)新興的技術(shù)方向,邊緣計(jì)算能夠和云計(jì)算緊密結(jié)合,充分發(fā)揮邊緣的低時(shí)延、安全等特性,具有廣闊的應(yīng)用前景。本文邊緣計(jì)算平臺(tái)是邊緣云落地形態(tài),是一套基于邊緣計(jì)算的能力與云計(jì)算核心技術(shù),在邊緣基礎(chǔ)設(shè)施之上構(gòu)建的計(jì)算平臺(tái),也是在邊緣位置形成的計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)、安全等能力的全面的彈性云平臺(tái)1。邊緣計(jì)算平臺(tái)適用于將云的計(jì)算能力延展到距離“萬物”十千米的位置,例如鄉(xiāng)鎮(zhèn)、街道級(jí)的計(jì)算場(chǎng)景,以及距離“萬物”一千米的工廠、樓宇等計(jì)算場(chǎng)景。為“萬物互聯(lián)”的終端提供自組織、低時(shí)

24、延、可定義、可調(diào)度、安全性高、標(biāo)準(zhǔn)開放的分布式云服務(wù)。與云計(jì)算領(lǐng)域已經(jīng)具備成熟的計(jì)算管理軟件平臺(tái)不同,邊緣、物端計(jì)算平臺(tái)在國(guó)內(nèi)外并沒有成熟穩(wěn)定的對(duì)應(yīng)技術(shù)。當(dāng)前各個(gè)公司都希望在邊緣計(jì)算這一新的領(lǐng)域獲得先發(fā)優(yōu)勢(shì),邊緣計(jì)算和無服務(wù)計(jì)算(Serverless Computing)的研究工作仍處于初級(jí)階段,各廠商及開源社區(qū)邊緣技術(shù)路線各不相同,個(gè)性體現(xiàn)并豐富著共性,同時(shí)個(gè)性并不完全包含于共性之中。本文的邊緣計(jì)算平臺(tái)基于Nomad,一個(gè)輕量級(jí)的集群管理及其上的應(yīng)用編排工具。在邊緣計(jì)算產(chǎn)業(yè)聯(lián)盟白皮書中將邊緣計(jì)算產(chǎn)業(yè)總體上劃分為聯(lián)接、智能、自治三個(gè)發(fā)展階段。第一個(gè)發(fā)展階段是聯(lián)接,一種運(yùn)行時(shí)的支持意味著一種工作

25、負(fù)載任務(wù)類型和一類技術(shù)生態(tài)的支持。本文著眼于邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持,目前基于Nomad的邊緣計(jì)算平臺(tái)原生已支持Docker、LXC、裸進(jìn)程Exec等運(yùn)行時(shí)。但當(dāng)前基于Nomad的邊緣計(jì)算平臺(tái)在運(yùn)行時(shí)方面不能滿足業(yè)務(wù)場(chǎng)景需求。一是有些邊緣場(chǎng)景仍需要使用傳統(tǒng)虛擬機(jī),包括同時(shí)需要支持多個(gè)不同OS的場(chǎng)景,業(yè)務(wù)有更高的安全、隔離需求。借助容器和虛擬機(jī),系統(tǒng)能夠更方便地對(duì)計(jì)算平臺(tái)上的業(yè)務(wù)負(fù)載進(jìn)行整合、編排和管理。二是物聯(lián)網(wǎng)平臺(tái)和應(yīng)用使用邊緣計(jì)算承載已成為共識(shí),但物聯(lián)網(wǎng)應(yīng)用存在海量接入、碎片化、邊緣化等特點(diǎn),需要邊緣計(jì)算提供新的架構(gòu)和技術(shù)手段;邊緣應(yīng)用業(yè)務(wù)通常具有波峰波谷變化,業(yè)務(wù)運(yùn)行具有事件觸發(fā)特征,

26、且邊緣環(huán)境資源受限,設(shè)備眾多,需要考慮更細(xì)粒度的動(dòng)態(tài)調(diào)整和面向協(xié)作的資源管理方式。而隨著無服務(wù)器計(jì)算的提出,其中函數(shù)計(jì)算,即函數(shù)即服務(wù)(Function as a Service,F(xiàn)aaS)的服務(wù)模式以函數(shù)為粒度,更加體現(xiàn)了資源復(fù)用與靈活調(diào)度的核心理念,且符合物聯(lián)網(wǎng)、邊緣應(yīng)用業(yè)務(wù)的特點(diǎn),能夠簡(jiǎn)化邊緣應(yīng)用開發(fā)者的工作?;谝陨蠁栴},本文具體基于Nomad的邊緣計(jì)算平臺(tái),研究虛擬機(jī)、容器、函數(shù)等多粒度多運(yùn)行時(shí)的支持,在原有邊緣計(jì)算平臺(tái)的基礎(chǔ)上,設(shè)計(jì)和實(shí)現(xiàn)Libvirt虛擬機(jī)運(yùn)行時(shí)和FaaS函數(shù)運(yùn)行時(shí)。并在FaaS函數(shù)運(yùn)行時(shí)之上拓展,結(jié)合無服務(wù)器計(jì)算的模型,設(shè)計(jì)了邊緣容器鏡像倉庫服務(wù)方案和更多的函數(shù)

27、計(jì)算服務(wù)方案,擴(kuò)展邊緣計(jì)算平臺(tái)的服務(wù)模式,簡(jiǎn)化邊緣應(yīng)用開發(fā)者的工作,提供更便捷的服務(wù)體驗(yàn)。1.1.1 邊緣計(jì)算的背景與現(xiàn)狀邊緣計(jì)算的提出背景。物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)、車聯(lián)網(wǎng)、增強(qiáng)現(xiàn)實(shí)、虛擬現(xiàn)實(shí)、4K/8K高清視頻等豐富新型業(yè)務(wù)應(yīng)用的快速涌現(xiàn),對(duì)數(shù)據(jù)分發(fā)、數(shù)據(jù)處理、網(wǎng)絡(luò)的傳輸容量等提出了越來越高的要求,并且應(yīng)用與服務(wù)的深入發(fā)展形成了海量的數(shù)據(jù)。另外,終端用戶也越來越渴望獲得更高體驗(yàn)質(zhì)量的網(wǎng)絡(luò)服務(wù),并愿意為此付出更多的費(fèi)用。傳統(tǒng)云計(jì)算模型已經(jīng)無法有效應(yīng)對(duì)快速增加的數(shù)據(jù)量、更高的數(shù)據(jù)傳輸帶寬需求、新型應(yīng)用數(shù)據(jù)處理更高的實(shí)時(shí)性要求。因此,必須對(duì)網(wǎng)絡(luò)進(jìn)行架構(gòu)上的調(diào)整,業(yè)界提出在網(wǎng)絡(luò)邊緣提供計(jì)算處理與數(shù)據(jù)存儲(chǔ)

28、等能力,即邊緣計(jì)算,來應(yīng)對(duì)超大帶寬、海量連接、超低時(shí)延等業(yè)務(wù)需求,以達(dá)到在網(wǎng)絡(luò)邊緣向用戶提供優(yōu)質(zhì)服務(wù)的目的。邊緣計(jì)算的發(fā)展歷史。20世紀(jì)90年代,Akamai公司首次定義了內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN)2。在終端用戶附近設(shè)立傳輸節(jié)點(diǎn),用于存儲(chǔ)圖像、視頻等緩存的靜態(tài)數(shù)據(jù),其被視為邊緣計(jì)算最早的雛形。邊緣計(jì)算通過允許節(jié)點(diǎn)參與并執(zhí)行基本的計(jì)算任務(wù),進(jìn)一步提升了這一概念。1997年,計(jì)算機(jī)科學(xué)家Brian Noble成功地將邊緣計(jì)算應(yīng)用于移動(dòng)技術(shù)的語音識(shí)別3。兩年后邊緣計(jì)算又被成功應(yīng)用于延長(zhǎng)手機(jī)電池的使用壽命,這一過程在當(dāng)時(shí)被稱為Cyber foraging

29、4。1999年,點(diǎn)對(duì)點(diǎn)計(jì)算(Peer to Peer Computing)出現(xiàn)5。2006年,亞馬遜公司發(fā)布了EC2服務(wù),從此云計(jì)算正式問世,并開始被企業(yè)采用。2009年匯總的基于虛擬機(jī)的Cloudlets移動(dòng)計(jì)算案例中,時(shí)延與云計(jì)算之間的端到端關(guān)系被詳細(xì)介紹和分析6。其中提出了兩級(jí)架構(gòu)的概念:第一級(jí)是云計(jì)算基礎(chǔ)設(shè)施,第二級(jí)是由分布式云元素構(gòu)成的Cloudlet。這種兩級(jí)架構(gòu)在很多方面成為現(xiàn)代邊緣計(jì)算的理論基礎(chǔ)。2013年,霧計(jì)算(Fog Computing)由Cisco帶頭成立的OpenFog組織正式提出,其中心思想是提升互聯(lián)網(wǎng)可擴(kuò)展性的分布式云計(jì)算基礎(chǔ)設(shè)施7。霧計(jì)算和邊緣計(jì)算概念上相似,如

30、果要區(qū)分,兩者的主要區(qū)別是邊緣計(jì)算在強(qiáng)調(diào)邊緣設(shè)備和基礎(chǔ)設(shè)施的同時(shí),更關(guān)心邊緣智能的體現(xiàn)。歐洲電信標(biāo)準(zhǔn)協(xié)會(huì)(European Telecommunications Standards Institute,ETSI)于2014年設(shè)立移動(dòng)邊緣計(jì)算規(guī)范工作組,推動(dòng)邊緣計(jì)算標(biāo)準(zhǔn)化,旨在為實(shí)現(xiàn)計(jì)算及存儲(chǔ)資源的彈性利用,將云計(jì)算平臺(tái)從移動(dòng)核心網(wǎng)絡(luò)內(nèi)部遷移到移動(dòng)接入邊緣8。2015年邊緣計(jì)算進(jìn)入到Gartner的Hype Cycle(技術(shù)成熟曲線)。2016年ETSI提出把移動(dòng)邊緣計(jì)算(Mobile Edge Computing,MEC)的概念擴(kuò)展為多接入邊緣計(jì)算(Multi-Access Edge Comp

31、uting,MEC)9。自此,MEC成為一個(gè)可以運(yùn)行在移動(dòng)網(wǎng)絡(luò)邊緣的執(zhí)行特定計(jì)算任務(wù)的服務(wù)器等設(shè)備。邊緣計(jì)算的定義。對(duì)于邊緣計(jì)算的定義,目前業(yè)界還沒有統(tǒng)一的結(jié)論。2018年邊緣計(jì)算產(chǎn)業(yè)聯(lián)盟(Edge Computing Consortium,ECC)對(duì)邊緣計(jì)算的定義是:“在靠近物或數(shù)據(jù)源頭的網(wǎng)絡(luò)邊緣側(cè),融合網(wǎng)絡(luò)、計(jì)算、存儲(chǔ)、應(yīng)用核心能力的開放平臺(tái),就近提供邊緣智能服務(wù),滿足行業(yè)數(shù)字化在敏捷連接、實(shí)時(shí)業(yè)務(wù)、數(shù)據(jù)優(yōu)化、應(yīng)用智能、安全與隱私保護(hù)等方面的關(guān)鍵需求。它可以作為聯(lián)接物理和數(shù)字世界的橋梁,使能智能資產(chǎn)、智能網(wǎng)關(guān)、智能系統(tǒng)和智能服務(wù)”10。邊緣計(jì)算的國(guó)內(nèi)外發(fā)展現(xiàn)狀。近年來,邊緣計(jì)算業(yè)界正在加快

32、產(chǎn)業(yè)化進(jìn)程,各類標(biāo)準(zhǔn)化、產(chǎn)業(yè)化、研究類活動(dòng)由各類機(jī)構(gòu)組織踴躍發(fā)起和推動(dòng)。概括地分為三大陣營(yíng),它們?cè)谶吘売?jì)算發(fā)展上各有優(yōu)勢(shì):互聯(lián)網(wǎng)企業(yè)試圖將公有云服務(wù)能力擴(kuò)展到邊緣側(cè),以消費(fèi)物聯(lián)網(wǎng)為主要陣地;工業(yè)企業(yè)試圖發(fā)揮自身工業(yè)網(wǎng)絡(luò)連接和工業(yè)互聯(lián)網(wǎng)平臺(tái)服務(wù)的領(lǐng)域優(yōu)勢(shì),以工業(yè)互聯(lián)網(wǎng)為主要陣地;通信企業(yè)希望挖掘網(wǎng)絡(luò)連接設(shè)備的更多價(jià)值,在接入側(cè)開放網(wǎng)絡(luò)能力,向工業(yè)互聯(lián)網(wǎng)和消費(fèi)物聯(lián)網(wǎng)進(jìn)軍11。邊緣計(jì)算技術(shù)架構(gòu)。2018年ECC基于參考架構(gòu)基于模型驅(qū)動(dòng)的工程方法,設(shè)計(jì)并發(fā)布了邊緣計(jì)算參考架構(gòu)3.0。隨著研究側(cè)重點(diǎn)的細(xì)微差別,邊緣計(jì)算發(fā)展至今已有MEC、微云、霧計(jì)算3種業(yè)界廣泛認(rèn)可的技術(shù)架構(gòu)12。另外,云接入網(wǎng)的研究發(fā)

33、展也為邊緣計(jì)算的發(fā)展提供了更多創(chuàng)新的可能。其中,移動(dòng)邊緣計(jì)算模型基本認(rèn)為移動(dòng)邊緣終端設(shè)備不具備計(jì)算能力,故強(qiáng)調(diào)在邊緣服務(wù)器上進(jìn)行終端任務(wù)的計(jì)算處理,這些邊緣服務(wù)器被建設(shè)在云計(jì)算中心與邊緣設(shè)備之間。相比而言,邊緣計(jì)算模型中的終端設(shè)備具有較強(qiáng)的計(jì)算能力。因此,移動(dòng)邊緣計(jì)算可以納入邊緣計(jì)算模型中邊緣計(jì)算服務(wù)器的層次和架構(gòu)13。根據(jù)云技術(shù)正向跨多云分布和包含各種設(shè)備的方向發(fā)展,在架構(gòu)設(shè)計(jì)上需要輕量級(jí)虛擬化解決方案,而容器化目前被討論為一種輕量級(jí)虛擬化解決方案。Pahl14等人回顧了邊緣云的需求,并討論了從數(shù)據(jù)中心到小型設(shè)備的一系列網(wǎng)絡(luò)節(jié)點(diǎn),通過分布式多云平臺(tái)構(gòu)建應(yīng)用程序所需要的適合的容器和集群技術(shù)。K

34、unz15等人介紹了一種動(dòng)態(tài)、安全的開放服務(wù)邊緣網(wǎng)絡(luò)體系結(jié)構(gòu)OpenEdge(此處不同于百度的OpenEdge)。OpenEdge提供了一個(gè)控制體系結(jié)構(gòu),以類似云的方式自動(dòng)化邊緣網(wǎng)絡(luò)的配置,以簡(jiǎn)化新網(wǎng)絡(luò)服務(wù)和應(yīng)用程序的引入。Pahl16等人展示了一種邊緣云的PaaS架構(gòu)。對(duì)于邊緣云,應(yīng)用程序和服務(wù)編排可以幫助通過容器管理和編排應(yīng)用程序。以這種方式計(jì)算被帶到云的邊緣,而不是從物聯(lián)網(wǎng)IoT到云的數(shù)據(jù)。通過在樹莓樹派等小型單板設(shè)備上實(shí)現(xiàn)容器和集群技術(shù),實(shí)驗(yàn)表明邊緣云可以滿足成本效率、低功耗和健壯性等需求。邊緣計(jì)算使能技術(shù),包括網(wǎng)絡(luò)功能虛擬化(Network Function Virtualizati

35、on,NFV)17、云計(jì)算和數(shù)據(jù)中心網(wǎng)絡(luò)、軟件定義網(wǎng)絡(luò)(Software Defined Networking,SDN)18、信息中心網(wǎng)絡(luò)(Information Centric Networking,ICN)19、人工智能、大數(shù)據(jù)、區(qū)塊鏈等各種支撐技術(shù)。邊緣計(jì)算商業(yè)化落地。當(dāng)今,邊緣計(jì)算市場(chǎng)仍然處于初期發(fā)展階段,目前邊緣計(jì)算的主要落地形態(tài)主要包括云邊緣、邊緣云和云化網(wǎng)關(guān)三種落地形態(tài)。云邊緣邏輯上仍是云服務(wù);邊緣云是邊緣側(cè)構(gòu)建中小規(guī)模服務(wù)能力,邊緣服務(wù)能力主要由邊緣云提供;云化網(wǎng)關(guān)是重構(gòu)原有嵌入式網(wǎng)關(guān)系統(tǒng),在邊緣側(cè)提供協(xié)議/接口轉(zhuǎn)換、邊緣計(jì)算等能力。亞馬遜率先發(fā)布了AWS Greengrass

36、服務(wù),將AWS擴(kuò)展到設(shè)備上。谷歌發(fā)布了兩款新產(chǎn)品,分別是硬件芯片Edge TPU和軟件堆棧Cloud IoT Edge旨在幫助改善邊緣聯(lián)網(wǎng)設(shè)備的開發(fā)。微軟發(fā)布了Azure IoT Edge解決方案,該方案通過將云分析擴(kuò)展到邊緣設(shè)備以支持離線使用。Apache基金會(huì)孵化項(xiàng)目Edgent可以嵌入網(wǎng)關(guān)和小型的內(nèi)存邊緣設(shè)備中,加速在邊緣端的實(shí)時(shí)數(shù)據(jù)分析。Dell發(fā)起物聯(lián)網(wǎng)解決方案EdgeX Foundry,成為L(zhǎng)inux基金會(huì)的首個(gè)物聯(lián)網(wǎng)框架。百度開源了智能邊緣計(jì)算框架OpenEdge,后加入Linux Foundation Edge更名為Baetyl。阿里巴巴推出了物聯(lián)網(wǎng)邊緣計(jì)算平臺(tái)Link IoT

37、 Edge。華為開源了KubeEdge,Kubernetes本地邊緣計(jì)算框架,加入云原生計(jì)算基金會(huì)(Cloud Native Computing Foundation,CNCF)孵化。Xiong20等人在KubeEdge的論文中介紹了該邊緣基礎(chǔ)設(shè)施允許在邊緣采用現(xiàn)有的云服務(wù)和云開發(fā)模型,并提供邊緣和云之間的無縫通信。華為云為邊緣云和云邊緣分別提供了IEF、IEC解決方案。金山云推出了面向下一代邊緣計(jì)算的KENC(Kingsoft Cloud Edge Node Computing)平臺(tái)。OpenStack Foundation推出StarlingX邊緣云軟件堆棧。本文基于Nomad的邊緣計(jì)算平

38、臺(tái)屬于邊緣云的落地形態(tài)。此外,還涌現(xiàn)出Scale Computing、Vertiv等一大批商業(yè)開拓者,各路資本也在投資布局邊緣計(jì)算,新興的邊緣計(jì)算領(lǐng)域蓬勃發(fā)展百家爭(zhēng)鳴。1.1.2 函數(shù)計(jì)算的背景與現(xiàn)狀函數(shù)計(jì)算,即函數(shù)即服務(wù),無服務(wù)器計(jì)算的核心。需要結(jié)合云平臺(tái)提供的專門的廠商綁定的后端即服務(wù)(Backend as a Service,BaaS),滿足特定應(yīng)用的需求。簡(jiǎn)單地說,Serverless=FaaS+BaaS21。FaaS采取事件驅(qū)動(dòng)的方式,用戶開發(fā)并以某種格式打包上傳代碼,由平臺(tái)準(zhǔn)備資源并執(zhí)行計(jì)算任務(wù),無需預(yù)采購與管理服務(wù)器等IT基礎(chǔ)設(shè)施。函數(shù)計(jì)算的提出背景。無服務(wù)器架構(gòu)的興起是云計(jì)算技

39、術(shù)的深入發(fā)展的產(chǎn)物。云計(jì)算發(fā)展之初,有兩種極端的相互競(jìng)爭(zhēng)的云虛擬化方法,市場(chǎng)最終選擇了亞馬遜EC2低級(jí)虛擬機(jī)方法來處理云計(jì)算。這種選擇的缺點(diǎn)是,開發(fā)人員必須自己管理虛擬機(jī)并進(jìn)行繁瑣的配置。隨著公共云BaaS云產(chǎn)品的繁榮發(fā)展被越來越多的開發(fā)者采納,5G落地、AI爆發(fā)、大數(shù)據(jù)持續(xù)突破,云計(jì)算已然成為新時(shí)代的水電煤,用戶使用云計(jì)算的主要矛盾發(fā)生了轉(zhuǎn)變。AWS隨之推出Lambda云服務(wù),其提出了以函數(shù)計(jì)算為核心的Serverless架構(gòu)。Serverless提供了一個(gè)大大簡(jiǎn)化云編程的接口。它代表了一種進(jìn)化,與過去程序員從匯編語言到高級(jí)編程語言的轉(zhuǎn)變非常相似的生產(chǎn)力的進(jìn)步。數(shù)據(jù)中心和其中的軟件平臺(tái)的快速

40、創(chuàng)新再次改變了開發(fā)者構(gòu)建、部署和管理在線應(yīng)用程序和服務(wù)的方式。無服務(wù)器Serverless,盡管這可能是一個(gè)矛盾的說法,因?yàn)槿匀辉谑褂梅?wù)器進(jìn)行計(jì)算,但這個(gè)名稱之所以流行起來,是因?yàn)樗砻髟朴脩糁皇蔷帉懘a,并將傳統(tǒng)云計(jì)算所需的大量服務(wù)器系統(tǒng)管理任務(wù)委托給云廠商。Serverless和傳統(tǒng)云計(jì)算之間的三個(gè)基本區(qū)別是:計(jì)算與存儲(chǔ)的解耦,它們的規(guī)模獨(dú)立,價(jià)格獨(dú)立;執(zhí)行一段代碼的抽象而不是分配資源來執(zhí)行代碼;為代碼執(zhí)行付費(fèi),而不是為分配給執(zhí)行代碼的資源付費(fèi)。函數(shù)計(jì)算的發(fā)展歷史。2014年AWS推出Lambda云服務(wù),其提出的函數(shù)計(jì)算為核心的Serverless架構(gòu),得到關(guān)注和推廣。其實(shí),谷歌最初的A

41、pp Engine也允許開發(fā)者部署代碼,同時(shí)將大部分操作留給云廠商,但在Serverless得到普及的前幾年,它基本上遭到了市場(chǎng)的拒絕,市場(chǎng)最終接受了2006年亞馬遜發(fā)布的EC2的低級(jí)虛擬機(jī)方法來處理云計(jì)算。低級(jí)虛擬機(jī)成功的主要原因是,在云計(jì)算的早期,用戶希望在云中重新創(chuàng)建與本地計(jì)算機(jī)上相同的計(jì)算環(huán)境,以簡(jiǎn)化將工作負(fù)載遷移到云上的工作,很明顯,這種實(shí)際的需求優(yōu)先于僅僅為云編寫新程序,特別是在早期云的成功程度尚不清楚的情況下。函數(shù)計(jì)算的發(fā)展歷史包含了虛擬化的演進(jìn)史。早期每個(gè)應(yīng)用程序都在自己的物理機(jī)器上運(yùn)行。購買和維護(hù)大量機(jī)器需要高額成本,且每臺(tái)機(jī)器經(jīng)常未被充分使用,導(dǎo)致了一個(gè)巨大的飛躍:虛擬化。

42、虛擬化是計(jì)算平臺(tái)的關(guān)鍵技術(shù),開放網(wǎng)格服務(wù)架構(gòu)(OGSA)認(rèn)為虛擬化是為一組類似資源提供一個(gè)通用的抽象接口集,從而隱藏屬性和操作之間的差異,并允許通過一種通用的方式來查看并維護(hù)資源22?;谔摂M化的高效便捷的管理,有效地提高了資源利用率并降低了能耗。起初是基于硬件的重量級(jí)虛擬化,如Kernel-based Virtual Machine(KVM)等。隨后出現(xiàn)了更輕量級(jí)的操作系統(tǒng)級(jí)的容器虛擬化技術(shù),如Docker、Linux Containers(LXC)等。容器是面向服務(wù)器的類Unix風(fēng)格的進(jìn)程的重新打包,結(jié)合Linux內(nèi)核提供的Namespace資源隔離機(jī)制,實(shí)現(xiàn)輕量級(jí)虛擬化。使用Cgroup

43、s控制和隔離資源限制。與Docker之類的分發(fā)工具相結(jié)合,容器使開發(fā)人員能夠輕松地啟動(dòng)新服務(wù),而無需使用虛擬機(jī)緩慢地啟動(dòng)且有運(yùn)行時(shí)的開銷。對(duì)于基于硬件和基于容器的虛擬化來說,服務(wù)器是核心概念,它們?nèi)匀皇荢erverful的。云計(jì)算的核心理念是資源復(fù)用和靈活調(diào)度,從物理機(jī)發(fā)展到虛擬機(jī)再到容器,都是資源粒度不斷細(xì)化、管理調(diào)度不斷優(yōu)化的過程。云計(jì)算發(fā)展出基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service,IaaS)、平臺(tái)即服務(wù)(Platform as a Service,PaaS)和軟件即服務(wù)(Software as a Service,SaaS)三個(gè)層次三種服務(wù)模式。長(zhǎng)期以來,

44、服務(wù)器一直被用來部署在線應(yīng)用程序,但眾所周知服務(wù)器很難配置和管理,服務(wù)器啟動(dòng)時(shí)間嚴(yán)重限制了應(yīng)用程序快速伸縮的能力。無服務(wù)器計(jì)算的新模型的出現(xiàn)注定將改變現(xiàn)代可伸縮應(yīng)用程序的結(jié)構(gòu),它的核心是函數(shù)計(jì)算FaaS。開發(fā)人員不再將應(yīng)用程序視為服務(wù)器的集合,而是使用一組可訪問公共數(shù)據(jù)存儲(chǔ)的函數(shù)來定義應(yīng)用程序。不同用戶的函數(shù)處理程序共享由云廠商管理的公共服務(wù)器池,因此開發(fā)人員不必?fù)?dān)心服務(wù)器管理,應(yīng)用程序可以快速擴(kuò)展。通過這種方式,F(xiàn)aaS服務(wù)模式代表了應(yīng)用程序之間共享演進(jìn)的邏輯結(jié)論,如圖1.1所示,這個(gè)演講過程從硬件到操作系統(tǒng)再到運(yùn)行時(shí)環(huán)境本身。圖1.1 Serverless虛擬化發(fā)展過程函數(shù)計(jì)算的國(guó)內(nèi)外發(fā)展

45、現(xiàn)狀。2014年AWS率先發(fā)布Lambda云服務(wù),提出了以函數(shù)計(jì)算為核心的無服務(wù)器架構(gòu)。隨后各個(gè)云計(jì)算提供商紛紛推出函數(shù)計(jì)算云服務(wù),谷歌發(fā)布Google Cloud Functions,微軟發(fā)布Azure Function,IBM發(fā)布IBM Cloud Functions并開源了Apache OpenWhisk。2017年,國(guó)內(nèi)騰訊云發(fā)布無服務(wù)器云函數(shù),阿里云發(fā)布Function Compute。函數(shù)計(jì)算在2017年成為當(dāng)年增長(zhǎng)最快的云服務(wù)。業(yè)界認(rèn)為,使用函數(shù)計(jì)算,云的費(fèi)用可減少10%至90%。自2009年加州大學(xué)伯克利分校預(yù)測(cè)的當(dāng)時(shí)云計(jì)算所面臨的挑戰(zhàn)將會(huì)被逐一解決,云計(jì)算將會(huì)繁榮起來23,如

46、今已一一實(shí)現(xiàn)。2019年2月,伯克利再次發(fā)表論文預(yù)測(cè)Serverless將成為下一代云服務(wù)的主流形態(tài)24。函數(shù)計(jì)算服務(wù)的原理可以抽象為三部分,即事件源、函數(shù)計(jì)算以及事件源觸發(fā)函數(shù)計(jì)算的規(guī)則。用戶開發(fā)并以某種格式打包上傳代碼并配置函數(shù)觸發(fā)規(guī)則,觸發(fā)規(guī)則的管理比較靈活,可以放在函數(shù)計(jì)算或放在事件源內(nèi),一般是網(wǎng)關(guān)發(fā)布的REST接口。如圖1.2所示,當(dāng)事件產(chǎn)生并按觸發(fā)規(guī)則觸發(fā)函數(shù),函數(shù)計(jì)算會(huì)根據(jù)業(yè)務(wù)運(yùn)行情況自動(dòng)擴(kuò)縮容。Serverless初期會(huì)造成廠商綁定,因?yàn)樵茝S商的函數(shù)計(jì)算服務(wù)都會(huì)限定允許觸發(fā)函數(shù)計(jì)算的自家事件源或觸發(fā)器。圖1.2 函數(shù)計(jì)算原理示意圖函數(shù)計(jì)算的特點(diǎn)優(yōu)點(diǎn)。當(dāng)前云計(jì)算的抽象粒度大多在機(jī)

47、器級(jí)別,函數(shù)計(jì)算則將計(jì)算服務(wù)的抽象粒度細(xì)化到了函數(shù)級(jí)別,以事件驅(qū)動(dòng)的方式觸發(fā)應(yīng)用響應(yīng)用戶請(qǐng)求。以企業(yè)計(jì)劃采購服務(wù)器開發(fā)一款短視頻社交應(yīng)用為例,那么需要考慮很多的問題,例如如何構(gòu)建和運(yùn)維一套彈性的穩(wěn)定的視頻處理后端服務(wù);需要采購多少臺(tái)服務(wù)器;服務(wù)器采用什么規(guī)格;如何配置網(wǎng)絡(luò)和操作系統(tǒng);如何部署環(huán)境;如何負(fù)載均衡;如何動(dòng)態(tài)伸縮;如何升級(jí)配置;如何應(yīng)對(duì)服務(wù)器宕機(jī);如何應(yīng)對(duì)用戶請(qǐng)求峰值;如何應(yīng)對(duì)系統(tǒng)監(jiān)控報(bào)警。而使用函數(shù)計(jì)算,無需考慮這些問題,用戶構(gòu)建應(yīng)用和服務(wù)十分快速和便捷。使用函數(shù)計(jì)算,無需采購和管理底層的基礎(chǔ)設(shè)施,運(yùn)維成本低;只需要將代碼部署到函數(shù)計(jì)算,并以事件驅(qū)動(dòng)的方式觸發(fā)函數(shù)執(zhí)行,服務(wù)就可以平

48、穩(wěn)運(yùn)行。此外,函數(shù)計(jì)算的主要優(yōu)點(diǎn)是當(dāng)負(fù)載突然增加時(shí),能夠快速地彈性伸縮應(yīng)對(duì)峰值壓力。用戶無需再為環(huán)境部署、服務(wù)器擴(kuò)容、服務(wù)器宕機(jī)等問題煩惱。函數(shù)計(jì)算采用按量付費(fèi)的業(yè)務(wù)模型,尤其適合明顯有波峰波谷的情形。此外,函數(shù)計(jì)算應(yīng)輔助提供日志查詢、性能監(jiān)控和告警等功能,幫助開發(fā)者快速定位問題、排查故障。借助函數(shù)計(jì)算構(gòu)建的應(yīng)用,符合無服務(wù)器概念的應(yīng)用設(shè)計(jì)模式。2019年是Serverless云原生的普及元年,雙十一表明,無服務(wù)器應(yīng)用架構(gòu)是禁得起流量洪流考驗(yàn)的。函數(shù)計(jì)算適合的應(yīng)用場(chǎng)景。適合使用函數(shù)計(jì)算的應(yīng)用與業(yè)務(wù)都可以通過函數(shù)計(jì)算較好地解決成本、效率、聯(lián)通問題,這些應(yīng)用與業(yè)務(wù)一般具有以下特點(diǎn):第一,業(yè)務(wù)運(yùn)行具

49、有事件觸發(fā)特征,例如定時(shí)器任務(wù)、程序消息傳遞、IoT中的低頻請(qǐng)求、批量任務(wù)等。第二,業(yè)務(wù)具有波峰波谷變化,例如視頻數(shù)據(jù)備份、視頻轉(zhuǎn)碼、圖片處理等。第三,需要關(guān)聯(lián)多種后端云服務(wù),例如Web應(yīng)用等。第四,應(yīng)用數(shù)據(jù)處理量大,需要多臺(tái)服務(wù)器協(xié)作,使得開發(fā)者需要更多設(shè)置來應(yīng)對(duì)請(qǐng)求,例如實(shí)時(shí)數(shù)據(jù)流處理、數(shù)據(jù)驅(qū)動(dòng)后續(xù)分發(fā)等。第五,一些低頻的、維護(hù)性的后臺(tái)任務(wù),例如人工觸發(fā)作業(yè)等。第六,應(yīng)用版本迭代速度快,業(yè)務(wù)開發(fā)、部署、升級(jí)、擴(kuò)容要求高25。1.1.3 Nomad運(yùn)行時(shí)的背景與現(xiàn)狀Nomad是一個(gè)輕量級(jí)的工作負(fù)載編排工具,提供了多集群管理、應(yīng)用部署、彈性伸縮等基礎(chǔ)功能。Nomad支持包括非容器的不同的任務(wù)負(fù)

50、載類型,具體通過驅(qū)動(dòng)的概念接入運(yùn)行時(shí)。根據(jù)歐洲電信標(biāo)準(zhǔn)化項(xiàng)目SuperFluidity交付成果D526中,涉及早期Nomad的NFVM功能與OpenStack和OpenVIM的比較,相對(duì)于兩者,在實(shí)例化方面具有顯著的低時(shí)延優(yōu)勢(shì)。在v0.9版本前,Nomad支持的運(yùn)行時(shí)有Docker、LXC、裸進(jìn)程Exec等運(yùn)行時(shí),此時(shí)的運(yùn)行時(shí)方案有如下缺陷:l 功能特性:有相同的運(yùn)行時(shí)生命周期,部分運(yùn)行時(shí)功能相近,差異化較小,實(shí)現(xiàn)的接口很少。不支持可插拔的運(yùn)行時(shí)驅(qū)動(dòng)。l 代碼管理:對(duì)接不同運(yùn)行時(shí)的驅(qū)動(dòng)代碼均存放在主倉庫中,運(yùn)行時(shí)本身的代碼更新會(huì)相互影響,運(yùn)行時(shí)類型的增多,導(dǎo)致管理和維護(hù)復(fù)雜。l 支持更多運(yùn)行時(shí)

51、:社區(qū)開放的需要,以及各類業(yè)務(wù)場(chǎng)景下包括容器或非容器化的工作負(fù)載類型的支持的需求。每次新增一個(gè)運(yùn)行時(shí)驅(qū)動(dòng)都需要重新編譯。這類需求會(huì)導(dǎo)致代碼倉庫代碼過多,應(yīng)當(dāng)分離出來,由第三方獨(dú)立支持和維護(hù)。為了解決這些問題,Nomad社區(qū)在v0.9版本進(jìn)行了代碼重構(gòu),設(shè)計(jì)了一套基于C/S架構(gòu)的插件化機(jī)制,包括運(yùn)行時(shí)驅(qū)動(dòng)插件化、硬件設(shè)備插件化,便捷和規(guī)范化第三方運(yùn)行時(shí)的接入。可以動(dòng)態(tài)注冊(cè)運(yùn)行時(shí)驅(qū)動(dòng)而無須重新編譯Nomad二進(jìn)制文件。部分常用運(yùn)行時(shí)驅(qū)動(dòng)插件內(nèi)置化,做到開箱即用。不同的工作負(fù)載類型可以基于同一套標(biāo)準(zhǔn)的運(yùn)行時(shí)驅(qū)動(dòng)接口實(shí)現(xiàn)任務(wù)相關(guān)的運(yùn)行時(shí)驅(qū)動(dòng)進(jìn)行對(duì)接,該接口使用Protocol Buffer,基于gRP

52、C。運(yùn)行時(shí)驅(qū)動(dòng)接口使得第三方運(yùn)行時(shí)分離出來,作為一個(gè)獨(dú)立的項(xiàng)目,獨(dú)立于Nomad進(jìn)行開發(fā)和發(fā)布。這套接口也使得社區(qū)生態(tài)變得更加開放。在本文研究進(jìn)行之初,正值v0.9剛剛發(fā)布,社區(qū)中基于運(yùn)行時(shí)驅(qū)動(dòng)接口的項(xiàng)目?jī)H有官方主倉庫分離的LXC。后來社區(qū)生態(tài)中支持的驅(qū)動(dòng)陸續(xù)出現(xiàn)了Singularity、Jails、Pot、Firecracker等。由上可知,Nomad運(yùn)行時(shí)的支持種類仍有待豐富,缺少虛擬機(jī)運(yùn)行時(shí)和函數(shù)運(yùn)行時(shí),不能滿足一些邊緣計(jì)算場(chǎng)景的需要。運(yùn)行時(shí)驅(qū)動(dòng)接口是工作負(fù)載類型接入的方式之一,本文中的Libvirt虛擬機(jī)運(yùn)行時(shí)便是基于該運(yùn)行時(shí)驅(qū)動(dòng)接口實(shí)現(xiàn)?;贜omad的邊緣計(jì)算平臺(tái)作為PaaS平臺(tái)層

53、,在其上支持函數(shù)運(yùn)行時(shí),函數(shù)工作負(fù)載是構(gòu)建并運(yùn)行在容器里的,同時(shí)函數(shù)運(yùn)行時(shí)相關(guān)的組件可以通過容器運(yùn)行,盡量減少大幅修改Nomad代碼的侵入性。1.2 邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)支持基于Nomad的邊緣計(jì)算平臺(tái)的多運(yùn)行時(shí)具體指包括容器運(yùn)行時(shí)、虛擬機(jī)運(yùn)行時(shí)、函數(shù)運(yùn)行時(shí)等。(1) 容器運(yùn)行時(shí)基于Nomad的邊緣計(jì)算平臺(tái)原生已支持Docker、LXC、裸進(jìn)程等運(yùn)行時(shí)。Ismail27等人對(duì)基于容器的Docker技術(shù)用于邊緣計(jì)算平臺(tái)從4個(gè)基本準(zhǔn)則:部署與終止、資源與服務(wù)管理、容錯(cuò)、緩存,進(jìn)行了評(píng)價(jià)和實(shí)驗(yàn),證實(shí)Docker可以用于構(gòu)建一個(gè)可行的邊緣計(jì)算平臺(tái)。Docker等容器技術(shù)由于具備輕量級(jí)、節(jié)約資源、毫秒

54、級(jí)啟動(dòng)時(shí)間、高性能等特性,適合大多數(shù)邊緣計(jì)算的場(chǎng)景。(2) Libvirt虛擬機(jī)運(yùn)行時(shí)依然有些邊緣場(chǎng)景需要使用傳統(tǒng)虛擬機(jī),包括同時(shí)需要支持多個(gè)不同OS的場(chǎng)景,例如Linux、Windows或者VxWorks;以及業(yè)務(wù)間相差較大并對(duì)相互隔離需求更高的時(shí)候,例如在一個(gè)邊緣計(jì)算節(jié)點(diǎn)中同時(shí)運(yùn)行工業(yè)上的PLC實(shí)時(shí)控制、機(jī)器視覺和人機(jī)界面等。虛擬機(jī)和容器的選擇主要依賴業(yè)務(wù)需要。借助容器和虛擬機(jī),系統(tǒng)能夠更方便地對(duì)計(jì)算平臺(tái)上的業(yè)務(wù)負(fù)載進(jìn)行整合、編排和管理?,F(xiàn)有基于Nomad的邊緣計(jì)算平臺(tái)對(duì)虛擬機(jī)的支持通過qemu命令行作業(yè)很不方便,且只能支持QEMU/KVM類虛擬機(jī)。Libvirt是用于管理虛擬化平臺(tái)的開源

55、庫,在云計(jì)算的解決方案中廣泛使用,它可以用于管理眾多虛擬化技術(shù)。Libvirt虛擬機(jī)運(yùn)行時(shí)的提出目的是方便虛擬機(jī)作業(yè)的運(yùn)行管理且理論上支持Xen、QEMU/KVM、LXC、OpenVZ、VirtualBox、User Mode Linux等類型的虛擬機(jī)接入,當(dāng)前主要以QEMU/KVM類型虛擬機(jī)接入并驗(yàn)證。(3) FaaS函數(shù)運(yùn)行時(shí)FaaS無服務(wù)器架構(gòu)通常構(gòu)建在容器虛擬化之上。FaaS函數(shù)運(yùn)行時(shí)是在邊緣計(jì)算平臺(tái)引入函數(shù)計(jì)算的基礎(chǔ)。FaaS函數(shù)運(yùn)行時(shí)要處理發(fā)布、管理和調(diào)用函數(shù)。物聯(lián)網(wǎng)平臺(tái)和應(yīng)用使用邊緣計(jì)算承載已成為共識(shí),Docker技術(shù)在物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用解決了部署問題,但物聯(lián)網(wǎng)應(yīng)用存在海量接入、碎

56、片化、邊緣化等特點(diǎn),需要邊緣計(jì)算提供新的架構(gòu)和技術(shù)手段來滿足云計(jì)算能力無法滿足物聯(lián)網(wǎng)應(yīng)用發(fā)展的問題。邊緣應(yīng)用業(yè)務(wù)具有事件觸發(fā)特征,且突發(fā)流量和少有訪問通常具有波峰波谷變化。由于邊緣環(huán)境資源受限,當(dāng)應(yīng)用數(shù)據(jù)量大,一臺(tái)邊緣服務(wù)器的處理能力已不能滿足,開發(fā)者在業(yè)務(wù)之外需要考慮面向協(xié)作的資源管理等方式,大大增加了開發(fā)者的工作量。邊緣應(yīng)用通常對(duì)時(shí)延前端敏捷性要求高,追求更高的服務(wù)質(zhì)量體驗(yàn),業(yè)務(wù)需要借助邊緣計(jì)算進(jìn)行實(shí)時(shí)的大數(shù)據(jù)類處理,邊緣AI推理等?;谶吘売?jì)算平臺(tái)的函數(shù)計(jì)算服務(wù)模式更加體現(xiàn)了資源復(fù)用與靈活調(diào)度的核心理念,也符合物聯(lián)網(wǎng)、邊緣應(yīng)用業(yè)務(wù)的特點(diǎn)。函數(shù)計(jì)算是一種Serverless架構(gòu),開發(fā)者不再

57、需要預(yù)配置與管理IT基礎(chǔ)設(shè)施,只需專注于業(yè)務(wù)開發(fā),打包代碼并上傳至承載函數(shù)的邊緣計(jì)算平臺(tái)中,函數(shù)計(jì)算服務(wù)會(huì)根據(jù)運(yùn)行負(fù)載自動(dòng)擴(kuò)縮容。Serverless架構(gòu)可以讓開發(fā)者聚焦業(yè)務(wù),避免重復(fù)造輪子,從復(fù)雜的架構(gòu)和基礎(chǔ)設(shè)施配置中解脫。目前云、邊、端三者的計(jì)算架構(gòu)、開發(fā)模式存在較大差異,彼此協(xié)同提升效率需要新的計(jì)算架構(gòu)創(chuàng)新,而邊緣計(jì)算軟件平臺(tái)采用Cloud Native云原生架構(gòu)是一種必然的選擇?;贜omad的邊緣計(jì)算平臺(tái)缺少FaaS函數(shù)運(yùn)行時(shí),需要引入一套面向函數(shù)的執(zhí)行框架,抽象和為用戶屏蔽函數(shù)以外的執(zhí)行細(xì)節(jié)。1.3 本文主要工作和貢獻(xiàn)從上一節(jié)的敘述可知,現(xiàn)有的基于Nomad的邊緣計(jì)算平臺(tái)不支持虛擬機(jī),服務(wù)模式上也不支持函數(shù)計(jì)算。本文的主要工作就是設(shè)計(jì)和實(shí)現(xiàn)多運(yùn)行時(shí)以支持虛擬機(jī)工作負(fù)載和提供函數(shù)計(jì)算服務(wù),具體就是Libvirt虛擬機(jī)運(yùn)行時(shí)和FaaS函數(shù)運(yùn)行時(shí)。本文的主要工作和貢獻(xiàn)如下。(1)Libvirt虛擬機(jī)運(yùn)行時(shí)的設(shè)計(jì)和實(shí)現(xiàn)。針對(duì)Nomad僅以qemu命令行的方式啟動(dòng)虛擬機(jī),不能做到虛擬機(jī)全生命周期的管理的缺點(diǎn)與不足,提出并以插件的方式實(shí)現(xiàn)了Libvirt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論