無伺服器邊緣運算網路介紹

全栈云技术架构
無伺服器運算(Serverless Computing)也是目前雲端運算領域的熱點技術,根據雲端原生運算基金會(Cloud Native Computing Foundation, CNCF)定義,無伺服器運算是指在建構和運行應用程式時無需管理伺服器的一種 計算範式。 它描述了細粒度部署模型,由一個或多個函數組成的應用程式可上傳到平台,並執行、擴縮容和基於實際執行時間的資源消耗進行計費。

Serverless 融合了微服務、FaaS、事件驅動程式設計、容器化和純粹的pay-per-use模型以及易擴縮容等最新技術進展。 它是從 IAAS到PAAS間抽象的一大步,允許在不提供任何依賴 OS 或虛擬方式(類別 VM/容器)條件下執行軟體。 Serverless 運算並不代表無需伺服器來託管和執行程式碼;也不代表維運工程師將會失業。 相反,它指的是一種理念,無伺服器運算的消費者無需在伺服器供應、維護、更新、擴縮容和容量規劃上花費時間和資源。

無伺服器運算在以下三方面扮演重要角色

⚫ 開發者:基於無伺服器運算平台進行服務或業務的編程,開發者可專注於業務程序的開發和最佳化,而無需關注系統平台的運維。

⚫ 使用者:依照使用的資源或呼叫服務的次數計費,真正做到按需使用和按需付費,大幅降低使用者的成本。

⚫ 提供者:作為平台服務提供方,採用無伺服器運算技術之後,可以進一步的提昇系統資源的擴縮效能,實現更靈活敏捷的擴縮容,進而最大化的利用基礎架構資源。

無伺服器運算平台包括兩個技術面

⚫ Functions-as-a-Service (Faas):提供事件驅動的計算。 開發者基於函數運行和管理應用程式碼,函數被事件或 HTTP 請求觸發。 開發者部署小的程式碼單元到 FaaS,作為離散行為按需執行,無需管理伺服器或其他任何潛在基礎設施並實現擴縮容。

⚫ Backend-as-a-Service(BaaS):基於第三方 API 的服務,取代應用程式中的常用功能。 因為這些 API 以能透明自動擴縮容和維運的服務提供,這對開發者來說就是 Serverless 的。

無伺服器邊緣運算網路參考架構,此架構主要五個部分:分散式邊緣運算網路基礎設施資源、邊緣網路控制器及邊緣編排管理器、基於 Serverless 的服務管理系統、智慧業務與應用。

無伺服器邊緣運算網路參考架構中的關鍵技術,包括基於 Serverless 的服務管理技術、資源管理編排技術、網路控制管理技術等。

基於 Serverless 的服務管理技術

基於 Serverless 的服務管理技術主要為分散式函數運算提供支援;其中,無伺服器運算技術(Serverless Computing)是基於 Serverless 的服務管理技術的基礎。

基於 Serverless 的服務管理技術主要具備基於 Serverless 的服務部署、基於 Serverless 的服務發現和基於 Serverless 的服務排程等能力。 其中,基於Serverless的服務部署主要解決函數服務在哪裡部署的問題以及部署在哪種計算載體中的問題;基於Serverless 的服務發現主要解決函數服務對外暴露的問題,便於計算任務的請求;基於Serverless 的 服務調度主要解決函數服務處理負載平衡的問題。

資源管理編排技術

資源管理編排是無伺服器邊緣運算網路參考架構的關鍵技術之一,主要透過統一協同管理分散式的邊緣運算節點資源,實現對運算資源、網路資源和儲存資源的管理和編排,以確保資源的按 需供應、彈性靈活,進而提升分散式運算與儲存資源的使用率。 其中,對容器、Unikernal等運算載體進行管理編排是資源管理編排技術的主要內容。

網路控制管理技術

網路控制管理技術主要採用軟體定義網路(Software DefinedNetwork,SDN)技術以及時間敏感網路(Time-Sensitive Networking, TSN)技術,實現分散式邊緣運算節點網路連接的可管可控,保證時延確定性和 路徑確定性。 在無伺服器邊緣運算網路中,可以基於SDN技術建立邊緣網路的控制面,透過要求邊緣運算節點以及網路設備定期上報運算、網路和儲存相關狀態信息,建構運算、網路和儲存的狀態視圖,從而實現 在控制面整合運算資源的感知、網路資源感知、內容資源感知等功能。

無伺服器運算作為新一代雲端運算的想法及理念,其核心是將提供服務資源的基礎設施抽象化為各種服務,透過API 介面的方式提供給使用者調用,落到具體技術上主要有函數即服務( FaaS)以及後端即服務(BaaS)等。

