張 巖 何 濤 易昕昕 曹 暢 康 凱
1 中國聯通研究院 北京 100048
2 中國聯合網絡通信集團有限公司 北京 100033
我國數字經濟蓬勃發展,對構建現代化經濟體系、實現高質量發展的支撐作用不斷凸顯。隨著各行業數字化轉型升級進度加快,特別是5G、人工智能、物聯網等新技術的快速普及應用,全社會數據總量爆發式增長,數據存儲、計算、傳輸和應用的需求大幅提升,在這個過程中,云和網共同組成了新型數字基礎設施。算力網絡[1]作為算網融合的關鍵技術,近年來發展迅速,算力網絡以數據網絡為基礎,結合云計算等技術推動了云網融合的演進和發展。對于運營商而言,算力網絡可以幫助其轉變服務模式,從帶寬、網絡的提供者轉變為網絡計算能力的提供者,通過精細化運營網絡中各業務的情況尋求發展新方向[2]。通過算力網絡的構建,可以將服務模式從單一的資源提供轉變為服務提供,通過算網資源的整合和全局調度,為用戶提供成本最優的一體化算網服務,提升算網資源整體利用率。
服務化的算力網絡以提供具體計算服務的方式向用戶開放,可以根據用戶的差異化需求提供不同的服務模式,包括面向用戶直接提供應用API接口,用戶應用時可直接調用,無須關注算力資源分布;由用戶或第三方提供功能函數代碼包,由平臺完成函數打包、分發部署、動態調度,面向用戶提供計算服務能力。算力網絡目的是將算力服務和網絡有機結合,實現基礎算力以及算力服務的輕量化部署,完成面向服務能力的交付,使得使用者不再需要關注底層計算資源的使用情況,而更加關注服務能力以及其之上業務場景和需求的開發[3],傳統虛擬化服務模式不能很好匹配這個目的,而無服務器計算(Serverless)模式正是滿足了這種發展的需求[4]。本文基于云原生中輕量化的無服務器計算模式,以功能函數為算力服務能力,提出了面向無服務器計算的算力網絡服務體系,闡述了功能需求、整體架構、部署方案等相關內容,并完成了算力網絡服務平臺原型研發部署和業務驗證。
無服務器計算(Serverless Computing)是隨著當前云計算的進步而發展起來的一種前沿服務模式[5]。云功能允許自定義代碼在響應事件時被執行。在大多數情況下,開發者只需要擔心他們的實際代碼,因為事件隊列、底層基礎設施、動態擴展和調度都是由云供應商處理的[6-7]。據云原生計算基金會(Cloud Native Computing Foundation,CNCF)定義,無服務器計算是指在構造和運行應用程序時無需管理服務器的一種計算范式[8]。它描述了細粒度部署模型,由一個或多個函數組成的應用可上傳到平臺執行,并基于實際運行時的資源擴縮容消耗進行計費[9]。
無服務器計算提供一個微型的架構,終端客戶不需要部署、配置或管理服務器服務,代碼運行所需要的服務器服務皆由云端平臺來提供。Serverless稱為無服務器計算,但不代表它真的不需要服務器,而是說開發者再也不用過多考慮服務器的問題,計算資源作為服務而不是服務器的概念出現。Serverless是一種構建和管理基于微服務架構的技術,允許開發者在服務部署級別而不是服務器部署級別來管理應用部署,甚至可以管理某個具體功能或端口的部署,以便讓開發者快速迭代,更快速地開發軟件。
Serverless處于起步階段,代表的是一種服務理念或模式。這種服務理念希望用戶無需關注除了業務邏輯本身之外的主機管理、服務運維、配置等事務,不需要關注運營維護問題。也就是說,只要有了Serverless,幾乎可以不需要再考慮Devops工作流。Serverless是一種軟件系統架構,并不代表某種技術,通常被稱為是一種云服務產品形態,比如各大廠商推出的各種Serverless 服務或能力、封裝的 API 網關等產品。當前業界最常見的 Serverless 實現方案為 FaaS(函數即服務)+ BaaS(后端即服務)[10]。
1.2.1 與微服務架構對比
無服務器架構和微服務架構有許多相似之處,比如業務拆分、強調無狀態、具有敏捷特性等[11]。無服務器架構與微服務架構相比,具有粒度更細、要求更嚴格的特征,比如微服務以服務為邊界拆分業務,無服務器架構以函數為邊界拆分業務。微服務可以跨調用的內存狀態共享,無服務器架構要求調用徹底無狀態。此外,無服務器架構依賴BaaS提供第三方依賴,而微服務可以自由選擇第三方依賴來源。
微服務的思想就是將復雜單體式應用程序解耦成多個各個獨立的服務,微服務設計目的就是用微服務的方式來簡化構建復雜應用的過程。但是微服務和無服務器架構是契合的,都強調系統的解耦。從某種角度而言,無服務器架構和微服務是不同層面但又互相促進的:微服務架構是開發模式,無服務器架構是計算平臺。
1.2.2 與容器對比
無服務器架構是一種理想的、可預測的、具有小型資源需求和短期事務的工作負載。而容器對于長時運行的流程和可預測的工作負載具有優勢。容器在應用程序設計方面也提供了更多的靈活性,但需要對底層基礎架構進行更多的管理。無服務器架構和容器不在一個平面上。無服務器架構是一種軟件設計架構,容器是軟件架構的承載者。從應用程序角度來說,無服務器架構更適用于網絡新應用程序,很難將現有的應用程序重構或重寫為無服務器架構形式,而容器可以將現有應用程序遷移。無服務器架構與容器的關系是互相補充而非重疊。
綜上,Serverless理念符合算力網絡中以輕量化的算力服務部署對外提供服務的目的,實現算力服務的輕量化封裝,可以部署在資源不足的計算節點、資源受限的邊緣節點、端節點內部來實現算力的快速響應與資源的高效利用。
在算力網絡服務體系中,Serverless實現了細粒度的計算資源分配,不需要預分配資源。具備真正意義上的高度擴容和彈性,按需使用,當執行完畢后立即釋放資源,按需計費,適合構建無狀態的應用,比如處理一張圖片,對一段音頻/視頻進行編碼或解碼,對請求返回一小段計算結果數據等。算力網絡服務體系架構需要滿足以上需求,在Serverless架構下實現以下功能。
1)基于Serverless的服務管理功能:基于服務的維度,統一納管服務部署、服務發現、服務調度、服務協同,故障監控等。
2)邊緣網絡控制功能:基于網絡的維度,利用網絡控制器,實現網絡感知、智能路由轉發、時延確定性管理、路徑確定性管理,保障服務任務的高效分發傳輸。
3)邊緣算力資源功能:基于資源的維度,統一協同管理分布式的邊緣計算節點資源,實現算力資源的感知、分配、彈性橫向擴展。
4)邊緣網絡協同功能,包括相鄰節點的界定與協同啟動指標判斷,相鄰節點信息維護機制,目標協同節點選擇機制與邊邊協同執行機制等。
邊緣計算節點隨著用戶不斷接入,會持續消耗計算資源,因此,服務管理體系需要保證計算資源的可擴充性,即伸縮性。低時延是對邊緣側用戶的一大保證,計算平臺系統需要保證盡可能減少不必要的時延。計算資源受限是邊緣計算的主要制約因素,計算平臺應在保證基本功能的條件下,盡量減少計算資源的浪費。
無服務器邊緣算力網絡服務體系參考架構主要四個部分:基礎設施層、算網控制層、基于Serverless的服務編排層以及面向用戶的業務應用層。如圖1所示,無服務器邊緣計算網絡的參考架構包括的基礎功能如下。
1)業務應用層:該部分主要是部署在無服務器邊緣算力網絡中的新型業務與應用,這些業務與應用可以通過相應的函數API接入并調用平臺提供的函數服務;同時,可根據應用自身的情況,對服務編排層提出需求,通過服務編排層控制底層網絡和資源編排,具備分布式彈性可擴展的能力。
2)基于Serverless的服務編排層:實現了對Serverless服務的管控,并向上支撐服務調用,向下連通算力和網絡管控?;赟erverless的服務管理子系統,具備Serverless任務分解、Serverless服務部署、Serverless服務發現、Serverless服務調度(負載均衡)等能力。
3)算網管控層:包括兩部分,算力管控(云平臺)和網絡管控(SDN控制器),網絡管控負責連接各個邊緣計算節點,實現對邊緣算力資源和網絡集中統一的管理和控制,并保證時延確定性和路徑最優化,構建敏捷、高效、可定制的邊緣網絡及協同機制。算力管控主要對分布式的計算和存儲進行集中統一的管理,包括對資源負載狀況實時監控為函數的計算處理提供彈性資源,具備靈活擴縮能力;對接異構基礎設施資源,屏蔽異構對應用部署的影響實現多級泛在算力的抽象和管理;同時對接分布式基礎設施資源,實現層級管控。
4)基礎設施層:分布式基礎設施資源主要由邊緣計算節點和網絡設備組成,通過北向接口受算網控制層控制,為無服務器邊緣計算網絡參考架構提供計算、存儲和網絡設施資源。
基于前述邊緣算力網絡服務體系,本文設計并研發了算力網絡服務平臺原型系統,以補充當前算力網絡服務體系中未實現的服務編排、服務調用、算力管控、網絡協同等功能,算力網絡服務體系中網絡控制由第三方SDN控制器實現,基礎設施采用自有服務器搭建。算力網絡服務平臺原型基于模塊化、分布式的軟件架構,包括資源管理模塊、算力調度模塊、策略管理模塊等基本模塊,并且在容器平臺的基礎上實現Serverless服務能力。算力網絡服務平臺原型系統功能模塊如圖2所示。
算力網絡服務平臺實現了整個服務體系的基本功能,依靠開源的Knative項目[12]實現了Serverless函數計算能力,Knative基于Kubernetes擴展的形式,能夠實現服務構建和部署的自動化、服務編排的彈性化以及事件驅動基礎設施的標準化。Knative為開發人員提供API用于部署Serverless風格的應用,可以通過Kubernetes的API和工具來部署和管理Knative,工作流程均基于Kubernetes完成。
算力網絡服務平臺北向對用戶進行能力開放,接受應用需求,進行應用的創建、管理和編排;南向對接第三方邊緣云平臺和網絡控制器,實現對底層資源的調用和資源的生命周期管理,平臺根據獲取的云算力資源和網絡資源信息進行算網協編排,將編排后的策略分別下發至云平臺和網絡控制器,實現端到端的業務打通。具體的,網絡控制器從設備收集三層拓撲信息,向算力網絡服務平臺上報網絡資源信息,包括節點、端口、三層拓撲等信息;各云平臺(包括虛擬機平臺Openstack[13]和容器平臺Kubernetes[14])向算力網絡服務平臺上報資源池可提供的算力資源信息和服務信息,包括云池算力資源、類型等;算力網絡服務平臺根據應用需求形成算力服務方案,并通過算網協同編排功能形成算+網配置方案;算力網絡服務平臺調用云平臺完成所需服務在各云池的配置;算力網絡服務平臺根據服務所在算力云池的網絡側信息向網絡控制器下發路徑路由信息、分流策略等;當算力服務的狀態發生變化時,上報告知算網服務平臺,由平臺給出算力調度方案,并通知網絡編排變更網絡。為了驗證實際效果,本文于實驗室內搭建了完整的邊緣算力網絡服務體系,使用開源的Openvino[15]視頻處理軟件,進行了人臉識別業務的創建和應用驗證,達到了預期效果,系統部署如圖3所示。
本文分析了無服務器計算技術在算力網絡中的發展情況,針對邊緣算力網絡服務體系的業務特點和需求,基于開源的標準化Serverless服務框架Knative研發了算力網絡服務平臺原型系統,實現了輕量化的算力部署和服務提供,并且通過該平臺實現網絡控制與算力控制的協同,驗證了算力網絡對于多級算力協同服務時的良好特性。該平臺目前在實驗室進行了多項技術實踐,有效支撐了算力網絡新技術的研究,是中國聯通在算力網絡創新體系方面的成功嘗試,后續將全力推進相關技術不斷成熟、示范應用落地,引領未來網絡技術演進。