如果您是现有的 TURN 服务提供商,但希望切换为向您的客户提供 Cloudflare Realtime TURN,这里有一些注意事项。
Cloudflare Realtime TURN 服务可以降低与 TURN 服务器相关的有形和无形成本:
- 服务器成本(AWS EC2 等)
- 带宽成本(出网流量、负载均衡等)
- 设置 TURN 流程和维护服务器的时间与精力
- 扩容和缩容服务器
- 维护具有安全和功能更新的 TURN 服务器
- 保持高可用性
当大规模使用 Cloudflare Realtime TURN 服务时,请考虑使用 TURN 密钥隔离诸如“测试”(testing)、“暂存”(staging)或“生产”(production)等环境。您可以在您的账户中最多创建 1,000 个 TURN 密钥,这些密钥可用于生成终端用户凭据。
使用特定的 TURN 密钥可以创建的终端用户凭据的数量没有限制。
Cloudflare Realtime TURN 服务允许您在生成凭据时使用自定义标识符标记每个凭据,如下所示:
curl https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/generate \
--header "Authorization: Bearer $TURN_KEY_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{"ttl": 864000, "customIdentifier": "user4523958"}'使用此字段可聚合特定用户或用户组的用量并收集分析数据。
您可以使用 GraphQL 分析 API 监控整个账户的使用情况。这对于跟踪账单总用量、观察异常变化很有用。您可以在应用各种过滤器的同时,从 TURN 分析中获取时间序列数据。
如果您与终端用户共享 TURN 凭据,则可能会发生凭据滥用。您可以通过使用自定义标识符标记每个凭据,并在您的应用程序中通过 GraphQL 分析 API 监控用量前几名的自定义标识符,从而监控滥用行为。
在您的应用程序中对 TURN 使用量进行计费时,了解并考虑到 TURN 分析中的自适应采样至关重要。该系统采用自适应采样来高效处理大型数据集,同时保持准确性。
TURN 分析中的采样过程在两个级别上工作:
- 数据收集时:如果使用数据点生成速度过快,则可能会被采样。
- 查询时:如果查询过于复杂或涵盖较大的时间范围,可能会发生额外的采样。
为了确保准确的计费,请编写单个查询来汇总每个客户在每个时间段的 TURN 使用量,并返回单个值。避免使用同时列出多个客户使用情况的查询。
通过遵循这些指南并理解 TURN 分析如何处理采样,您可以根据终端用户的 TURN 使用情况确保为他们提供更准确的计费。
query{
viewer {
usage: accounts(filter: { accountTag: "8846293bd06d1af8c106d89ec1454fe6" }) {
callsTurnUsageAdaptiveGroups(
filter: {
datetimeMinute_gt: "2024-07-15T02:07:07Z"
datetimeMinute_lt: "2024-08-10T02:07:05Z"
}
limit: 100
orderBy: [customIdentifier_ASC]
) {
dimensions {
customIdentifier
}
sum {
egressBytes
}
}
}
}
}以下是仅查询单个客户使用情况的查询。
query{
viewer {
usage: accounts(filter: { accountTag: "8846293bd06d1af8c106d89ec1454fe6" }) {
callsTurnUsageAdaptiveGroups(
filter: {
datetimeMinute_gt: "2024-07-15T02:07:07Z"
datetimeMinute_lt: "2024-08-10T02:07:05Z"
customIdentifier: "myCustomer1111"
}
limit: 1
orderBy: [customIdentifier_ASC]
) {
dimensions {
customIdentifier
}
sum {
egressBytes
}
}
}
}
}