邊緣運算開源生態
(1)EdgeGallery

EdgeGallery 是由華為、紫金山實驗室、中國資訊通信研究院、中國移動、中國聯通、騰訊、九州雲、安恆資訊等八家創始成員發起的 MEC 邊緣運算開源專案。

目前 EdgeGallery 整個邊緣運算平台是基於 Kubernetes 打造,在規劃中會引進無伺服器運算的相關特性,提昇在監控、擴展性方面的能力。

(2)KubeEdge

KubeEdge 是一個開源系統,用於將容器化應用程式編排功能擴展到 Edge 的主機,是一個面向邊雲協同的雲端原生邊緣運算框架。 KubeEdge 在 Kubernetes 原生的容器編排調度能力之上實現了邊雲之間的應用協同、資源協同、資料協同和設備協同能力,完整打通了邊緣運算中雲、邊、設備協同的場景。 KubeEdge 架構上分為雲、邊、端三個層次。

(3)K3S

K3S 是專為在資源有限的環境中運行 Kubernetes 的研發和維運人員設計,透過消除安裝 Kubernetes 的複雜性和學習成本,K3S 大大簡化了邊緣部署的複雜度。

(4)OpenYurt

OpenYurt 是阿里雲開源的雲端原生邊緣運算解決方案。 已應用於CDN、音訊視訊直播、物聯網、物流、工業大腦、城市大腦等實際應用場景中,並服務於阿里雲 LinkEdge、盒馬、優酷、視訊雲等多個業務或專案中。 目前開源的能力包括了邊緣自治能力和原生 K8S 叢集一鍵式轉換為邊緣叢集。 OpenYurt 已經具備了緣自治、高效運維通道、邊緣單元化管理、邊緣流量拓撲管理,安全容器、邊緣 Serverless/FaaS、異質資源支援等能力。

無伺服器運算開源生態

Kubernetes 的蓬勃發展由催生了一系列以它為基礎的 Serverless框架,目前開源的 Serverless 框架大多以 Kubernetes 為基礎,主要介紹 Knative、 OpenFaaS、OpenWhisk 和 Kubeless。

(1)Knative

2018 年 7 月,Google 發布了 Knative 無伺服器開源平台[5]。 Knative 是Google 開源的基於Kubernetes 和Istio 的Serverless 開源實現,目標是為了提供更高層次的抽象,讓開發者無需關注基礎設施(虛擬機或容器,網絡配置,容量規劃),而專注於業務代碼即 可,旨在標準化Serverless。 只需使用幾個 YAML 檔案就可以輕鬆地開始使用 Knative 了。 這也意味著,在本地或託管雲端服務上,任何可以運行 Kubernetes 的地方都可以運行 Knative 和業務的程式碼。

Knative 採用 Go 語言編寫,支援 C#, Go, Java, Node. js, PHP,Python, Ruby, and Rust 語言。 包含 Serving 和 Eventing 兩大元件,他們都透過 Kubernetes custom resource definitions (CRDs)來設定與運作。

(2)OpenFaaS

OpenFaas 無伺服器功能框架,透過將功能打包,無需重複的樣板化編碼,簡化操作流程。

(3)OpenWhisk

OpenWhisk 是一款分散式的 Serverless 開源平台,最早來自IBM 的 Serverless 平台,目前由 Apache 基金會進行孵化和管理。 OpenWhisk 是一個功能完備的 FaaS 平台,包含事件驅動及函數執行時等核心元件,可運作在不同的基礎架構上,如實體機、虛擬機器、容器平台、PaaS、公有雲和私有雲等。

(4)Kubeless

Kubeless 是運行在 Kubernetes 平台之上的 FaaS。 Kubeless 官方強調其是 Kubernetes 原生(Kubernetes native)的 Serverless 實作。 Kubeless 在設計初就引用了許多 Kubernetes 原生的元件,如 Service、Ingress、HPA(Horizontal Pod AutoScaler)等。

無伺服器邊緣運算網路是融合邊緣運算、無伺服器運算等先進技術,高效能、低成本利用邊緣側有限異質資源,基於大量無伺服器邊緣運算節點形成的一體化運算網絡,實現運算節點內的轉算 存融合及節點間的網路協同,支撐海量多樣智慧終端、用戶在邊緣側的差異化運算訴求,滿足廣泛接入、高吞吐和低時延的網路訴求。

本白皮書(下載如下)首先介紹了無伺服器邊緣運算網路的發展背景、基本概念、參考架構、關鍵技術,同時分析了無伺服器邊緣運算網路的典型應用場景,並探討了無伺服器邊緣運算網路的生態 建設。

資料來源:網路通訊與安全紫金山實驗室