The documentation you are viewing is for Dapr v1.8 which is an older version of Dapr. For up-to-date documentation, see the latest version.

常见问题及解答

关于 Dapr 的常见问题

Dapr 与 Istio 、Linkerd 或 OSM 等服务网格相比如何?

Dapr 不是一个服务网格。 虽然服务网侧重于细粒度网络控制,但 Dapr 专注于帮助开发人员构建分布式应用程序。 Dapr 和服务网都使用 sidecar 模式,并随应用程序一起运行,它们确实具有一些重叠的功能,但也提供独特的优势。 欲了解更多信息,请阅读 Dapr & 服务网格 概念页面。

性能基准

Dapr项目的重点是性能,因为其固有的讨论是Dapr作为您的应用程序的侧面。 请参阅 这里 以获取最新的性能数字。

Actors

Dapr,Orleans 和 Service Fabric Reliable Actors之间的关系是什么?

Dapr 中的Actors基于同一个虚拟Actor概念, Orleans ,简单来说,当被调用时就会被激活,一段时间后就会被停用。 如果您熟悉Orleans,那你就会很熟悉Dapr中 C# 的actor。 Dapr C# Actors 基于 Service Fabric Reliable Actors (也来自Orleans) ,使您能够在 Service Fabric 中使用 Reliable Actors ,并将其迁移到其他托管平台,例如 Kubernetes 或其他本地环境。 Dapr 不仅仅是Actors。 它为您提供了一套最佳实践构建模块,以构建到任何微服务应用程序中。 请参阅 Dapr 概述

Actor 框架与 Dapr 之间的差异

虚拟 actors 功能是 Dapr 在其运行时提供的构建块之一。 对于 Dapr,因为它使用 http/gRPC API 对语言无关,因此可以从任何语言调用actors。 这允许用一种语言编写的actors调用以不同语言编写的actors。

创建一个新的actor遵循本地调用,如http://localhost:3500/v1.0/actors/<actorType>/<actorId>/…, 比如 http://localhost:3500/v1.0/actors/myactor/50/method/getData ,就是在新创建的 id 等于 50myactor 的 actor 上调用 getData 方法。

Dapr 运行时 SDK 具有特定于语言的 actor 框架。 例如, .NET SDK 具有 C# Actors。 目标是所有 Dapr 语言 SDK 都具有Actor架。 当前 .NET, Java 和 Python SDK 具有Actor框架。

开发者语言 SDK 和框架

如果我想使用特定的编程语言或框架,Dapr是否有任何语言的SDK?

为了使不同语言使用 Dapr 更加自然,它包括 特定语言的 SDK 用于 Go、Java、JavaScript、.NET、Python、PHP、Rust 和C++。

这些 SDK 通过类型化的语言 API 而不是通过调用 API 来使用 Dapr 构建块中的功能,例如,保存状态,发布事件或创建Actor。 这使您能够以自己选择的语言编写无状态和有状态功能和 actors 的组合。 由于这些 SDK 共享 Dapr 运行时,因此您可以获得跨语言 actor 和功能支持。

Dapr 集成了哪些框架?

Dapr 可以与任何开发者框架集成。 例如,在 Dapr .NET SDK 中,您可以与 ASP.NET Core集成,它带来了有状态的路由控制器来响应来自其他服务的 pub/sub 事件。

Dapr 集成了以下框架: