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个参考实现代码库:
- .NET: https://github.com/mcandeia/DaprPluggableComponentSDK.NET/tree/fix/service-lifecycle
- Java: https://github.com/tmacam/DaprPluggableComponent-Java
- 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 了。