本發(fā)明涉及云計(jì)算,具體涉及服務(wù)器無感知計(jì)算場(chǎng)景下函數(shù)沙箱機(jī)制和函數(shù)冷啟動(dòng)優(yōu)化機(jī)制。
背景技術(shù):
1、服務(wù)器無感知計(jì)算是一種新興的云計(jì)算服務(wù)模式,用戶無須關(guān)心具體的底層基礎(chǔ)設(shè)施,無須額外學(xué)習(xí)成本即可擁有敏捷、高效的云上業(yè)務(wù)開發(fā)部署體驗(yàn),使得用戶可以專注于自身的業(yè)務(wù)創(chuàng)新。在服務(wù)器無感知計(jì)算系統(tǒng)中,沙箱機(jī)制是一種關(guān)鍵的安全措施,它可以隔離執(zhí)行環(huán)境,并確保代碼在受控和安全的環(huán)境中運(yùn)行。沙箱機(jī)制可以抵御各種潛在的安全威脅,例如跨函數(shù)的數(shù)據(jù)泄露,不受信任的代碼執(zhí)行等。在服務(wù)器無感知計(jì)算平臺(tái)處理外部到來的函數(shù)請(qǐng)求時(shí),如果此時(shí)請(qǐng)求對(duì)應(yīng)的函數(shù)實(shí)例不存在,則需要進(jìn)行函數(shù)實(shí)例的冷啟動(dòng)。此時(shí),服務(wù)器無感知計(jì)算平臺(tái)需要實(shí)時(shí)創(chuàng)建函數(shù)實(shí)例,完成沙箱創(chuàng)建以及應(yīng)用代碼加載,才可繼續(xù)執(zhí)行應(yīng)用邏輯處理函數(shù)調(diào)用請(qǐng)求。相比請(qǐng)求到達(dá)時(shí)存在函數(shù)實(shí)例的情況,冷啟動(dòng)情況下函數(shù)的請(qǐng)求處理過程涉及額外的沙箱創(chuàng)建過程,具有更高的調(diào)用延遲。
2、例如公布號(hào)為cn115987959a的現(xiàn)有發(fā)明專利申請(qǐng)文獻(xiàn)《一種基于遠(yuǎn)端加載的可定制app融合方法》,該現(xiàn)有方法包括:構(gòu)建app融合架構(gòu),通過app融合架構(gòu)中app主應(yīng)用基于遠(yuǎn)端加載動(dòng)態(tài)引入app子應(yīng)用進(jìn)行app融合,其中通過app主應(yīng)用根據(jù)定制配置app子應(yīng)用,根據(jù)配置融合加載app子應(yīng)用,并渲染app子應(yīng)用,為app子應(yīng)用提供數(shù)據(jù)與事件支撐,滿足app子應(yīng)用之間的通信需求;并通過app主應(yīng)用采用webcomponent容器結(jié)合webview沙箱的方式隔離加載的app子應(yīng)用。然而,前述現(xiàn)有的沙箱隔離機(jī)制主要基于容器或虛擬機(jī)隔離機(jī)制,這些機(jī)制基于操作系統(tǒng)提供的進(jìn)程隔離機(jī)制,存在較大的隔離開銷。進(jìn)程涉及更多系統(tǒng)資源,在創(chuàng)建時(shí)需要更多初始化步驟,且不同實(shí)例間相互獨(dú)立,無法共享實(shí)例降低冷啟動(dòng)延遲。又例如公布號(hào)為cn116127445a的現(xiàn)有發(fā)明專利申請(qǐng)文獻(xiàn)《基于內(nèi)核態(tài)內(nèi)存隔離硬件特性的ebpf內(nèi)存隔離方法及系統(tǒng)》,該現(xiàn)有方法包括:步驟s1:調(diào)用輔助函數(shù);步驟s2:跳板函數(shù)檢查輔助函數(shù)調(diào)用的參數(shù)是否合法;如果沒有通過檢查,則會(huì)進(jìn)行錯(cuò)誤處理,并結(jié)束整個(gè)ebpf程序的執(zhí)行;如果通過檢查,則進(jìn)入步驟s3;步驟s3:更新pkrs臨時(shí)退出沙箱;步驟s4:將影子對(duì)象同步回內(nèi)核對(duì)象;步驟s5:調(diào)用真實(shí)輔助函數(shù);步驟s6:將內(nèi)核對(duì)象同步回影子對(duì)象;步驟s7:更新pkrs的值重新進(jìn)入沙箱;步驟s8:結(jié)束調(diào)用輔助函數(shù)。然而,前述基于內(nèi)存分區(qū)隔離機(jī)制的沙箱系統(tǒng)使用用戶態(tài)內(nèi)存隔離機(jī)制實(shí)現(xiàn)內(nèi)存隔離,在沙箱調(diào)度切換與沙箱內(nèi)存隔離設(shè)置階段無須涉及內(nèi)核與用戶態(tài)的狀態(tài)切換,可提供更高效的隔離性能;并且多個(gè)沙箱實(shí)例安全共享進(jìn)程實(shí)例,初始化步驟更少,冷啟動(dòng)開銷更低。因此,探索具有低冷啟動(dòng)延遲的內(nèi)存分區(qū)沙箱機(jī)制對(duì)于云廠商提升服務(wù)器無感知計(jì)算服務(wù)質(zhì)量具有重要作用。
3、現(xiàn)有內(nèi)存分區(qū)沙箱機(jī)制根據(jù)提供的隔離等級(jí)可分為兩類:弱隔離沙箱機(jī)制與強(qiáng)隔離沙箱機(jī)制。對(duì)于弱隔離沙箱機(jī)制,由于其不對(duì)應(yīng)用系統(tǒng)資源進(jìn)行隔離,其冷啟動(dòng)延遲較低且內(nèi)存開銷較低,但提供的隔離安全性較差;對(duì)于強(qiáng)隔離沙箱機(jī)制,其通過庫(kù)操作系統(tǒng)機(jī)制提供額外的系統(tǒng)資源隔離,安全性較好。但是,由于其引入了額外的庫(kù)操作系統(tǒng)機(jī)制,在實(shí)例啟動(dòng)過程中引入額外的初始化步驟,增加了冷啟動(dòng)延遲。
4、現(xiàn)有技術(shù)存在特定場(chǎng)景下內(nèi)存分區(qū)沙箱系統(tǒng)的高冷啟動(dòng)延遲、實(shí)例創(chuàng)建效率低的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明所要解決的技術(shù)問題在于:如何解決現(xiàn)有技術(shù)中特定場(chǎng)景下內(nèi)存分區(qū)沙箱系統(tǒng)的高冷啟動(dòng)延遲、實(shí)例創(chuàng)建效率低的技術(shù)問題。
2、本發(fā)明是采用以下技術(shù)方案解決上述技術(shù)問題的:面向服務(wù)器無感知計(jì)算場(chǎng)景的沙箱快速創(chuàng)建方法包括:
3、s1、針對(duì)服務(wù)器無感知計(jì)算場(chǎng)景,構(gòu)建并利用內(nèi)存分區(qū)沙箱快速創(chuàng)建機(jī)制,處理該場(chǎng)景下內(nèi)存分區(qū)沙箱系統(tǒng)的高冷啟動(dòng)延遲,在cap-vm內(nèi)存分區(qū)沙箱系統(tǒng)中,增加模板實(shí)例緩存池組件、supervisor組件,供沙箱冷啟動(dòng)操作,其中,利用緩存池組件維護(hù)函數(shù)對(duì)應(yīng)模板實(shí)例,使函數(shù)對(duì)應(yīng)模板實(shí)例完成沙箱fork操作,利用supervisor組件,根據(jù)修改沙箱運(yùn)行時(shí)、cheribsd操作系統(tǒng)內(nèi)核數(shù)據(jù),實(shí)現(xiàn)沙箱fork原語;
4、s2、獲取并利用應(yīng)用初始化過程相似性信息,針對(duì)內(nèi)存分區(qū)沙箱場(chǎng)景,使用離線預(yù)初始化實(shí)例,根據(jù)在線調(diào)用時(shí)復(fù)用預(yù)初始化實(shí)例狀態(tài),供實(shí)例創(chuàng)建操作;
5、s3、利用整合操作系統(tǒng)內(nèi)核、沙箱運(yùn)行時(shí),調(diào)優(yōu)沙箱的實(shí)例創(chuàng)建操作,設(shè)置沙箱fork原語,通過沙箱fork原語,根據(jù)已有的實(shí)例創(chuàng)建新實(shí)例。
6、本發(fā)明提出了面向服務(wù)器無感知計(jì)算場(chǎng)景的內(nèi)存分區(qū)沙箱快速創(chuàng)建機(jī)制,通過提供沙箱fork原語的方式來復(fù)用預(yù)初始化實(shí)例狀態(tài),從而跳過沙箱實(shí)例冷啟動(dòng)過程,降低沙箱冷啟動(dòng)延遲,解決內(nèi)存分區(qū)沙箱系統(tǒng)在服務(wù)器無感知計(jì)算下的高額冷啟動(dòng)開銷問題。
7、本發(fā)明利用應(yīng)用初始化過程的相似性,針對(duì)內(nèi)存分區(qū)沙箱場(chǎng)景,使用離線預(yù)初始化實(shí)例,在線調(diào)用時(shí)復(fù)用預(yù)初始化實(shí)例狀態(tài)的方式,來跳過實(shí)例初始化過程,加速實(shí)例創(chuàng)建。
8、在更具體的技術(shù)方案中,s1包括:
9、s11、使沙箱系統(tǒng)對(duì)函數(shù)對(duì)應(yīng)模板實(shí)例進(jìn)行預(yù)維護(hù)操作,通過沙箱fork原語,基于函數(shù)對(duì)應(yīng)模板實(shí)例,進(jìn)行新實(shí)例創(chuàng)建操作。
10、s12、在預(yù)置函數(shù)部署至系統(tǒng)時(shí),根據(jù)參數(shù)配置信息、函數(shù)對(duì)應(yīng)模板實(shí)例,進(jìn)行沙箱fork冷啟動(dòng)優(yōu)化操作;
11、s13、在函數(shù)請(qǐng)求到達(dá)時(shí),首先查看模板實(shí)例緩存池是否存在函數(shù)對(duì)應(yīng)模板實(shí)例;
12、s14、若是,則通過沙箱fork原語創(chuàng)建對(duì)應(yīng)新實(shí)例,完成函數(shù)請(qǐng)求;
13、s15、若否,則進(jìn)行實(shí)例冷啟動(dòng)操作,以觸發(fā)離線創(chuàng)建模板實(shí)例,將離線創(chuàng)建模塊實(shí)例加入模板實(shí)例緩存池,使當(dāng)前函數(shù)被調(diào)用時(shí),通過fork模板實(shí)例進(jìn)行冷啟動(dòng)加速;
14、s16、根據(jù)資源種類,設(shè)計(jì)沙箱fork原語中的fork機(jī)制,使用supervisor組件,通過ptrace系統(tǒng)調(diào)用操作,建立對(duì)沙箱運(yùn)行時(shí)進(jìn)程的調(diào)試關(guān)系,監(jiān)控、調(diào)整沙箱運(yùn)行時(shí)進(jìn)程狀態(tài);
15、s17、利用沙箱文件資源命名空間機(jī)制,虛擬化系統(tǒng)文件描述符資源,對(duì)沙箱fork操作中的文件資源進(jìn)行狀態(tài)配置。
16、本發(fā)明利用整合操作系統(tǒng)內(nèi)核與沙箱運(yùn)行時(shí)來加快沙箱創(chuàng)建操作,設(shè)計(jì)了沙箱fork原語,通過該原語可根據(jù)已有沙箱實(shí)例快速創(chuàng)建新實(shí)例。
17、在更具體的技術(shù)方案中,s16中,使用ptrace系統(tǒng)的調(diào)用參數(shù)組合,調(diào)整沙箱運(yùn)行時(shí)進(jìn)程狀態(tài),實(shí)現(xiàn)沙箱實(shí)例線程資源中斷機(jī)制與狀態(tài)獲取機(jī)制,并通過進(jìn)程間管道通信,將沙箱實(shí)例線程資源中斷機(jī)制與狀態(tài)獲取機(jī)制暴露給沙箱運(yùn)行時(shí)。
18、在更具體的技術(shù)方案中,s16中的fork機(jī)制包括:線程資源的fork機(jī)制、內(nèi)存資源的fork機(jī)制以及文件資源的fork機(jī)制。
19、在更具體的技術(shù)方案中,在線程資源fork機(jī)制中,設(shè)計(jì)并利用supervisor組件,改變運(yùn)行時(shí)中沙箱線程狀態(tài)。
20、在更具體的技術(shù)方案中,線程資源fork機(jī)制還包括:線程中斷機(jī)制、線程復(fù)制機(jī)制。
21、在更具體的技術(shù)方案中,s16中,在內(nèi)存資源fork機(jī)制中,設(shè)計(jì)內(nèi)存資源操作系統(tǒng)分區(qū)調(diào)用pfork機(jī)制,內(nèi)存資源操作系統(tǒng)分區(qū)調(diào)用pfork機(jī)制接收的參數(shù)包括:模板實(shí)例內(nèi)存分區(qū)起始地址template,預(yù)創(chuàng)建新實(shí)例內(nèi)存分區(qū)起始地址addr,內(nèi)存分區(qū)長(zhǎng)度len。
22、本發(fā)明設(shè)計(jì)了內(nèi)存分區(qū)沙箱fork機(jī)制,并基于現(xiàn)有內(nèi)存分區(qū)系統(tǒng)cap-vm實(shí)現(xiàn)了沙箱系統(tǒng)bootless-tfork。該系統(tǒng)的設(shè)計(jì)思想是通過沙箱fork原語高效地復(fù)用離線預(yù)初始實(shí)例狀態(tài)完成實(shí)例初始化過程,從而跳過實(shí)例初始化階段,加速實(shí)例創(chuàng)建,降低函數(shù)冷啟動(dòng)延遲。
23、在更具體的技術(shù)方案中,s16中,在文件資源fork機(jī)制中,在進(jìn)程fork系統(tǒng)調(diào)用過程中,通過fork生成新進(jìn)程實(shí)例,以持有原進(jìn)程文件描述符副本,以訪問原進(jìn)程已打開文件。
24、在更具體的技術(shù)方案中,文件資源fork機(jī)制還包括:沙箱文件資源命名空間機(jī)制以及主機(jī)文件資源相關(guān)處理。
25、在更具體的技術(shù)方案中,面向服務(wù)器無感知計(jì)算場(chǎng)景的沙箱快速創(chuàng)建系統(tǒng)包括:
26、高冷啟動(dòng)延遲調(diào)優(yōu)模塊,用以針對(duì)服務(wù)器無感知計(jì)算場(chǎng)景,構(gòu)建并利用內(nèi)存分區(qū)沙箱快速創(chuàng)建機(jī)制,處理該場(chǎng)景下內(nèi)存分區(qū)沙箱系統(tǒng)的高冷啟動(dòng)延遲,在cap-vm內(nèi)存分區(qū)沙箱系統(tǒng)中,增加模板實(shí)例緩存池組件、supervisor組件,供沙箱冷啟動(dòng)操作,其中,利用緩存池組件維護(hù)函數(shù)對(duì)應(yīng)模板實(shí)例,使函數(shù)對(duì)應(yīng)模板實(shí)例完成沙箱fork操作,利用supervisor組件,根據(jù)修改沙箱運(yùn)行時(shí)、cheribsd操作系統(tǒng)內(nèi)核數(shù)據(jù),實(shí)現(xiàn)沙箱fork原語;
27、在線調(diào)用時(shí)處理模塊,用以獲取并利用應(yīng)用初始化過程相似性信息,針對(duì)內(nèi)存分區(qū)沙箱場(chǎng)景,使用離線預(yù)初始化實(shí)例,根據(jù)在線調(diào)用時(shí)復(fù)用預(yù)初始化實(shí)例狀態(tài),供實(shí)例創(chuàng)建操作,在線調(diào)用時(shí)處理模塊與高冷啟動(dòng)延遲調(diào)優(yōu)模塊連接;
28、新實(shí)例創(chuàng)建模塊,用以利用整合操作系統(tǒng)內(nèi)核、沙箱運(yùn)行時(shí),調(diào)優(yōu)沙箱的實(shí)例創(chuàng)建操作,設(shè)置沙箱fork原語,通過沙箱fork原語,根據(jù)已有的實(shí)例創(chuàng)建新實(shí)例,新實(shí)例創(chuàng)建模塊與在線調(diào)用時(shí)處理模塊連接。
29、本發(fā)明提出了面向服務(wù)器無感知計(jì)算場(chǎng)景的內(nèi)存分區(qū)沙箱快速創(chuàng)建機(jī)制,通過提供沙箱fork原語的方式來復(fù)用預(yù)初始化實(shí)例狀態(tài),從而跳過沙箱實(shí)例冷啟動(dòng)過程,降低沙箱冷啟動(dòng)延遲,解決內(nèi)存分區(qū)沙箱系統(tǒng)在服務(wù)器無感知計(jì)算下的高額冷啟動(dòng)開銷問題。
30、本發(fā)明利用應(yīng)用初始化過程的相似性,針對(duì)內(nèi)存分區(qū)沙箱場(chǎng)景,使用離線預(yù)初始化實(shí)例,在線調(diào)用時(shí)復(fù)用預(yù)初始化實(shí)例狀態(tài)的方式,來跳過實(shí)例初始化過程,加速實(shí)例創(chuàng)建。
31、本發(fā)明利用整合操作系統(tǒng)內(nèi)核與沙箱運(yùn)行時(shí)來加快沙箱創(chuàng)建操作,設(shè)計(jì)了沙箱fork原語,通過該原語可根據(jù)已有沙箱實(shí)例快速創(chuàng)建新實(shí)例。
32、本發(fā)明設(shè)計(jì)了內(nèi)存分區(qū)沙箱fork機(jī)制,并基于現(xiàn)有內(nèi)存分區(qū)系統(tǒng)cap-vm實(shí)現(xiàn)了沙箱系統(tǒng)bootless-tfork。該系統(tǒng)的設(shè)計(jì)思想是通過沙箱fork原語高效地復(fù)用離線預(yù)初始實(shí)例狀態(tài)完成實(shí)例初始化過程,從而跳過實(shí)例初始化階段,加速實(shí)例創(chuàng)建,降低函數(shù)冷啟動(dòng)延遲。
33、本發(fā)明解決了現(xiàn)有技術(shù)中存在的特定場(chǎng)景下內(nèi)存分區(qū)沙箱系統(tǒng)的高冷啟動(dòng)延遲、實(shí)例創(chuàng)建效率低的技術(shù)問題。