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