dapr/dapr

GitHub: dapr/dapr

一个 CNCF 毕业的便携式分布式应用运行时,通过 sidecar 架构为微服务提供开箱即用的构建块 API。

Stars: 25557 | Forks: 2050

APIs for Building Secure and Reliable Microservices

[![Go 报告](https://goreportcard.com/badge/github.com/dapr/dapr)][go-report-url] [![OpenSSF](https://www.bestpractices.dev/projects/5044/badge)][openssf-url] [![Docker 拉取](https://img.shields.io/docker/pulls/daprio/daprd?style=flat&logo=docker)][docker-url] [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9e49cae395200854.svg)][actions-url] [![测试状态](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/dapr-bot/14e974e8fd6c6eab03a2475beb1d547a/raw/dapr-test-badge.json)][e2e-url] [![代码覆盖率](https://codecov.io/gh/dapr/dapr/branch/master/graph/badge.svg)][codecov-url] [![许可证: Apache 2.0](https://img.shields.io/github/license/dapr/dapr?style=flat&label=License&logo=github)][apache-url] [![FOSSA 状态](https://app.fossa.com/api/projects/custom%2B162%2Fgithub.com%2Fdapr%2Fdapr.svg?type=shield)][fossa-url] [![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/dapr/dapr)][todo-url] [![Good First Issues][gfi-badge]][gfi-url] [![discord](https://img.shields.io/discord/778680217417809931?label=Discord&style=flat&logo=discord)][discord-url] [![YouTube][youtube-badge]][youtube-link] [![Bluesky][bluesky-badge]][bluesky-link] [![X/Twitter][x-badge]][x-link] Dapr 是一组集成的 API,具有内置的最佳实践和模式,用于构建分布式应用程序。Dapr 通过开箱即用的功能(如 workflow、pub/sub、状态管理、密钥存储、外部配置、bindings、actors、分布式锁和加密)将开发人员的生产力提高 20-40%。您可以从内置的安全性、可靠性和可观测性功能中受益,因此无需编写样板代码即可实现生产就绪的应用程序。 借助 Dapr(一个 CNCF 毕业项目),平台团队可以配置复杂的设置,同时向应用程序开发团队公开简单的接口,使他们更容易构建高度可扩展的分布式应用程序。许多平台团队已采用 Dapr,为基于 API 的基础设施交互提供治理和黄金路径。 ![Dapr 概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/287564b23e200856.png) 我们是云原生计算基金会 (CNCF) 的毕业项目。

## 目标 - 使使用*任何*语言或框架的开发人员能够编写分布式应用程序 - 通过提供最佳实践构建块,解决开发人员在构建微服务应用程序时面临的难题 - 社区驱动、开放且供应商中立 - 获取新的贡献者 - 通过开放 API 提供一致性和可移植性 - 跨云和边缘的平台无关性 - 拥抱可扩展性并提供无供应商锁定的可插拔组件 - 通过高性能和轻量级特性支持 IoT 和边缘场景 - 可从现有代码增量采用,无运行时依赖 ## 工作原理 Dapr 将 sidecar(容器或进程)注入到每个计算单元中。Sidecar 与事件触发器交互,并通过标准 HTTP 或 gRPC 协议与计算单元通信。这使 Dapr 能够支持所有现有和未来的编程语言,而无需您导入框架或库。 Dapr 通过标准 HTTP 动词或 gRPC 接口提供内置的状态管理、可靠消息传递(至少一次交付)、触发器和绑定。这允许您按照相同的编程范式编写无状态、有状态和类似 actor 的服务。您可以自由选择一致性模型、线程模型和消息传递模式。 Dapr 在 Kubernetes 上原生运行,可以作为自托管二进制文件在您的机器上、IoT 设备上运行,或者作为可以注入云中或本地任何系统的容器运行。 Dapr 使用可插拔的组件状态存储和消息总线(如 Redis)以及 gRPC 来提供广泛的通信方法,包括使用 gRPC 的直接 dapr-to-dapr 通信,以及具有保证交付和至少一次语义的异步 Pub-Sub。 ## 为什么选择 Dapr? 编写高性能、可扩展且可靠的分布式应用程序很难。Dapr 为您带来了经过验证的模式和实践。它将事件驱动和 actor 语义统一到一个简单、一致的编程模型中。它支持所有编程语言,没有框架锁定。您不会接触到低级原语,如线程、并发控制、分区和扩展。相反,您可以通过使用您熟悉的 Web 框架实现一个简单的 Web 服务器来编写代码。 Dapr 在线程和状态一致性模型方面非常灵活。如果您选择,您可以利用多线程,并且可以在不同的一致性模型中进行选择。这种灵活性使您能够实施没有人为限制的高级场景。Dapr 的独特之处在于,您可以在平台和底层实现之间无缝过渡,而无需重写代码。 ## 特性 * 具有可插拔提供者和至少一次语义的事件驱动 Pub-Sub 系统 * 具有可插拔提供者的输入和输出绑定 * 具有可插拔数据存储的状态管理 * 一致的服务到服务发现和调用 * 可选的有状态模型:强/最终一致性,先写/后写获胜 * 跨平台虚拟 actors * 密钥管理,用于从安全的密钥保管库检索密钥 * 速率限制 * 内置 [可观测性](https://docs.dapr.io/concepts/observability-concept/) 支持 * 使用专用 Operator 和 CRDs 在 Kubernetes 上原生运行 * 通过 HTTP 和 gRPC 支持所有编程语言 * 来自 Azure、AWS、GCP 的多云、开放组件(bindings、pub-sub、state) * 可在任何地方运行,作为进程或容器化 * 轻量级(二进制文件 58MB,物理内存 4MB) * 作为 sidecar 运行 - 消除对特殊 SDK 或库的需求 * 专用 CLI - 开发人员友好的体验,易于调试 * 支持 Java、.NET Core、Go、Javascript、Python、Rust 和 C++ 的客户端 ## 开始使用 Dapr 请参阅我们文档中的[入门](https://docs.dapr.io/getting-started/)指南。 ## 快速入门和示例 * 请参阅 [快速入门仓库](https://github.com/dapr/quickstarts) 获取代码示例,以帮助您开始使用 Dapr。 * 在 Dapr [示例仓库](https://github.com/dapr/samples)中探索更多示例。 ### 视频和播客 我们有各种各样的主题演讲、播客和演示文稿可供参考和学习。 📺 访问 https://docs.dapr.io/contributing/presentations/ 查看以前的演讲和幻灯片,或访问我们的 YouTube 频道 https://www.youtube.com/@DaprDev/videos。 ## 仓库 | 仓库 | 描述 | |:-----|:------------| | [Dapr](https://github.com/dapr/dapr) | 您当前所在的主仓库。包含 Dapr 运行时代码和概览文档。 | [CLI](https://github.com/dapr/cli) | Dapr CLI 允许您在本地开发机器或 Kubernetes 集群上设置 Dapr,提供调试支持,启动和管理 Dapr 实例。 | [Docs](https://docs.dapr.io) | Dapr 的文档。 | [Quickstarts](https://github.com/dapr/quickstarts) | 此仓库包含一系列简单的代码示例,重点介绍了 Dapr 的主要功能。 | [Samples](https://github.com/dapr/samples) | 此仓库包含社区维护的各种 Dapr 用例示例。 | [Components-contrib ](https://github.com/dapr/components-contrib) | Components contrib 的目的是提供开放的、社区驱动的可重用组件,用于构建分布式应用程序。 | [Dashboard ](https://github.com/dapr/dashboard) | Dapr 的通用仪表板 | [Go-sdk](https://github.com/dapr/go-sdk) | Dapr SDK for Go | [Java-sdk](https://github.com/dapr/java-sdk) | Dapr SDK for Java | [JS-sdk](https://github.com/dapr/js-sdk) | Dapr SDK for JavaScript | [Python-sdk](https://github.com/dapr/python-sdk) | Dapr SDK for Python | [Dotnet-sdk](https://github.com/dapr/dotnet-sdk) | Dapr SDK for .NET | [Rust-sdk](https://github.com/dapr/rust-sdk) | Dapr SDK for Rust | [Cpp-sdk](https://github.com/dapr/cpp-sdk) | Dapr SDK for C++ | [PHP-sdk](https://github.com/dapr/php-sdk) | Dapr SDK for PHP ## 行为准则 请参阅我们的 [Dapr 社区行为准则](https://github.com/dapr/community/blob/master/CODE-OF-CONDUCT.md)
标签:Actor模型, API网关, API集成, CNCF, Docker, EVTX分析, Go, JSONLines, Python工具, Ruby工具, web渗透, 中间件, 事件驱动架构, 分布式系统, 分布式锁, 发布订阅, 可观测性, 响应大小分析, 子域名突变, 安全防御评估, 工作流编排, 搜索引擎查询, 日志审计, 最佳实践, 服务调用, 状态管理, 现代应用开发, 请求拦截, 边缘计算, 运行时, 零信任