本發(fā)明涉及一種云計(jì)算,具體涉及服務(wù)器無感知計(jì)算場(chǎng)景下的函數(shù)運(yùn)行時(shí)。
背景技術(shù):
1、近幾年來,由于具備對(duì)資源和編程的高度抽象、按需使用計(jì)費(fèi)以及動(dòng)態(tài)擴(kuò)容等優(yōu)勢(shì),服務(wù)器無感知計(jì)算成為日益流行的云計(jì)算開發(fā)范式。與傳統(tǒng)的云計(jì)算服務(wù)類似,當(dāng)前的服務(wù)器無感知計(jì)算平臺(tái)也必須確保不同租戶的工作負(fù)載之間的隔離。當(dāng)前的主流方案是基于虛擬機(jī)和容器對(duì)函數(shù)進(jìn)行封裝,再利用如openfaas的框架進(jìn)行工作流編排。例如公布號(hào)為cn114691299a的現(xiàn)有發(fā)明專利申請(qǐng)文獻(xiàn)《一種基于serverless的邊緣計(jì)算資源管理系統(tǒng)》,該現(xiàn)有方法包括:center?serverless用于管理serverless應(yīng)用和觸發(fā)器,在中心節(jié)點(diǎn)創(chuàng)建并執(zhí)行serverless應(yīng)用;edge?serverless用于在邊緣側(cè)執(zhí)行serverless應(yīng)用,并監(jiān)聽節(jié)點(diǎn)資源狀況,當(dāng)資源不足時(shí)將請(qǐng)求轉(zhuǎn)到中心節(jié)點(diǎn);邊緣事件觸發(fā)器用于獲取邊緣事件,到達(dá)觸發(fā)條件后將事件信息發(fā)送到消息隊(duì)列中;kata?container安全容器用于對(duì)用戶應(yīng)用進(jìn)行強(qiáng)隔離,使各用戶應(yīng)用在運(yùn)行時(shí)互不干擾;多架構(gòu)runtime環(huán)境,在不同架構(gòu)runtime運(yùn)行時(shí)自動(dòng)選擇匹配的架構(gòu),在用戶層實(shí)現(xiàn)架構(gòu)無感知。以及公布號(hào)為cn114385362a的現(xiàn)有發(fā)明專利申請(qǐng)文獻(xiàn)《一種基于云-邊計(jì)算的多搬運(yùn)機(jī)器人調(diào)度方法》,該現(xiàn)有方法包括:各機(jī)器人通過無線通信技術(shù)連接至邊緣計(jì)算服務(wù)器,邊緣計(jì)算服務(wù)器請(qǐng)求云計(jì)算服務(wù)器;邊緣計(jì)算服務(wù)器將多搬運(yùn)機(jī)器人任務(wù)調(diào)度問題實(shí)例化為著色旅行商問題模型,并使用http服務(wù)請(qǐng)求云計(jì)算服務(wù)器的著色旅行商問題求解服務(wù),該服務(wù)在云計(jì)算服務(wù)器采用容器來封裝;云計(jì)算服務(wù)器收到調(diào)度請(qǐng)求后執(zhí)行并行著色旅行商問題求解算法,將多機(jī)器人任務(wù)調(diào)度結(jié)果通過http協(xié)議發(fā)送至邊緣計(jì)算服務(wù)器;邊緣計(jì)算服務(wù)器收到多機(jī)器人任務(wù)調(diào)度結(jié)果之后,執(zhí)行多機(jī)器人路徑規(guī)劃算法并將得到的最短路徑發(fā)送至各機(jī)器人。然而,前述現(xiàn)有部署架構(gòu)形成了需要跨越多個(gè)不同的特權(quán)級(jí)和地址空間的低效、過重的函數(shù)軟件棧,進(jìn)而導(dǎo)致降低函數(shù)的執(zhí)行效率。包括外部函數(shù)調(diào)用事件所觸發(fā)的冷啟動(dòng)事件或是工作流中間數(shù)據(jù)傳遞所導(dǎo)致的內(nèi)部通信事件,都會(huì)被這種軟件棧中的虛擬化層所放大,最終累積到用戶負(fù)載的端到端時(shí)延。由于函數(shù)通常具有短生命周期特點(diǎn),這些開銷是不可忽略的。例如,安全容器gvisor或微虛擬機(jī)firecracker的冷啟動(dòng)時(shí)間至少需要100ms,超過了華為云所公布數(shù)據(jù)中75%的函數(shù)的執(zhí)行時(shí)間。除此之外,google公司的一份報(bào)告中稱,服務(wù)間數(shù)據(jù)傳遞所產(chǎn)生開銷占據(jù)數(shù)據(jù)中心內(nèi)25%的cpu周期。因此,如何解決當(dāng)前平臺(tái)函數(shù)運(yùn)行時(shí)底座的冷啟動(dòng)和數(shù)據(jù)傳遞開銷過高的問題,是服務(wù)器無感知計(jì)算領(lǐng)域的一個(gè)重要挑戰(zhàn)。
2、現(xiàn)有部分工作嘗試從兩個(gè)方面分別緩解上述開銷:(1)線程級(jí)函數(shù)抽象,指利用進(jìn)程內(nèi)的線程運(yùn)行工作流中的不同函數(shù),并通過線程的函數(shù)調(diào)用傳遞中間數(shù)據(jù),代替進(jìn)程間通信。(2)輕量操作系統(tǒng),將用戶函數(shù)代碼和其所依賴的操作系統(tǒng)服務(wù)部署在相同的特權(quán)級(jí)的方法。如在unikernel的架構(gòu)中,庫(kù)操作系統(tǒng)取代虛擬機(jī)中的linux內(nèi)核,可以以函數(shù)調(diào)用代替系統(tǒng)調(diào)用,從而加速程序的運(yùn)行速度。然而,上述的方案仍然無法完全消除用戶函數(shù)、虛擬化層和操作系統(tǒng)模塊之間的特權(quán)級(jí)障礙,必須通過上下文切換才能實(shí)現(xiàn)這些組件之間的交互。
3、綜上,現(xiàn)有技術(shù)存在隔離環(huán)境冷啟動(dòng)慢、中間數(shù)據(jù)傳遞性能較差、冷啟動(dòng)范圍大成本高以及內(nèi)存隔離與共享靈活性差的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明所要解決的技術(shù)問題在于:如何解決現(xiàn)有技術(shù)中隔離環(huán)境冷啟動(dòng)慢、中間數(shù)據(jù)傳遞性能較差、冷啟動(dòng)范圍大成本高以及內(nèi)存隔離與共享靈活性差的技術(shù)問題。
2、本發(fā)明是采用以下技術(shù)方案解決上述技術(shù)問題的:面向服務(wù)器無感知計(jì)算場(chǎng)景的輕量化函數(shù)運(yùn)行方法包括:
3、s1、面向服務(wù)器無感知計(jì)算場(chǎng)景,設(shè)置輕量化函數(shù)運(yùn)行時(shí),獲取軟件棧結(jié)構(gòu),利用輕量化函數(shù)運(yùn)行方法,將軟件棧結(jié)構(gòu)的所有組件聚合于相同的cpu特權(quán)級(jí)和地址空間,以得到冷啟動(dòng)及中間數(shù)據(jù)傳遞通信原語(yǔ),其中,設(shè)置標(biāo)準(zhǔn)庫(kù)層ms_std、內(nèi)核功能層mslibos以及全局運(yùn)行時(shí)層msvisor;
4、s2、將輕量化函數(shù),以及輕量化函數(shù)依賴的底層運(yùn)行時(shí),部署至相同的cpu特權(quán)級(jí)、地址空間,供冷啟動(dòng)操作;
5、s3、利用預(yù)置工作流粒度庫(kù)操作系統(tǒng),為輕量化函數(shù)提供底層運(yùn)行時(shí)的對(duì)應(yīng)服務(wù),利用內(nèi)存安全語(yǔ)言進(jìn)行內(nèi)存隔離操作與共享操作,基于軟件故障隔離sfi,獲取威脅模型,利用safe?rust語(yǔ)言,為租戶提供互相隔離函數(shù)執(zhí)行環(huán)境,從預(yù)置云平臺(tái)是可信變異環(huán)境,獲取可執(zhí)行文件鏡像;
6、s4、針對(duì)庫(kù)操作系統(tǒng),引入按需加載機(jī)制,在運(yùn)行期間動(dòng)態(tài)綁定庫(kù)操作系統(tǒng)調(diào)用的處理函數(shù),設(shè)計(jì)函數(shù)層、工作流層,根據(jù)可執(zhí)行文件鏡像進(jìn)行函數(shù)綁定操作。
7、本發(fā)明提出了一種面向服務(wù)器無感知計(jì)算場(chǎng)景的輕量化函數(shù)運(yùn)行時(shí),提供隔離環(huán)境的快速冷啟動(dòng)和高性能中間數(shù)據(jù)傳遞的通信原語(yǔ)。
8、本發(fā)明利用工作流粒度的庫(kù)操作系統(tǒng)為函數(shù)提供底層運(yùn)行時(shí)服務(wù),同時(shí)利用內(nèi)存安全語(yǔ)言提供靈活的內(nèi)存隔離與共享。為了進(jìn)一步緩解冷啟動(dòng)開銷,本發(fā)明為庫(kù)操作系統(tǒng)實(shí)現(xiàn)了按需加載機(jī)制。
9、在更具體的技術(shù)方案中,s1包括:
10、s11、利用標(biāo)準(zhǔn)庫(kù)層ms_std生成并提供編程接口層,以將攔截系統(tǒng)調(diào)用請(qǐng)求發(fā)送至庫(kù)操作系統(tǒng);
11、s12、利用內(nèi)核功能層mslibos,對(duì)每個(gè)函數(shù)工作流,分配庫(kù)操作系統(tǒng)的實(shí)例,對(duì)庫(kù)操作系統(tǒng)進(jìn)行模塊化設(shè)計(jì),得到庫(kù)操作系統(tǒng)模塊,供標(biāo)準(zhǔn)庫(kù)層ms_std調(diào)用;
12、s13、利用全局運(yùn)行時(shí)層msvisor,監(jiān)聽外部調(diào)用事件,根據(jù)工作流配置文件進(jìn)行實(shí)例化指定,得到用戶函數(shù),在工作流運(yùn)行期間,跟蹤獲取關(guān)聯(lián)主機(jī)資源。
13、在更具體的技術(shù)方案中,s1中的輕量化函數(shù)運(yùn)行方法包括:
14、s11’、獲取并根據(jù)全局運(yùn)行時(shí),對(duì)工作流與預(yù)置http端點(diǎn)進(jìn)行綁定操作,并對(duì)外暴露;
15、s12’、在外部處理器收到工作流調(diào)用事件時(shí),將全局運(yùn)行時(shí)設(shè)置為當(dāng)前的工作流實(shí)例化對(duì)應(yīng)的隔離域;
16、s13’、派生新線程并跳轉(zhuǎn)至用戶函數(shù)的入口點(diǎn),持續(xù)運(yùn)行直至用戶函數(shù)調(diào)用尚未初始化的庫(kù)操作系統(tǒng)模塊的系統(tǒng)調(diào)用接口;
17、s14’、利用用戶函數(shù)的標(biāo)準(zhǔn)庫(kù),通過預(yù)置接口通知全局運(yùn)行時(shí),以進(jìn)行按需加載,并獲取系統(tǒng)調(diào)用接口alloc_buffer()的函數(shù)地址,以向用戶函數(shù)分配緩沖區(qū),傳遞中間數(shù)據(jù);
18、s15’、使下一個(gè)用戶函數(shù)執(zhí)行s11’至s14’,直至調(diào)用acquire_buffer(),以獲取緩沖區(qū)引用,對(duì)中間數(shù)據(jù)進(jìn)行實(shí)現(xiàn)零拷貝讀取操作。
19、相比于現(xiàn)有技術(shù),本發(fā)明提出的運(yùn)行時(shí)是一種專為服務(wù)器無感知函數(shù)計(jì)算的工作流場(chǎng)景提出的新型軟件棧架構(gòu)。通過將函數(shù)函數(shù)和其所依賴的底層運(yùn)行時(shí)全部部署于相同的cpu特權(quán)級(jí)和地址空間來縮小冷啟動(dòng)范圍和避免昂貴的數(shù)據(jù)拷貝。
20、在更具體的技術(shù)方案中,s12’中,對(duì)工作流實(shí)例進(jìn)行抽象操作,以得到隔離域,根據(jù)隔離域關(guān)聯(lián)運(yùn)行當(dāng)前工作流所需的所有實(shí)體,其中,實(shí)體包括:用戶函數(shù)、庫(kù)操作系統(tǒng)、內(nèi)存分區(qū)以及其余系統(tǒng)資源。
21、在更具體的技術(shù)方案中,根據(jù)單節(jié)點(diǎn)同時(shí)運(yùn)行工作流實(shí)例數(shù)量,工作流持有庫(kù)操作系統(tǒng)實(shí)例以及用戶函數(shù),構(gòu)建隔離域。
22、在更具體的技術(shù)方案中,在隔離域中,根據(jù)用戶源代碼確定用戶函數(shù),獲取云服務(wù)商的組件數(shù)據(jù),利用rust語(yǔ)言提供軟件故障隔離sfi,以控制隔離域。
23、在更具體的技術(shù)方案中,s3中,在可信編譯環(huán)境中,設(shè)置rust編譯工具鏈,rust編譯工具鏈包括:core庫(kù);設(shè)置用戶上傳數(shù)據(jù)約束條件;去除用戶函數(shù)的代碼中的unsafe代碼塊。
24、在更具體的技術(shù)方案中,s4中,利用函數(shù)層,跟蹤單個(gè)函數(shù)實(shí)例已綁定庫(kù)操作系統(tǒng)的接口,在函數(shù)實(shí)例調(diào)用內(nèi)核服務(wù)時(shí),在safe?rust的約束下,經(jīng)過標(biāo)準(zhǔn)庫(kù)層的接口,標(biāo)準(zhǔn)庫(kù)層檢查自身內(nèi)部是否已注冊(cè)下游模塊的函數(shù)地址條目,若否,則進(jìn)入工作流層。
25、相比現(xiàn)有技術(shù),本發(fā)明可以將服務(wù)器無感知計(jì)算函數(shù)的冷啟動(dòng)時(shí)間縮短至1ms左右,利用中間數(shù)據(jù)傳遞專用的通信原語(yǔ)可實(shí)現(xiàn)同節(jié)點(diǎn)上下游函數(shù)同步切換的延遲僅需約35μs。對(duì)于輸入數(shù)據(jù)100mb的并行排序計(jì)算任務(wù),本發(fā)明可在同節(jié)點(diǎn)下,將整體端到端運(yùn)行時(shí)間降低90%。
26、在更具體的技術(shù)方案中,s4中,利用工作流層,保存當(dāng)前工作流中,所有已加載的庫(kù)操作系統(tǒng)模塊;標(biāo)準(zhǔn)庫(kù)層ms_std通過調(diào)用特定接口,退出到全局運(yùn)行時(shí)層msvisor;利用全局運(yùn)行時(shí)層msvisor判斷待調(diào)用接口與庫(kù)操作系統(tǒng)模塊的歸屬關(guān)系,以查看庫(kù)操作系統(tǒng)模塊是否存在于隔離域中;若是,則從庫(kù)操作系同模塊的函數(shù)實(shí)例中檢索函數(shù)地址,若否,則從可執(zhí)行文件鏡像中實(shí)例化可操作系統(tǒng)模塊。
27、在更具體的技術(shù)方案中,面向服務(wù)器無感知計(jì)算場(chǎng)景的輕量化函數(shù)運(yùn)行系統(tǒng)包括:
28、傳遞通信原語(yǔ)獲取模塊,用以面向服務(wù)器無感知計(jì)算場(chǎng)景,設(shè)置輕量化函數(shù)運(yùn)行時(shí),獲取軟件棧結(jié)構(gòu),利用輕量化函數(shù)運(yùn)行方法,將軟件棧結(jié)構(gòu)的所有組件聚合于相同的cpu特權(quán)級(jí)和地址空間,以得到冷啟動(dòng)及中間數(shù)據(jù)傳遞通信原語(yǔ),其中,設(shè)置標(biāo)準(zhǔn)庫(kù)層ms_std、內(nèi)核功能層mslibos以及全局運(yùn)行時(shí)層msvisor;
29、輕量化函數(shù)及底層運(yùn)行時(shí)部署模塊,用以將輕量化函數(shù),以及輕量化函數(shù)依賴的底層運(yùn)行時(shí),部署至相同的cpu特權(quán)級(jí)、地址空間,供冷啟動(dòng)操作;
30、隔離函數(shù)執(zhí)行環(huán)境設(shè)置模塊,用以利用預(yù)置工作流粒度庫(kù)操作系統(tǒng),為輕量化函數(shù)提供底層運(yùn)行時(shí)的對(duì)應(yīng)服務(wù),利用內(nèi)存安全語(yǔ)言進(jìn)行內(nèi)存隔離操作與共享操作,基于軟件故障隔離sfi,獲取威脅模型,利用safe?rust語(yǔ)言,為租戶提供互相隔離函數(shù)執(zhí)行環(huán)境,從預(yù)置云平臺(tái)是可信變異環(huán)境,獲取可執(zhí)行文件鏡像,隔離函數(shù)執(zhí)行環(huán)境設(shè)置模塊與輕量化函數(shù)及底層運(yùn)行時(shí)部署模塊及傳遞通信原語(yǔ)獲取模塊連接;
31、按需加載模塊,用以針對(duì)庫(kù)操作系統(tǒng),引入按需加載機(jī)制,在運(yùn)行期間動(dòng)態(tài)綁定庫(kù)操作系統(tǒng)調(diào)用的處理函數(shù),設(shè)計(jì)函數(shù)層、工作流層,根據(jù)可執(zhí)行文件鏡像進(jìn)行函數(shù)綁定操作,按需加載模塊與隔離函數(shù)執(zhí)行環(huán)境設(shè)置模塊及傳遞通信原語(yǔ)獲取模塊連接。
32、本發(fā)明相比現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn):
33、本發(fā)明提出了一種面向服務(wù)器無感知計(jì)算場(chǎng)景的輕量化函數(shù)運(yùn)行時(shí),提供隔離環(huán)境的快速冷啟動(dòng)和高性能中間數(shù)據(jù)傳遞的通信原語(yǔ)。
34、本發(fā)明利用工作流粒度的庫(kù)操作系統(tǒng)為函數(shù)提供底層運(yùn)行時(shí)服務(wù),同時(shí)利用內(nèi)存安全語(yǔ)言提供靈活的內(nèi)存隔離與共享。為了進(jìn)一步緩解冷啟動(dòng)開銷,本發(fā)明為庫(kù)操作系統(tǒng)實(shí)現(xiàn)了按需加載機(jī)制。
35、相比于現(xiàn)有技術(shù),本發(fā)明提出的運(yùn)行時(shí)是一種專為服務(wù)器無感知函數(shù)計(jì)算的工作流場(chǎng)景提出的新型軟件棧架構(gòu)。通過將函數(shù)函數(shù)和其所依賴的底層運(yùn)行時(shí)全部部署于相同的cpu特權(quán)級(jí)和地址空間來縮小冷啟動(dòng)范圍和避免昂貴的數(shù)據(jù)拷貝。
36、相比現(xiàn)有技術(shù),本發(fā)明可以將服務(wù)器無感知計(jì)算函數(shù)的冷啟動(dòng)時(shí)間縮短至1ms左右,利用中間數(shù)據(jù)傳遞專用的通信原語(yǔ)可實(shí)現(xiàn)同節(jié)點(diǎn)上下游函數(shù)同步切換的延遲僅需約35μs。對(duì)于輸入數(shù)據(jù)100mb的并行排序計(jì)算任務(wù),本發(fā)明可在同節(jié)點(diǎn)下,將整體端到端運(yùn)行時(shí)間降低90%。
37、本發(fā)明解決了現(xiàn)有技術(shù)中存在的隔離環(huán)境冷啟動(dòng)慢、中間數(shù)據(jù)傳遞性能較差、冷啟動(dòng)范圍大成本高以及內(nèi)存隔離與共享靈活性差的技術(shù)問題。