Dapr 是分散式應用程式可移植、事件驅動的執行時, 這裡有幾個關鍵字,我們拆開來看一下:
- 分散式: 代表共享或是分散,在雲原生應用上體現為微服務,在邊緣計算場景中代表分散的模組,可以做積木式拼接。
- 應用: Dapr 工作在應用層,而不是在網路層,幫助我們構建分散式的應用。
- 可移植的平臺:可以將不同的系統整合到您的應用程式中而無需硬編碼, 特別是在邊緣計算場景中區別於社群中出現的幾個號稱多執行時架構的專案,比如騰訊的Femas 。
- 執行時:可以在所有的裝置上執行Dapr,無論你使用什麼樣的平臺,不管你是用強大計算能力的X86還是低功耗的ARM 平臺。
Dapr 被設計成既可以在雲上工作也可以在邊緣上工作。但是到目前為止,它的應用重點仍是聚焦在開啟雲原生應用上。下面我們來展示將Dapr 為邊緣計算場景帶來價值的不同方式,內容部分來自《Dapr 學習手冊》:噹噹網連結: http://dmll.cn/RXv2,推薦大家買來讀一遍,Dapr的精彩介紹來自於Dapr 的原創。
Dapr 擁有作為函式計算執行時必要的所有基礎的功能,它支援可以用於啟用函式程式碼的觸發器,同時它也支援函式程式碼用來把資料傳送給另一個系統的繫結。Dapr 執行時以單程式的方式執行。雖然有其他Dapr輔助服務,例如Dapr Actor的定位(Placement)服務,Dapr 執行時本身足以支援常見的函式執行。這使得在邊緣部署的執行時打包和分發變得足夠簡單。把我們的函式程式碼實現成HTTP或者gRPC伺服器。可以預期的是,未來的Dapr 將會擴充套件成動態載入函式程式碼。
在低功耗裝置上執行Dapr 邊車可能有點昂貴,Dapr 適合的解決方案場景是在現場閘道器上執行,然後讓裝置通過IP 地址和 Dapr 邊車通訊。我最近剛做了一個例子是通過Dapr 和 邊緣 MQTT 伺服器的PubSub ,程式碼例子參看:https://github.com/geffzhang/dapr-nanomq