简介

Dapr 源码 readme

Posted by ZhangX on 2020-09-11

介绍

官方文档地址

Dapr(Distributed Application Runtime) 是一个可移植的(portable)、事件驱动(event-driven)的运行时框架。开发者通过 Dapr 可以构建弹性、无状态、有状态的运行在云上和边缘的微服务。并且拥抱开发语言和开发框架的多样性。

Dapr 将构建微服务的最佳实践整理为开放、独立的构建块。因此,你可以选择开发语言和框架构建可移植的应用程序。每个构建块都是独立的,你可以在你的应用程序中使用它们中的一个、几个或者所有。


如何工作

Dapr 注入一个边车(side-car)(通过容器或者进程注入)到每一个计算单元。边车通过事件触发器交互,和计算单元通过 HTTP 或者 gRPC 协议通信。这使得 Dapr 支持现有和未来的开发语言而不需要你导入框架或者库。

Dapr 通过标准 HTTP 动词或者 gRPC 接口提供内建状态管理、可靠消息(至少一次投递)、触发器和绑定。这表示你可以遵循相同的编程范式写无状态、有状态和类似 Actor 模型的服务。你可以自由的选择一致性模型、线程模型和消息传递模式。

Dapr 在 K8S 上原生运行,作为自托管二进制文件在你的机器上、物联网设备上运行,或者做为一个容器注入到云或本地的任何系统中。

Dapr 使用可插拔组件状态存储和消息总线,例如:Redis、gRPC 以提供一系列通信方法,包括使用 gRPC 完成 dapr 到 dapr 的直接通信,异步 Pub-sub 以保证消息传递至少一次的语义。

为什么使用 Dapr

高性能、可扩展并且可靠的分布式应用是很困难的。而 Dapr 提供已经验证过的模式和实践方式。它把事件驱动和参与者语义统一成一个简单、一致的编程模型。它支持所有编程语言并且不限定编程框架。 你不必面对底层函数比如线程、并发控制、分区和缩放。事实上,你只需要选择一个你熟悉的 Web 框架实现一个简单的 Web 服务。

Dapr 在线程和状态一致性模型方面很灵活。 你可以选择多个线程,并且在不同的一致性模型中选择。这种灵活性使你可以实现高级使用场景而不需要人工约束。Dapr 是独一无二的,因为你可以在平台和基础实现之间无缝过渡,而无需重写代码。