基于Nomad的邊緣計算平臺的多運行時支持設計與實現論文設計_第1頁
基于Nomad的邊緣計算平臺的多運行時支持設計與實現論文設計_第2頁
基于Nomad的邊緣計算平臺的多運行時支持設計與實現論文設計_第3頁
基于Nomad的邊緣計算平臺的多運行時支持設計與實現論文設計_第4頁
基于Nomad的邊緣計算平臺的多運行時支持設計與實現論文設計_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、,并在調用前預熱函數,從函數的層面定義編排函數工作流程。由此,基于Nomad的邊緣計算平臺具備虛擬機、容器、函數等多粒度多運行時的支持。此外,Serverless=FaaS+BaaS,單獨的FaaS函數運行時還不能滿足開發(fā)者需要,本文設計了邊緣容器鏡像倉庫方案,提供邊緣端就近地拉取鏡像的一類BaaS。以及整合其他開源項目,在邊緣計算平臺上提供監(jiān)控、告警、自動擴縮容等更多的函數計算服務方案。關鍵詞:邊緣計算,Nomad,多運行時,Libvirt,函數計算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 邊緣計算平臺與函數計算背景與現狀11.1.1 邊緣計算的背景與現狀21.1.2 函數計算的背景與現狀51.1.3

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

15、6第4章 Libvirt虛擬機運行時設計與實現374.1 虛擬機運行時設計目標374.2 Libvirt虛擬機運行時概要設計384.3 Libvirt虛擬機運行時關鍵功能實現434.3.1 驅動配置解析及加載434.3.2 虛擬機生命周期管理444.3.3 虛擬機任務配置454.3.4 虛擬機運行時網絡管理464.4 本章小結48第5章 FaaS函數運行時設計與實現495.1 函數運行時設計目標495.2 FaaS函數運行時概要設計505.3 FaaS函數運行時關鍵功能實現525.3.1 FaaS-Nomad-Provider的實現525.3.2 縮容到零545.3.3 函數預熱565.3.4

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

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

18、24圖2.9 OpenFaaS架構圖25圖2.10 faas-provider示意圖26圖2.11 Provider調用函數26圖3.1 邊緣計算研究內容全場景規(guī)劃29圖3.2 邊緣多集群作業(yè)環(huán)境30圖3.3 邊緣計算管理平臺總體框架圖31圖4.1 NFV ETSI參考框架39圖4.2 基于Nomad的VIM實例化模型40圖4.3 Libvirt虛擬機運行時支持的原理概要圖41圖4.4 Libvirt NAT網絡拓撲結構圖43圖4.5 Libvirt Bridge網絡拓撲結構圖43圖4.6 nomad-driver-libvirt驅動插件配置44圖4.7 nomad-driver-libvir

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

40、創(chuàng)新再次改變了開發(fā)者構建、部署和管理在線應用程序和服務的方式。無服務器Serverless,盡管這可能是一個矛盾的說法,因為仍然在使用服務器進行計算,但這個名稱之所以流行起來,是因為它表明云用戶只是編寫代碼,并將傳統(tǒng)云計算所需的大量服務器系統(tǒng)管理任務委托給云廠商。Serverless和傳統(tǒng)云計算之間的三個基本區(qū)別是:計算與存儲的解耦,它們的規(guī)模獨立,價格獨立;執(zhí)行一段代碼的抽象而不是分配資源來執(zhí)行代碼;為代碼執(zhí)行付費,而不是為分配給執(zhí)行代碼的資源付費。函數計算的發(fā)展歷史。2014年AWS推出Lambda云服務,其提出的函數計算為核心的Serverless架構,得到關注和推廣。其實,谷歌最初的A

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

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

43、s控制和隔離資源限制。與Docker之類的分發(fā)工具相結合,容器使開發(fā)人員能夠輕松地啟動新服務,而無需使用虛擬機緩慢地啟動且有運行時的開銷。對于基于硬件和基于容器的虛擬化來說,服務器是核心概念,它們仍然是Serverful的。云計算的核心理念是資源復用和靈活調度,從物理機發(fā)展到虛擬機再到容器,都是資源粒度不斷細化、管理調度不斷優(yōu)化的過程。云計算發(fā)展出基礎設施即服務(Infrastructure as a Service,IaaS)、平臺即服務(Platform as a Service,PaaS)和軟件即服務(Software as a Service,SaaS)三個層次三種服務模式。長期以來,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論