Cloud Telemetry Simulation

软件定义车辆 (SDV) 遥测云模拟平台提供可扩缩的按需基础架构,可在 Google Cloud 上运行车辆遥测模拟。

该系统可让您在虚拟 Android Automotive 环境 (Cuttlefish) 中模拟遥测广告系列,而无需使用实体硬件。它通过接收请求、创建临时 Compute Engine 虚拟机 (VM)、在 Docker 容器内运行模拟、收集结果并将其上传到 Cloud Storage 以及删除资源来编排模拟生命周期。

这种方法可提供经济高效且高度可扩缩的平台来测试遥测流水线,因为只有在执行模拟期间才会消耗资源。

用途和功能

系统可编排模拟生命周期并抽象化底层基础架构管理。

  • 按需扩缩:系统仅在模拟期间创建资源(Compute Engine 虚拟机),以提供基于使用情况的费用。
  • 并发管理:系统会对并行模拟的数量强制执行可配置的限制(例如,默认值为 5)。它会将过多的请求排入队列,并在有可用槽时自动安排这些请求。
  • 事件驱动型架构:该系统使用 Cloud FunctionsPub/Sub 来实现解耦且弹性的工作流编排,其中包括请求处理、调度、最终确定和清理。
  • 集成式状态管理:系统使用 Firestore 数据库来跟踪每个模拟的实时状态和配置(例如 PENDINGRUNNINGCOMPLETEDFAILED)。
  • 制品管理:系统会自动处理所需输入文件的下载,并将所有模拟输出(例如报告、日志、bug 报告和 Logcat 文件)上传到 Cloud Storage
  • 资源清理:自动化的 Cloud Scheduler 作业可通过清理孤立的虚拟机或数据库条目来防止资源泄露。

架构

该系统采用无服务器的事件驱动型架构,并使用多项 Google Cloud 服务。您可以使用 Web 界面或 REST API 与该系统进行交互。

  • 用户互动:您可以使用提供的 Web 演示应用、自定义应用,或直接与 API 端点互动。
  • 编排层
    • read-simulation:此函数可让您查询模拟、正在运行的虚拟机的数量以及配置的并发运行的虚拟机数量上限。
    • receive-request:系统会根据严格的图片指纹允许列表验证请求,并将请求发布到 Pub/Sub
    • schedule-simulationEventarc 根据 Pub/Sub 消息或 Firestore 更改触发此函数。它会检查并发限制并预配虚拟机。
    • finish-simulation:代理会在运行结束时调用此函数,以更新状态并触发清理。
    • delete-simulation:此函数用于处理手动取消和资源清理。
  • 状态管理 (Firestore)Firestore 数据库会跟踪每次模拟的状态(例如 PENDINGRUNNINGCOMPLETEDFAILED)和配置。此数据库存储所有模拟执行数据。
  • 数据存储 (Cloud Storage):系统会将所有与模拟相关的文件存储在 Cloud Storage 存储分区中。这包括输入配置文件、输出报告、来自 Cuttlefish 设备的日志、bug 报告和 Logcat 文件。
  • 执行层 (Compute Engine)
    • schedule-simulation 函数会为每次模拟创建一个 Compute Engine 虚拟机。该虚拟机会运行 simulation-agent Docker 容器。
    • simulation-agent 从 Cloud Storage 中提取输入文件,启动 SDV 实例,并管理与 Cuttlefish 虚拟设备的互动,以执行遥测模拟器并检索生成的数据。
  • 维护(Cloud Scheduler):定期运行的预定作业,用于清理任何孤立资源(例如失败的虚拟机或过时的数据库条目),以防止资源泄露。

后续步骤

如需开始使用 Cloud Telemetry Simulation,请参阅以下指南:

  • 部署指南:了解如何设置基础设施和构建模拟代理。
  • 用户指南:了解如何使用 Web 演示或 REST API 运行模拟。