• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于OpenFaaS的無(wú)服務(wù)器工作流系統(tǒng)設(shè)計(jì)

      2024-07-03 12:01:50甘凌霄
      無(wú)線互聯(lián)科技 2024年10期
      關(guān)鍵詞:工作流

      甘凌霄

      摘要:無(wú)服務(wù)器計(jì)算以低成本和高靈活性的云計(jì)算模式吸引了大量用戶,越來(lái)越多的無(wú)服務(wù)器應(yīng)用程序開(kāi)發(fā)人員傾向于將復(fù)雜的應(yīng)用程序解耦為松耦合函數(shù)的工作流。目前,受廠商鎖定的限制,無(wú)服務(wù)器工作流框架存在擴(kuò)展性不強(qiáng)以及不同平臺(tái)之間函數(shù)應(yīng)用遷移成本高的問(wèn)題。文章從減少應(yīng)用遷移成本和提高系統(tǒng)擴(kuò)展性角度出發(fā),提出了一個(gè)基于OpenFaaS的無(wú)服務(wù)器工作流系統(tǒng),旨在方便地?cái)U(kuò)展不同平臺(tái)的無(wú)服務(wù)器計(jì)算框架,實(shí)現(xiàn)同時(shí)使用不同平臺(tái)無(wú)服務(wù)器函數(shù)的功能。

      關(guān)鍵詞:無(wú)服務(wù)器計(jì)算;工作流;OpenFaaS

      中圖分類號(hào):TP311文獻(xiàn)標(biāo)志碼:A

      0 引言

      隨著技術(shù)的快速發(fā)展,云計(jì)算已成為一種信息技術(shù)領(lǐng)域的變革范式,徹底改變了計(jì)算資源的供應(yīng)、管理和利用方式。隨著云計(jì)算的發(fā)展,細(xì)粒度更高和資源更高效的無(wú)服務(wù)器計(jì)算(Serverless Computing)模型已逐漸成為支撐未來(lái)信息化系統(tǒng)的云計(jì)算范式[1]。這些無(wú)服務(wù)器計(jì)算平臺(tái)具有可伸縮資源、彈性操作和按量計(jì)費(fèi)的優(yōu)點(diǎn),因此出現(xiàn)了大量用戶向無(wú)服務(wù)器計(jì)算的轉(zhuǎn)移,特別是對(duì)于機(jī)器學(xué)習(xí)[2]、物聯(lián)網(wǎng)[3]、大數(shù)據(jù)等場(chǎng)景的應(yīng)用程序[4]。為了表達(dá)這些應(yīng)用程序復(fù)雜的任務(wù)執(zhí)行邏輯,一般將這些松耦合函數(shù)以無(wú)服務(wù)器工作流(Serverless Work-flow)的形式進(jìn)行組織和部署[5]

      目前,無(wú)服務(wù)器工作流框架存在廠商鎖定、擴(kuò)展性不強(qiáng)、遷移成本高的問(wèn)題。不管是主流無(wú)服務(wù)器計(jì)算平臺(tái)提供商還是開(kāi)源無(wú)服務(wù)器計(jì)算框架,都有一套自己的實(shí)現(xiàn)方式和架構(gòu),在任意一個(gè)無(wú)服務(wù)器計(jì)算平臺(tái)上構(gòu)建函數(shù)可能意味著很難遷移到另一個(gè)平臺(tái),因?yàn)榇a可能需要重新編寫(xiě),并且存在于一個(gè)平臺(tái)上的應(yīng)用程序編程接口(Application Programming Interface,API)可能不存在于另一個(gè)平臺(tái)上,必須投入額外的人力和資金進(jìn)行遷移。目前,已知的無(wú)服務(wù)器工作流系統(tǒng)必須深度綁定某個(gè)無(wú)服務(wù)器計(jì)算框架,比如阿里云Server-less工作流必須綁定其函數(shù)計(jì)算FC,因此,當(dāng)用戶使用新系統(tǒng)時(shí),需要重新學(xué)習(xí)一套云廠商自己的軟件開(kāi)發(fā)工具包(Software Development Kit,SDK)。由于未開(kāi)放擴(kuò)展,這些平臺(tái)不能根據(jù)場(chǎng)景靈活地測(cè)試和調(diào)整工作流應(yīng)用。

      為了減少遷移成本并且高效地執(zhí)行工作流任務(wù),本文設(shè)計(jì)了一個(gè)可自定義規(guī)則且可擴(kuò)展的無(wú)服務(wù)器工作流系統(tǒng),以實(shí)現(xiàn)不同平臺(tái)函數(shù)之間的調(diào)用。

      1 關(guān)鍵技術(shù)

      1.1 OpenFaaS框架

      OpenFaaS是一款無(wú)服務(wù)器計(jì)算框架,為用戶提供無(wú)服務(wù)器計(jì)算平臺(tái)。OpenFaaS使用Docker容器簡(jiǎn)化無(wú)服務(wù)器計(jì)算函數(shù),使開(kāi)發(fā)人員能夠輕松地將事件驅(qū)動(dòng)函數(shù)和微服務(wù)部署在私有或公共云環(huán)境中。OpenFaaS整體架構(gòu)如圖1所示,其通過(guò)Gateway組件對(duì)外提供HTTP服務(wù),當(dāng)函數(shù)調(diào)用請(qǐng)求到來(lái)時(shí),Gateway驗(yàn)證后將相應(yīng)的操作轉(zhuǎn)發(fā)給faas-provider,faas-provider實(shí)現(xiàn)了從鏡像倉(cāng)庫(kù)拉取函數(shù)鏡像以及對(duì)函數(shù)的管理等功能。同時(shí),框架里集成了Prometheus及AlertManager等服務(wù)用于實(shí)現(xiàn)自動(dòng)擴(kuò)縮容功能,使用NATSStreaming實(shí)現(xiàn)函數(shù)異步調(diào)用。相較于其他開(kāi)源的無(wú)服務(wù)器計(jì)算框架,OpenFaaS具有輕量和便于擴(kuò)展的優(yōu)點(diǎn),能夠在公有云或私有云中快速搭建無(wú)服務(wù)器平臺(tái)。因此,本文使用OpenFaaS作為基礎(chǔ)的無(wú)服務(wù)器計(jì)算平臺(tái)。

      1.2 Otto解析器

      Otto是JavaScript解析器和解釋器,本文使用Otto作為工作流中函數(shù)之間參數(shù)的解析引擎。無(wú)服務(wù)器工作流執(zhí)行鏈上前后相連的函數(shù)一般都有輸入、輸出依賴,即后一個(gè)函數(shù)的輸入依賴前一個(gè)函數(shù)的輸出。在大多數(shù)情況下,前一個(gè)函數(shù)的所有輸出都作為后一個(gè)函數(shù)的輸入數(shù)據(jù),但也存在后一個(gè)函數(shù)只取前一個(gè)函數(shù)輸出數(shù)據(jù)里面某個(gè)字段或者需要對(duì)輸出數(shù)據(jù)的某個(gè)字段進(jìn)行判斷的情況,比如執(zhí)行分支判斷操作。因此,工作流系統(tǒng)需要實(shí)現(xiàn)輸入輸出解析功能,通過(guò)Otto解釋器,系統(tǒng)可以將整個(gè)工作流數(shù)據(jù)作為一個(gè)JavaScript對(duì)象,結(jié)合JsonPath取出對(duì)象中的數(shù)據(jù),再進(jìn)一步計(jì)算表達(dá)式。

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

      工作流系統(tǒng)采用了B/S架構(gòu),整體系統(tǒng)部署在Kubernets集群上,同時(shí),也提供了用戶界面用于交互。工作流系統(tǒng)架構(gòu)如圖2所示,主要由函數(shù)運(yùn)行模塊、工作流管理模塊、資源監(jiān)控模塊、調(diào)度模塊組成。其中,用戶主要在控制臺(tái)界面通過(guò)可視化操作發(fā)送請(qǐng)求給工作流系統(tǒng)的工作流管理模塊。工作流管理模塊主要包括創(chuàng)建和執(zhí)行工作流,當(dāng)執(zhí)行工作流后,命令會(huì)發(fā)送到調(diào)度模塊,調(diào)度模塊會(huì)按照工作流任務(wù)定義來(lái)執(zhí)行工作流任務(wù)。資源監(jiān)控模塊一直監(jiān)控?zé)o服務(wù)器計(jì)算平臺(tái),記錄每一次工作流中函數(shù)執(zhí)行的資源消耗和時(shí)延等數(shù)據(jù)。

      2.1 工作流任務(wù)定義

      本無(wú)服務(wù)器工作流系統(tǒng)使用YAML作為工作流的定義語(yǔ)言來(lái)對(duì)任務(wù)進(jìn)行編排。YAML有著簡(jiǎn)潔、可讀性強(qiáng)、數(shù)據(jù)類型豐富以及支持注釋等優(yōu)點(diǎn)。在正式的工作流定義中,具體字段及描述如表1所示。

      其中,函數(shù)集合包含若干個(gè)函數(shù)對(duì)象,其字段及描述如表2所示。函數(shù)名稱并未記錄在表中,這是因?yàn)榇藭r(shí)函數(shù)名稱作為對(duì)象中的鍵而存在。

      在本文實(shí)現(xiàn)的工作流系統(tǒng)中,可通過(guò)上述工作流和函數(shù)字段來(lái)編寫(xiě)工作流任務(wù)的YAML定義,工作流系統(tǒng)會(huì)將輸入的工作流定義解析并轉(zhuǎn)化為系統(tǒng)內(nèi)部的結(jié)構(gòu)體進(jìn)行存儲(chǔ)。

      2.2 函數(shù)運(yùn)行模塊

      本文對(duì)OpenFaaS進(jìn)行了二次開(kāi)發(fā),主要包括修改了函數(shù)實(shí)例擴(kuò)縮容的限制以及添加了更多數(shù)據(jù)指標(biāo)。OpenFaaS由于社區(qū)版功能性不足,不能將函數(shù)實(shí)例縮為0,且擴(kuò)縮容指標(biāo)單一,僅通過(guò)Prometheus獲取每個(gè)函數(shù)的調(diào)用次數(shù)進(jìn)行擴(kuò)縮容。因此,在此基礎(chǔ)上,本文修改了其中的faas-provider組件,添加了可以將函數(shù)實(shí)例縮為0的功能。同時(shí),增加了函數(shù)冷啟動(dòng)時(shí)延、函數(shù)當(dāng)前正在處理的請(qǐng)求、函數(shù)請(qǐng)求總數(shù)、函數(shù)CPU使用量、函數(shù)內(nèi)存使用量的指標(biāo),如表3所示。

      此外,本文在OpenFaaS函數(shù)使用的Watchdog上進(jìn)行了功能增強(qiáng),利用cgroups獲取每一次函數(shù)執(zhí)行時(shí)的CPU和內(nèi)存使用量。cgroups是Linux內(nèi)核的一種資源隔離技術(shù),用來(lái)限制、控制與分離一個(gè)進(jìn)程組的資源如CPU、內(nèi)存等。Kubernets使用cgroups來(lái)管理Pod和容器使用的資源,其中cgroups主要子系統(tǒng)和作用如表4所示。由于當(dāng)Kubernets動(dòng)態(tài)修改函數(shù)Pod的資源配額時(shí),需要重啟函數(shù)Pod讓配置生效,這導(dǎo)致在調(diào)度過(guò)程中不能靈活地對(duì)資源進(jìn)行調(diào)整。本文通過(guò)獲取cpuacct子系統(tǒng)的cpuacct.usage和memory子系統(tǒng)的memory.usage__in__bytes數(shù)據(jù)來(lái)獲取當(dāng)前函數(shù)執(zhí)行所消耗的CPU和內(nèi)存資源量,通過(guò)修改CPU子系統(tǒng)里的cpu.cfs__quota__us和memory子系統(tǒng)里的memory.limit_in__bytes來(lái)限制CPU和內(nèi)存使用量。

      2.3 工作流管理模塊

      工作流管理模塊主要包括對(duì)工作流的創(chuàng)建、刪除、修改、查詢、驗(yàn)證、調(diào)用等操作。這里主要介紹工作流調(diào)用過(guò)程中涉及的任務(wù)運(yùn)行時(shí)和任務(wù)輸入輸出解析功能。

      本工作流系統(tǒng)默認(rèn)的任務(wù)執(zhí)行是調(diào)用OpenFaaS函數(shù),這是工作流系統(tǒng)中的一個(gè)任務(wù)運(yùn)行時(shí)。除了OpenFaaS運(yùn)行時(shí),還實(shí)現(xiàn)了一些內(nèi)置工作流任務(wù)運(yùn)行時(shí),這些運(yùn)行時(shí)可以極大地方便定義各種復(fù)雜的應(yīng)用程序邏輯,包括循環(huán)、分支等,具體內(nèi)容如下。

      (1)openfaas:用于執(zhí)行OpenFaas函數(shù)。

      (2)http:用于執(zhí)行HTTP請(qǐng)求,函數(shù)定義中的run字段設(shè)置為HTTP的鏈接地址。

      (3)condition:用于執(zhí)行條件分支語(yǔ)句,可包含多個(gè)分支,無(wú)條件使用默認(rèn)值。

      (4)parallel:用于執(zhí)行并行語(yǔ)句。只有所有函數(shù)并行執(zhí)行結(jié)束,整個(gè)語(yǔ)句才會(huì)結(jié)束。

      (5)foreach:用于執(zhí)行循環(huán)語(yǔ)句。只有所有函數(shù)并行執(zhí)行結(jié)束,整個(gè)語(yǔ)句才會(huì)結(jié)束。

      (6)sleep:用于任務(wù)休眠操作。

      (7)print:用于直接打印數(shù)據(jù)。

      (8)compose:用于將多條數(shù)據(jù)合并為一條數(shù)據(jù)。

      目前,輸入輸出解析功能主要通過(guò)Otto實(shí)現(xiàn),基本表達(dá)式如表5所示。其中,使用符號(hào)“$”作為數(shù)據(jù)域的根節(jié)點(diǎn),所有數(shù)據(jù)的獲取都通過(guò)以“$”為首的表達(dá)式進(jìn)行操作,而函數(shù)表達(dá)式則封裝了這一層,可以通過(guò)傳遞參數(shù)實(shí)現(xiàn)更加自由的數(shù)據(jù)獲取形式。

      通過(guò)函數(shù)運(yùn)行時(shí),本文實(shí)現(xiàn)的無(wú)服務(wù)器工作流不僅可以執(zhí)行不同的函數(shù)任務(wù),還可以利用其他平臺(tái)的無(wú)服務(wù)器計(jì)算函數(shù)。此外,系統(tǒng)中內(nèi)置了函數(shù)運(yùn)行時(shí)接口,只要實(shí)現(xiàn)該接口,就可以在系統(tǒng)中實(shí)現(xiàn)和OpenFaaS函數(shù)運(yùn)行時(shí)相同的功能,達(dá)到細(xì)粒度更高的控制(預(yù)熱和關(guān)閉函數(shù))。而輸入輸出解析功能則可以將各種數(shù)據(jù)進(jìn)行解析以利于后續(xù)功能的實(shí)現(xiàn),方便不同平臺(tái)之間的數(shù)據(jù)傳輸。

      2.4 調(diào)度模塊

      調(diào)度模塊主要對(duì)當(dāng)前提交的所有工作流任務(wù)進(jìn)行調(diào)度,同時(shí),調(diào)度每個(gè)任務(wù)中需要執(zhí)行的函數(shù)。對(duì)于每個(gè)工作流的調(diào)用請(qǐng)求,調(diào)度器會(huì)將工作流中所有的函數(shù)根據(jù)依賴關(guān)系組織為有向無(wú)環(huán)圖(Directed Acyclic Graph,DAG),按照函數(shù)歷史資源使用數(shù)據(jù),依次為DAG中的函數(shù)分配資源,這一步需要通過(guò)資源監(jiān)控模塊獲取集群的資源數(shù)據(jù)從而進(jìn)行決策判斷,一般取調(diào)用歷史的平均值,也可以通過(guò)配置文件為函數(shù)進(jìn)行配置。隨后,每一次調(diào)度都會(huì)重新將未執(zhí)行的函數(shù)組織為DAG結(jié)構(gòu),提交運(yùn)行圖中根節(jié)點(diǎn)所代表的函數(shù),其中根節(jié)點(diǎn)可以為多個(gè),這代表函數(shù)是并行的。本文測(cè)試調(diào)用了一個(gè)工作流任務(wù),包含3個(gè)函數(shù)(fibonacci、linpack、gzipCompression)。用戶可以在控制臺(tái)方便地查看每一次調(diào)用的信息。工作流執(zhí)行結(jié)果如圖3所示,其中,前兩者為OpenFaaS函數(shù),后者為HTTP調(diào)用,具體的執(zhí)行函數(shù)實(shí)體為Knative框架里的函數(shù),這表明工作流系統(tǒng)可以同時(shí)調(diào)用OpenFaaS和Knative框架的函數(shù)。

      3 結(jié)語(yǔ)

      本文設(shè)計(jì)并實(shí)現(xiàn)了一套簡(jiǎn)潔易用的無(wú)服務(wù)器工作流系統(tǒng),對(duì)其中一些技術(shù)(如OpenFaaS框架)進(jìn)行了深度定制化改進(jìn),提高了系統(tǒng)性能,實(shí)現(xiàn)了與Kubernetes生態(tài)系統(tǒng)的整合,確保了系統(tǒng)的高擴(kuò)展性。本文設(shè)計(jì)的系統(tǒng)實(shí)現(xiàn)了多種函數(shù)運(yùn)行時(shí)以豐富工作流的編排能力,同時(shí),提供了接口用于擴(kuò)展自定義函數(shù),利用開(kāi)源的無(wú)服務(wù)器計(jì)算框架實(shí)現(xiàn)了不同平臺(tái)的無(wú)服務(wù)器計(jì)算框架功能。此外,工作流還配備了一個(gè)直觀的可視化界面,便于用戶交互。所設(shè)計(jì)的系統(tǒng)具有很高的實(shí)際應(yīng)用價(jià)值。

      參考文獻(xiàn)

      [1]車悅遠(yuǎn).無(wú)服務(wù)器計(jì)算[J].計(jì)算機(jī)與網(wǎng)絡(luò),2022(1):36-37.

      [2]秦伊玲.基于無(wú)服務(wù)器計(jì)算的分布式深度學(xué)習(xí)性能保證研究[D].上海:華東師范大學(xué),2021.

      [3]石丁.移動(dòng)邊緣計(jì)算環(huán)境下無(wú)服務(wù)器框架的研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2021.

      [4]謝棟,胡洋,秦利.大數(shù)據(jù)時(shí)代無(wú)服務(wù)器計(jì)算在科技情報(bào)服務(wù)中的應(yīng)用[J].中華醫(yī)學(xué)圖書(shū)情報(bào)雜志,2021(7):39-45.

      [5]李成志.基于無(wú)服務(wù)器計(jì)算的工作流調(diào)度系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].南寧:廣西大學(xué),2022.

      (編輯 沈 強(qiáng)編輯)

      Design of serverless workflow system based on OpenFaaS

      Gan? Lingxiao

      (Institute of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 210000, China)

      Abstract: Serverless computing, with its low cost and high flexibility, has attracted a significant number of users, leading to an increasing number of serverless application developers favoring the decomposition of complex applications into loosely coupled function-based workflows. Currently, serverless workflow frameworks suffer from limited extensibility and high migration costs between different platforms due to vendor lock-in. This paper proposes a serverless workflow system based on OpenFaaS, aiming at reducing application migration costs and enhancing system scalability. It facilitates the extension of serverless computing frameworks across different platforms, enabling the concurrent utilization of serverless functions from various platforms.

      Key words: serverless computing; workflow; OpenFaaS

      猜你喜歡
      工作流
      支持節(jié)點(diǎn)協(xié)同的工作流模型構(gòu)建方法研究
      基于工作流2.0的智慧教室設(shè)計(jì)與研究
      工作流在電力生產(chǎn)管理信息系統(tǒng)中的設(shè)計(jì)和應(yīng)用
      “奔向共贏、做到最好”行業(yè)信息化研究方法論
      個(gè)性化計(jì)算機(jī)輔助教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      商情(2016年39期)2016-11-21 09:57:19
      工作流技術(shù)在醫(yī)療信息整合工程中的應(yīng)用分析
      基于工作流的水運(yùn)應(yīng)急信息管理平臺(tái)設(shè)計(jì) 
      辦公自動(dòng)化系統(tǒng)中公文管理模塊的設(shè)計(jì)和實(shí)現(xiàn)
      基于J2EE的電子政務(wù)系統(tǒng)研究與應(yīng)用
      考試周刊(2016年71期)2016-09-20 18:20:53
      基于J2EE的電子政務(wù)系統(tǒng)研究與應(yīng)用
      考試周刊(2016年71期)2016-09-20 18:20:52
      阿图什市| 石城县| 昭平县| 连云港市| 图木舒克市| 准格尔旗| 石狮市| 蛟河市| 广州市| 宁化县| 江油市| 吴川市| 加查县| 东宁县| 海口市| 星座| 务川| 微山县| 江都市| 香港 | 淅川县| 南雄市| 霍城县| 隆化县| 太和县| 鞍山市| 宁远县| 治县。| 石首市| 阜平县| 河北区| 雅安市| 玉山县| 巴彦县| 保靖县| 防城港市| 家居| 清流县| 竹山县| 宁国市| 惠水县|