999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenFaaS的無服務器工作流系統設計

2024-07-03 12:01:50甘凌霄
無線互聯科技 2024年10期

甘凌霄

摘要:無服務器計算以低成本和高靈活性的云計算模式吸引了大量用戶,越來越多的無服務器應用程序開發人員傾向于將復雜的應用程序解耦為松耦合函數的工作流。目前,受廠商鎖定的限制,無服務器工作流框架存在擴展性不強以及不同平臺之間函數應用遷移成本高的問題。文章從減少應用遷移成本和提高系統擴展性角度出發,提出了一個基于OpenFaaS的無服務器工作流系統,旨在方便地擴展不同平臺的無服務器計算框架,實現同時使用不同平臺無服務器函數的功能。

關鍵詞:無服務器計算;工作流;OpenFaaS

中圖分類號:TP311文獻標志碼:A

0 引言

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

目前,無服務器工作流框架存在廠商鎖定、擴展性不強、遷移成本高的問題。不管是主流無服務器計算平臺提供商還是開源無服務器計算框架,都有一套自己的實現方式和架構,在任意一個無服務器計算平臺上構建函數可能意味著很難遷移到另一個平臺,因為代碼可能需要重新編寫,并且存在于一個平臺上的應用程序編程接口(Application Programming Interface,API)可能不存在于另一個平臺上,必須投入額外的人力和資金進行遷移。目前,已知的無服務器工作流系統必須深度綁定某個無服務器計算框架,比如阿里云Server-less工作流必須綁定其函數計算FC,因此,當用戶使用新系統時,需要重新學習一套云廠商自己的軟件開發工具包(Software Development Kit,SDK)。由于未開放擴展,這些平臺不能根據場景靈活地測試和調整工作流應用。

為了減少遷移成本并且高效地執行工作流任務,本文設計了一個可自定義規則且可擴展的無服務器工作流系統,以實現不同平臺函數之間的調用。

1 關鍵技術

1.1 OpenFaaS框架

OpenFaaS是一款無服務器計算框架,為用戶提供無服務器計算平臺。OpenFaaS使用Docker容器簡化無服務器計算函數,使開發人員能夠輕松地將事件驅動函數和微服務部署在私有或公共云環境中。OpenFaaS整體架構如圖1所示,其通過Gateway組件對外提供HTTP服務,當函數調用請求到來時,Gateway驗證后將相應的操作轉發給faas-provider,faas-provider實現了從鏡像倉庫拉取函數鏡像以及對函數的管理等功能。同時,框架里集成了Prometheus及AlertManager等服務用于實現自動擴縮容功能,使用NATSStreaming實現函數異步調用。相較于其他開源的無服務器計算框架,OpenFaaS具有輕量和便于擴展的優點,能夠在公有云或私有云中快速搭建無服務器平臺。因此,本文使用OpenFaaS作為基礎的無服務器計算平臺。

1.2 Otto解析器

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

2 系統設計

工作流系統采用了B/S架構,整體系統部署在Kubernets集群上,同時,也提供了用戶界面用于交互。工作流系統架構如圖2所示,主要由函數運行模塊、工作流管理模塊、資源監控模塊、調度模塊組成。其中,用戶主要在控制臺界面通過可視化操作發送請求給工作流系統的工作流管理模塊。工作流管理模塊主要包括創建和執行工作流,當執行工作流后,命令會發送到調度模塊,調度模塊會按照工作流任務定義來執行工作流任務。資源監控模塊一直監控無服務器計算平臺,記錄每一次工作流中函數執行的資源消耗和時延等數據。

2.1 工作流任務定義

本無服務器工作流系統使用YAML作為工作流的定義語言來對任務進行編排。YAML有著簡潔、可讀性強、數據類型豐富以及支持注釋等優點。在正式的工作流定義中,具體字段及描述如表1所示。

其中,函數集合包含若干個函數對象,其字段及描述如表2所示。函數名稱并未記錄在表中,這是因為此時函數名稱作為對象中的鍵而存在。

在本文實現的工作流系統中,可通過上述工作流和函數字段來編寫工作流任務的YAML定義,工作流系統會將輸入的工作流定義解析并轉化為系統內部的結構體進行存儲。

2.2 函數運行模塊

本文對OpenFaaS進行了二次開發,主要包括修改了函數實例擴縮容的限制以及添加了更多數據指標。OpenFaaS由于社區版功能性不足,不能將函數實例縮為0,且擴縮容指標單一,僅通過Prometheus獲取每個函數的調用次數進行擴縮容。因此,在此基礎上,本文修改了其中的faas-provider組件,添加了可以將函數實例縮為0的功能。同時,增加了函數冷啟動時延、函數當前正在處理的請求、函數請求總數、函數CPU使用量、函數內存使用量的指標,如表3所示。

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

