编辑器内调试遥测参考体系结构
该参考体系结构侧重于开发阶段和少量用户,它从游戏会话中收集数据,以及在游戏引擎中直接显示这些数据,在本例中,游戏引擎为 Unreal 引擎 4 或 Unity 引擎。 它提供最快的响应时间,因此您的开发和 QA 团队不必等着从测试会话中获得结果。
本文介绍 GitHub 上的此示例中使用的体系结构。 请注意,此参考体系结构中的代码只是一个指南示例,在用于生产环境之前,可能还有需要优化的地方。
体系结构关系图
相关服务
- Azure 事件中心 - 已选择,因为这是一种为分析管道定制的服务,并且易于使用,几乎不需要配置或几乎无管理开销。 它能够实时接收和处理事件。
- Azure Functions - 已选择,因为我们想要使用简单的身份验证机制,以及自定义处理和查询数据的方式。
- Azure Cosmos DB - 已选择,为了能够以更高的引入速率扩展和存储数据。
分步操作
引入数据
- 从设备客户端调用 Azure Function,从而发送遥测数据。
- 验证这些数据并将其转发到 Azure 事件中心。
- Azure 事件中心触发另一个 Azure Function,它将这些数据转换为单独的 Azure Cosmos DB 文档。
- 从 Azure Function 目标,将一个新文档添加到具有遥测数据的 Azure Cosmos DB 数据库。
查看数据
- 在游戏引擎内将生成一个查询,该查询将被发送到 Azure Function,后者会将其转换为 Azure Cosmos DB 查询。
- 这些数据从 Azure Cosmos DB 中提取,然后返回到游戏引擎,以实现可视化。
提示
如果您正考虑在仪表板中对可视化数据,则将 Azure Cosmos DB 数据库连接到 Power BI。
部署模板
单击下面的按钮,将项目部署到您的 Azure 订阅:
此操作将触发模板部署,即系统会将 telemetry_server.deployment.json ARM 模板文件部署到您的 Azure 订阅,从而创建必要的 Azure 资源。 这可能会在您的 Azure 帐户中产生相应费用。
请查看一般指南文档,其中有一部分概述了 Azure 服务的命名规则和限制。
备注
如果您对 ARM 模板的工作原理感兴趣,请参阅此参考体系结构中使用的每个不同服务对应的 Azure 资源管理器模板文档:
提示
要在本地运行 Azure Functions,请使用这些相同的应用设置更新 local.settings.json 文件。
实现详细信息
单个 Azure Function 应用应包含以上显示的所有函数,并可共享相同的托管计划。
引入函数
- 验证传入的遥测有效负载
- 将这些数据转换为预计用于数据管道下一阶段的格式
- 将这些数据发送到 Azure 事件中心
- 如果 Azure 事件中心接受了这些数据,则返回 202
事件中心触发器函数
- 读取事件数据有效负载
- 为每个事件创建单个 Azure Cosmos DB 文档
- 将这些文档上传到 Azure Cosmos DB
查询函数
- 分析客户端生成的查询
- 生成 Azure Cosmos DB SQL 格式的查询
- 将结果包装在 JSON 对象中,并将它们返回给客户端
选择适合您需求的定价计划将取决于所使用的遥测服务量,以及在同一 Azure Function 应用中正在运行的其他内容。
优化注意事项
您可以使用 Azure Cosmos DB TTL(生存时间) 使自动存储在 Azure Cosmos DB 中的旧数据过期,从而设置将清除已存储文档的时间范围。
为减少 HTTP 开销,应在客户端上对发送到引入 Azure Function的事件进行批处理。 如果这些批处理很大,则考虑使用客户端压缩。
提示
传输到事件中心之前在服务器端压缩这些批量可帮助降低吞吐量单元的成本。 如果多个服务正在消耗这些事件,或者在同一命名空间中有其他事件中心,这尤其有帮助。
其他资源和示例
- 用于多人在线游戏的大型数据参考体系结构和实现
- 在 Azure Functions 上每秒处理 100,000 个事件
- Azure Functions 中的可靠事件处理(如何避免丢失消息)
- 使用 Azure Functions 进行的按顺序事件处理
高级流式聚合支持
如果要查找现成的窗口化支持,这意味着需要执行基于集的计算(聚合),或者需要对在某段时间内的事件子集执行其他操作,则应考虑利用 Azure 流分析 来替换将 Azure 事件中心连接到 Azure Cosmos DB 的 Azure Function。
Azure 流分析可用于在事件流中添加高级聚合方案。 例如,无状态的 Azure Functions 不本机支持对事件流进行窗口化。
定价
如果您没有 Azure 订阅,可以创建免费帐户,开始使用 12 个月的免费服务。 除非您超出这些服务的使用限制,否则无需为 Azure 免费帐户中包含的这些免费服务付费。 了解如何通过 Azure 门户或使用情况文件查看服务使用情况。
您需要承担运行这些参考体系结构时所使用的 Azure 服务的费用。 总金额将因使用情况而异。 请参阅参考体系结构中使用的每项服务的定价网页:
您还可以使用 Azure 定价计算器以配置和估算您计划使用的 Azure 服务的成本。 价格是估计值,不会用作实际的报价单。 实际价格可能会有所不同,具体取决于购买日期、支付货币,以及您与 Microsoft 之间的协议类型。 有关定价的其他信息,请联系 Microsoft 销售代表。
请参阅本指南,本指南有望简化 Azure 定价计算器中的设置与您游戏标题中遥测实现的关联方式。