Dapr 的 gRPC元件(又叫可插拔元件)的提案

語言: CN / TW / HK

Dapr 在1.9 版本中的提案,計劃在 Dapr Runtime 中元件採用 外部 gRPC 元件: https://github.com/dapr/dapr/issues/3787 ,針對這個 gRPC元件 有一個 具體實現方面的 提案 https://github.com/dapr/dapr/issues/4925 。 昨天剛批准了其中的 PR https://github.com/dapr/dapr/pull/5102 的合併。 從這個提案的實現 可以很好的解決2022年9月3日 Dapr 中文社群舉辦的 Dapr 開發者日 在圓桌討論環節 幾位嘉賓所擔心的 Dapr 的後續發展問題,這意味著我們可以使用各種語言來擴充套件Dapr 了。

下面我們一起來看一看這個完成 狀態儲存可插拔元件 PR https://github.com/dapr/dapr/pull/5102 的內容,首先其中提到了當前已經有3個參考實現程式碼庫:

  1. .NET: https://github.com/mcandeia/DaprPluggableComponentSDK.NET/tree/fix/service-lifecycle
  2. Java: https://github.com/tmacam/DaprPluggableComponent-Java
  3. Go: https://github.com/mcandeia/dapr-components-go-sdk  

您所需要的只是一個應用程式,它偵聽 預設的特定於元件 的unix domain socket,該應用程式響應Dapr 在 狀態儲存服務 中定義的gRPC呼叫。Dapr 將為一組語言提供 SDK(可能從 .NET、Java 和 Go 開始),可插入元件的實現將與在compontents-contrib執行的操作幾乎相同,幾乎沒有細微差別。

效能是 .NET 和 gRPC 的一個重要特性,而 .NET 6/7 比以往任何時候都快,下面這張圖是來自 .NET 5 中的 gRPC 效能改進 。這是一個節省資金、減少能耗和構建更環保的雲原生應用程式的機會, 我們可以採用.NET 來擴充套件Dapr 了。