2.3 工作流管理模塊

工作流管理模塊主要包括對工作流的創建、刪除、修改、查詢、驗證、調用等操作。這里主要介紹工作流調用過程中涉及的任務運行時和任務輸入輸出解析功能。

本工作流系統默認的任務執行是調用OpenFaaS函數,這是工作流系統中的一個任務運行時。除了OpenFaaS運行時,還實現了一些內置工作流任務運行時,這些運行時可以極大地方便定義各種復雜的應用程序邏輯,包括循環、分支等,具體內容如下。

(1)openfaas:用于執行OpenFaas函數。

(2)http:用于執行HTTP請求,函數定義中的run字段設置為HTTP的鏈接地址。

(3)condition:用于執行條件分支語句,可包含多個分支,無條件使用默認值。

(4)parallel:用于執行并行語句。只有所有函數并行執行結束,整個語句才會結束。

(5)foreach:用于執行循環語句。只有所有函數并行執行結束,整個語句才會結束。

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

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

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

目前,輸入輸出解析功能主要通過Otto實現,基本表達式如表5所示。其中,使用符號“$”作為數據域的根節點,所有數據的獲取都通過以“$”為首的表達式進行操作,而函數表達式則封裝了這一層,可以通過傳遞參數實現更加自由的數據獲取形式。

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

2.4 調度模塊

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

3 結語

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

參考文獻

[1]車悅遠.無服務器計算[J].計算機與網絡,2022(1):36-37.

[2]秦伊玲.基于無服務器計算的分布式深度學習性能保證研究[D].上海:華東師范大學,2021.

[3]石丁.移動邊緣計算環境下無服務器框架的研究[D].哈爾濱:哈爾濱工業大學,2021.

[4]謝棟,胡洋,秦利.大數據時代無服務器計算在科技情報服務中的應用[J].中華醫學圖書情報雜志,2021(7):39-45.

[5]李成志.基于無服務器計算的工作流調度系統設計與實現[D].南寧:廣西大學,2022.

(編輯 沈 強編輯)

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

主站蜘蛛池模板: 久久久久夜色精品波多野结衣| 国产日本欧美亚洲精品视| 国产精品成人AⅤ在线一二三四 | 亚洲人成日本在线观看| 国产亚洲精品自在线| 成人免费一区二区三区| a级高清毛片| 亚洲欧美在线精品一区二区| 日a本亚洲中文在线观看| 波多野结衣一区二区三区AV| 国产白丝av| 91麻豆国产视频| 91久久偷偷做嫩草影院精品| 国产福利观看| 亚洲色大成网站www国产| 91久久偷偷做嫩草影院免费看 | 亚洲天堂免费在线视频| 亚洲中文字幕久久精品无码一区| 亚洲国产成人麻豆精品| 人妻少妇久久久久久97人妻| 国产va视频| 丁香五月亚洲综合在线| 欧美日韩资源| 国产91全国探花系列在线播放 | 久草视频中文| 亚洲国产日韩在线成人蜜芽| 香蕉视频在线观看www| 国产日韩欧美在线播放| 欧美成一级| 欧美在线导航| 青青操视频免费观看| 精品福利网| 亚洲欧美另类色图| 激情乱人伦| 国产一区成人| 亚洲六月丁香六月婷婷蜜芽| 成人免费午间影院在线观看| 欧美高清三区| 亚洲日韩日本中文在线| 在线视频精品一区| 欧美日韩精品综合在线一区| 国产不卡国语在线| 丁香六月综合网| 日本在线国产| 午夜精品福利影院| 亚洲免费福利视频| 亚洲第一视频网| 综合色区亚洲熟妇在线| 免费观看成人久久网免费观看| 国产综合色在线视频播放线视 | 女人一级毛片| 亚洲狼网站狼狼鲁亚洲下载| 国产在线一二三区| 久久网欧美| 国产青青操| 无码AV动漫| 欧美啪啪精品| 91麻豆精品国产91久久久久| 日韩高清在线观看不卡一区二区| 午夜免费小视频| 超碰91免费人妻| 国产精品真实对白精彩久久| 在线看片中文字幕| 亚洲一区二区三区中文字幕5566| 伦精品一区二区三区视频| 老色鬼欧美精品| 91免费国产高清观看| 国产精品人人做人人爽人人添| 2021国产v亚洲v天堂无码| 国产91久久久久久| 在线视频97| 青青青伊人色综合久久| 色噜噜狠狠色综合网图区| 久无码久无码av无码| 一本久道久综合久久鬼色| 无码在线激情片| 欧美视频二区| 国产一二三区视频| 国产成人综合久久| 国产成年无码AⅤ片在线 | 亚洲国产精品无码久久一线| 国产91视频免费|