Dapr v1.17 现已发布,这是一次功能丰富、性能显著提升的重大发布。除了核心的工作流版本管理和批量发布/订阅 API 正式稳定外,还在可观测性、运维效率、组件生态和 SDK 能力上做了大量增强。以下是基于官方博客的详细中文总结,涵盖所有主要更新点。
核心工作流增强
1. 工作流版本管理
这是 v1.17 的头号特性,解决了生产环境中长期运行工作流的无损升级难题。提供了两种互补策略:
-
命名版本(Named Versions):允许为同一工作流注册多个独立版本(如 OrderProcessorV1、OrderProcessorV2)。新实例自动使用最新版本,而已在运行的旧实例仍按原始版本代码继续执行。适用于架构大幅重构的场景。
-
补丁(Patching):在同一个工作流定义中引入条件代码分支。通过 ctx.IsPatched("补丁名") 判断,新实例走新逻辑,回放中的旧实例走老逻辑。适用于较小的增量变更,避免代码重复。
SDK 支持已在 Go、Python、.NET 和 Java 中实现。
2. 工作流状态保留策略
现在可以精细控制工作流执行历史在状态存储中的保留时间。通过配置 Configuration CRD 实现:
spec:
workflow:
stateRetentionPolicy:
anyTerminal: "360h" # 任何终态默认保留15天
completed: "1m" # 成功状态仅保留1分钟
failed: "720h" # 失败状态保留30天
terminated: "360h" # 终止状态保留15天
运维技巧:常见做法是成功的工作流保留短时间以节省存储,失败/终止的保留长时间用于排查。
3. 工作流性能与追踪
核心组件与服务改进
1. Placement 服务韧性升级
-
三阶段更新:Placement 表更新采用 锁定 → 更新 → 解锁 严格顺序,彻底消除多副本并发时部分 Sidecar 读取到过期路由数据的风险。
-
高抖动下的稳定:优化了客户端快速连接/断开事件的处理,防止滚动更新或自动扩缩容时发生更新停滞。
-
快速断连检测:一旦客户端流断开,Placement 服务立即响应,减少“幽灵成员”现象,缩短集群收敛时间。
2. CLI 运维命令强化
新增两个命令族,大幅提升日常管理和故障排查效率:
性能可观测性
新增性能图表目录tests/perf/report/charts,按 API 和 Dapr 版本组织,包含持续时间分解、吞吐量、尾延迟、资源使用等可视化图表。开发者可以直观对比不同版本或不同运行之间的性能差异。
性能对比示例(基于特定测试场景):
![]()
API 稳定与增强
1. 批量发布/订阅 API 正式稳定 (Stable)
经过多个版本的 Alpha 测试,Bulk Pub/Sub 现已生产就绪。
2. Conversation API 功能补全
专为 AI 应用设计的 Conversation API 得到大幅增强:
-
工具/函数调用:全面支持并经过 Ollama 等组件的测试。
-
提示缓存(Prompt Caching):新增可配置 TTL 的缓存,提升效率。
-
超时控制:可通过 Resiliency 策略配置请求超时。
-
响应格式化:支持为下游处理器指定输出格式。
-
扩展元数据:响应中返回 token 用量、模型名称等信息,便于成本追踪和观测。
组件生态更新
1. 通用改进
-
AWS SDK 升级:所有 AWS 相关组件(Secrets Manager、Parameter Store、Bedrock、SES、SNS、SQS、DynamoDB、Kinesis 等)均升级至 AWS SDK v2,清理了 v1 依赖。
-
状态组件 KeysLike API:所有状态存储组件支持使用 SQL LIKE 通配符模式列出键(如 "prefix%")。
-
SQL Server 状态组件 v2:新版本原生支持工作流,解决了旧版本兼容性问题。
2. 消息与流式组件
3. 绑定与存储
4. 新增组件
本次发布新增以下组件(具体名称未在博客中列出,但从 Issues 看可能包括 state.ravendb、openbao 等,需查阅完整组件列表):
SDK 语言更新
1、.NET SDK
-
工作流包重构:Dapr.Workflow 完全重写,移除对 DurableTask 的依赖,原生支持多应用工作流、任务执行标识、两种版本管理策略。
-
.NET 10 支持:新增对 .NET 10 的官方支持,同时继续支持 .NET 8/9。
-
测试容器支持:通过 Dapr.Testcontainers 包,可在集成测试中轻松启动 Dapr 环境。
-
Conversation API 更新:支持 token 用量、响应结构、缓存时长等最新运行时能力。
2、Go SDK
-
Actor 提醒失败策略:支持为 Actor Reminder 配置失败重试行为。
-
批量发布 API 稳定:默认使用稳定版 BulkPublish API。
-
工作流客户端变更:移除了封装的 Workflow 客户端,推荐直接使用上游 durabletask-go 客户端。
3、Python SDK
4、Java SDK
-
Spring Boot 4 支持:因 Spring Boot 3 将于 2026-06-30 停止支持,新增 Spring Boot 4 兼容性。
-
工作流版本管理:与其它 SDK 同步支持两种版本管理。
-
Actor 提醒失败策略:支持配置失败策略。
-
Conversation API 更新:同步 token 用量、响应格式等新字段。
-
OpenFeign 集成:新增 OpenFeign 客户端用于服务调用。
-
原生编译支持:为 GraalVM 原生镜像提供支持。
重要问题修复摘要
1、运行时(Runtime)
-
Actor:修复了初始化时机问题,确保应用通道就绪后再激活 Actor;修复了反激活时的 panic。
-
工作流:修复了状态删除后的处理、死循环、日志风暴、提醒关联等问题;新增强制清理功能。
-
Placement:修复了高并发下的 dissemination 锁死、成员移除缺失、双锁等问题。
-
Scheduler:修复了非优雅网络中断时的连接问题、命名空间删除后的作业残留、DNS 名称错误。
-
注入器:当 Scheduler 禁用时,不再要求 Scheduler StatefulSet;修复了补丁日志/指标记录问题。
-
安全:更新了多个依赖(x/net/crypto、jose2go、docker、etcd 等),修复了高安全漏洞;加强了对 Actor 类型的授权检查。
-
可观测性:修复了 OpenTelemetry 资源检测的环境变量问题;为工作流失败添加了堆栈跟踪。
2、CLI
3、组件层
弃用通知
Alpha 批量 Pub/Sub API:所有带 alpha1 的批量发布/订阅 API(包括 HTTP 路径、gRPC 方法、应用回调)现已弃用。请迁移至稳定版 API(/v1.0/publish/bulk/...、BulkPublishEvent、OnBulkTopicEvent)。v1.17 中仍会提供向后兼容并记录警告。