ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Dapr v1.17 工作流性能测试报告解读:并发、延迟与吞吐的深度分析

Dapr v1.17 工作流性能测试报告解读:并发、延迟与吞吐的深度分析 Dapr v1.17 工作流性能测试报告解读并发、延迟与吞吐的深度分析【免费下载链接】daprDapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestration.项目地址: https://gitcode.com/GitHub_Trending/da/daprDapr 是一个面向云与边缘场景的可移植运行时将事件驱动架构与工作流编排能力融为一体。本文基于当前仓库中 v1.17.0 工作流性能测试报告 及其配套测试源码系统解读 Dapr Workflows 在各类并发模型与负载形态下的实测表现。读者读完将掌握如何阅读这些性能图表与指标VU、p50/p90/p95、throughput、五种测试场景各自验证了什么能力以及 Dapr 工作流运行时在高并发下的稳定性与可预测性表现。一、报告导读先学会正确阅读这些数字v1.17.0 的工作流性能报告README.md核心结论是在全部测试配置下Dapr 工作流实现了 100% 成功率、零 Pod 重启覆盖了从低并发30 VU到超高并发500 VU的完整区间。报告中的术语定义如下VUVirtual User同一时刻处于运行状态的并发工作流实例数即并发度。Iterations整个测试期间完成的工作流运行总次数。Duration 百分位p50/p90/p95单个工作流实例从开始到结束的耗时分布——p50 代表典型工作流的耗时p95 代表最慢的 5% 工作流的耗时。Throughputworkflows/sec整个运行期间每秒完成的工作流数量。理解 p90 与 p95 之间的差距至关重要差距越小说明延迟分布越紧凑系统在高并发下的执行时间越可预测无显著尾延迟。二、五种测试场景与六类图表在深入分析数据前先明确这些数字是如何产生的。测试基础设施位于 tests/perf/workflows/其中workflow_test.go 定义了全部测试用例以//go:build perf构建标签隔离test.js 是 k6 压测脚本负责按场景配置并发发送 HTTP 请求README.md 说明了测试计划与术语。报告中的每类测试均配有以下 6 类图表每张图都聚焦一个指标维度图表文件指标含义*_summary.png成功率、失败率、VU 数等整体摘要*_throughput.png每秒完成的工作流数迭代数与数据收发速率*_duration_breakdown.png/*_duration_low.png请求耗时与迭代耗时的分布*_tail_latency.png尾延迟表现*_resource_cpu.png/*_resource_memory.png应用与 Sidecar 的 CPU、内存占用*_data_volume.png数据量payloadheaders下面逐个场景解读实测数据。三、并行工作流110 VUFan-out/Fan-in 的稳定并发场景定义TestParallelWorkflowWithMaxVUs见 workflow_test.go运行sum_parallel_wf工作流——5 个活动并行执行结果由工作流聚合典型的 fan-out/fan-in 模式压测场景为t_110_440110 VU、440 次迭代。实测数据440 个工作流全部完成吞吐97.91 workflows/sec中位耗时1.06 sp901.27 sp951.31 s。解读当 110 个工作流同时运行、各自扇出并行活动时端到端典型完成时间为 1.06 秒。p90 与 p95 之间仅 0.04 秒的差距表明并发并未引入有意义的尾延迟——Dapr 处理并行扇出的一致性很好。sum_parallel_wf的定义与聚合逻辑可参见测试应用与 e2e 工作流测试tests/e2e/workflows/workflow_test.go。报告中该场景对应的图表为TestParallelWorkflowWithMaxVUs_*.png其中*_summary.png展示了 440 次迭代下接近 100% 的成功率与接近 0 的失败率参见 tests/perf/report/charts/v1.17.0/workflows/TestParallelWorkflowWithMaxVUs_summary.png。四、串行工作流350 VU极窄延迟带的确定性执行场景定义TestSeriesWorkflowWithMaxVUsworkflow_test.go运行sum_series_wf——5 个链式活动依次执行每个活动做数值计算并把结果回传给工作流压测场景为t_350_1400350 VU、1400 次迭代。实测数据1,400 个工作流全部完成吞吐57.43 workflows/sec中位6.06 sp906.19 sp956.22 s。解读串行工作流的活动逐个执行每增加一步都会累加总耗时因此 6 秒量级的绝对耗时远高于并行场景——这是串行语义的必然结果而非性能问题。关键在于 p90–p95 带宽仅 0.03 秒350 个工作流同时运行时单个实例的运行时长几乎完全一致说明 Dapr 工作流运行时在高并发串行执行下具备高度的时间确定性不受并发度波动影响。五、恒定 VU 重复运行30 VU × 3 轮运行间可复现性场景定义TestWorkflowWithConstantVUsworkflow_test.go对同一工作流sum_series_wf使用场景t_30_30030 VU、300 次迭代连续运行 3 次且不重启应用以验证重复运行的稳定性。实测数据3 轮取平均每轮约 300 个工作流吞吐约 28 workflows/sec中位约 1.04 sp95约 1.18 s。解读3 轮独立运行结果几乎一致说明吞吐与延迟在重复压测下没有衰减。这种可复现性对生产环境的容量规划与性能预测非常重要——你可以确信同一负载下每次运行的表现大致相同。注意该场景与TestWorkflowWithConstantIterations的区别前者不重启应用、连续跑 3 轮后者则在每轮之间重启应用以隔离状态见下文。六、恒定迭代数、递增并发30→60→90 VU并发扩展的影响场景定义TestWorkflowWithConstantIterationsworkflow_test.go保持总迭代数恒为 300将最大 VU 从 30 提升到 60、90场景依次为t_30_300、t_60_300、t_90_300并在每轮子测试前重启应用清空状态从而隔离并发度对延迟和资源的影响使总工作量相等时具备可比性。解读该场景回答的是同样的工作量并发拉高后延迟与资源占用如何变化。由于相同总量下并发越高、每轮运行时间越短吞吐随之提升而延迟分布参见TestWorkflowWithConstantIterations_avg_duration_comparison.png直接展示了不同 VU 下的耗时对比。结合报告结论100% 成功率、零重启可以确认在 30→90 VU 范围内Dapr 工作流运行时保持稳定。此场景的图表以_avg_前缀命名如TestWorkflowWithConstantIterations_avg_summary.png表示对多次运行取平均后的结果。七、大规模延迟工作流500 VU、10,000 次长耗时工作流的排队效应场景定义TestDelayWorkflowsAtScaleworkflow_test.go运行delay_wf工作流输入5000表示活动内延迟 5 秒压测场景为t_500_10000500 VU、10,000 次迭代——这是全部测试中并发度最高、总量最大的场景。实测数据10,000 个工作流全部完成吞吐35.45 workflows/sec中位11.11 sp9019.97 sp9529.94 s。解读在 500 个并发实例下Dapr 以每秒 35.45 个的速率持续完成了 10,000 次运行。p90–p95 带宽在此规模下显著变宽约 10 秒报告明确指出这反映的是自然的排队效应——个体工作流在被调度前可能短暂等待——但全程无一失败。也就是说宽尾延迟来自排队等待而非执行错误。该场景的吞吐图TestDelayWorkflowsAtScale_throughput.png顶部标注的 35.45 iterations/sec 正是这一吞吐量的可视化呈现。需要强调的是delay_wf的 5 秒延迟内置于活动本身因此中位 11.11 秒是排队时间 活动执行时间的综合结果不能与前面的sum_series_wf场景直接横向比较——它们验证的是不同问题前者验证调度能力后者验证执行效率。八、多负载工作流30 VU、三种 payload消息大小不敏感场景定义TestWorkflowWithDifferentPayloadsworkflow_test.go运行state_wf工作流其活动依次执行状态存储的写—读—删操作活动 1 将指定大小的数据写入状态存储活动 2 读回活动 3 删除工作流以数据大小作为输入向活动传递对应大小的字符串 payload。测试保持场景恒为t_30_300payload 分别为10,000 / 50,000 / 100,000 字节每轮之间重启应用。实测数据每轮约 300 个工作流吞吐约 8.92 workflows/sec中位约 3.27 sp95约 3.67 s。解读三种 payload 尺寸下中位与 p95 延迟保持稳定p95 带宽仅约 0.4 秒证实消息体积的变化不会对工作流执行时间产生有意义的影响。这也验证了 Dapr 工作流引擎在传递数据时的高效性——10 倍的数据量差距10 KB→100 KB没有带来延迟的等比例放大。测试结果表中会以%dKB格式输出有效 payload 大小见 workflow_test.go。九、测试如何执行从 k6 脚本到资源采集的完整链路为了让上述数字可复现理解测试的执行链路很有必要。整条链路如下1. 部署与被测对象。单一实例的perf-workflowsapp应用及其 Dapr Sidecar 部署在 Kubernetes 集群上应用与 Sidecar 的 CPU/内存 requests/limits 在TestMain中通过AppDescription的App*与Dapr*字段配置见 workflow_test.go例如 Dapr Sidecar 为CPU: 0.5/1.0、内存1Gi/2Gi应用为CPU: 1.0/2.0、内存1Gi/2Gi。此外还定义了 3 副本的 scaled 变体scaledReplicas 3用于多实例测试。2. 初始化工作流运行时。压测开始前测试会多次调用应用的/start-workflow-runtime端点初始化工作流运行时多副本场景下会调用scaledReplicas * 3次以确保所有实例均已就绪随后等待 5 秒再开始压测workflow_test.go。3. k6 发起负载。runk6test通过 test.js 执行压测根据SCENARIO环境变量选择预定义的场景配置t_30_300、t_350_1400、t_500_10000等均采用 k6 的shared-iterationsexecutor并向/run-workflow端点 POST 工作流名与输入。RATE_CHECK环境变量用于设置checks阈值如rate1即检查通过率必须为 100%不满足即判测试失败见 workflow_test.go。4. 采集资源与汇总。每轮运行后addTestResults采集应用与 Sidecar 的 CPU/内存占用及重启次数连同 k6 的延迟HTTP 请求耗时、等待耗时、迭代耗时与吞吐指标一并写入 summary 表workflow_test.go最终由 tests/perf/report/ 下的图表生成逻辑如 k6_charts.go、resource_charts.go输出为本文解读的 PNG 图表。5. 场景命名约定。t_VU_iterations格式贯穿所有测试t_30_300即 30 VU 与 300 次迭代。workflow_test.go 中的rateChecks全部为rate1意味着每个场景都以100% 检查通过率作为硬性验收门槛——这与报告开头100% success rate的结论互为印证。十、总结v1.17 工作流性能画像综合五个场景Dapr v1.17 工作流运行时的性能画像可以归纳为场景并发 (VU)总迭代吞吐 (wf/s)中位p95核心结论并行工作流11044097.911.06 s1.31 s扇出/扇入无显著尾延迟串行工作流3501,40057.436.06 s6.22 s极窄延迟带时间高度可预测恒定 VU3 轮30~900~28~1.04 s~1.18 s轮间结果一致可复现恒定迭代、递增 VU30/60/90300———同工作量下并发扩展稳定延迟工作流50010,00035.4511.11 s29.94 s大规模排队但零失败多 payload30~900~8.92~3.27 s~3.67 s对消息大小不敏感贯穿所有场景的共同特征100% 成功率、零 Pod 重启。无论是 110 VU 的并行扇出、350 VU 的串行链、500 VU 的长耗时排队还是 10 KB→100 KB 的 payload 变化Dapr 工作流运行时都保持了执行稳定性而 p90–p95 的紧凑分布并行 0.04 s、串行 0.03 s进一步表明Dapr 在给定并发规模内的执行时间是高度可预测的。这些测试均为当前仓库中的可复现实验完整的测试用例在 tests/perf/workflows/workflow_test.go压测脚本在 tests/perf/workflows/test.js各版本的完整图表目录位于 tests/perf/report/charts/含 v1.16.3 与 v1.17.0 两个版本可通过 tests/README.md 与 tests/docs/running-perf-tests.md 了解运行方式。如需对比历史版本v1.16.3 的报告位于 tests/perf/report/charts/v1.16.3/workflows/。【免费下载链接】daprDapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestration.项目地址: https://gitcode.com/GitHub_Trending/da/dapr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表