actor 性能激活

本文介绍了在 Kubernetes 上 Dapr 中 actor 的服务调用 API 的性能基准和资源使用情况。

系统概述

在 Dapr 中使用 actor 的应用程序需要考虑两个方面。首先,actor 调用的路由由 Dapr 的边车(sidecar)处理。其次,actor 的运行时在应用程序端实现和处理,这依赖于所使用的 SDK。目前,性能测试使用 Java SDK 在应用程序中提供 actor 运行时。

Kubernetes 组件

  • 边车(数据平面)
  • Placement(actor 所需,控制平面将 actor 类型映射到主机)
  • Operator(控制平面)
  • 边车注入器(控制平面)
  • Sentry(可选,控制平面)

Dapr v1.0 的性能总结

Dapr 边车中的 actor API 负责识别注册了特定 actor 类型的主机,并将请求路由到拥有该 actor ID 的合适主机。主机运行应用程序的一个实例,并使用 Dapr SDK(.Net、Java、Python 或 PHP)通过 HTTP 处理 actor 请求。

本次测试通过 Dapr 的 HTTP API 直接调用 actor。

有关更多信息,请参见 actor 概述

Kubernetes 性能测试设置

测试在一个由 3 个节点组成的 Kubernetes 集群上进行,使用普通硬件,每个节点配备 4 核 CPU 和 8GB RAM,没有网络加速。 设置包括一个负载测试器(Fortio)pod,其中注入了一个 Dapr 边车,调用服务 API 以访问不同节点上的 pod。

测试参数:

  • 每秒 500 个请求
  • 1 个副本
  • 持续 1 分钟
  • 边车限制为 0.5 vCPU
  • 启用 mTLS
  • 启用边车遥测(采样率为 0.1 的跟踪)
  • 空 JSON 对象的负载:{}

结果

  • 实际吞吐量约为 500 qps。
  • tp90 延迟约为 3ms。
  • tp99 延迟约为 6.2ms。
  • Dapr 应用程序消耗约 523m CPU 和约 304.7Mb 内存
  • Dapr 边车消耗 2m CPU 和约 18.2Mb 内存
  • 无应用程序重启
  • 无边车重启

相关链接