请按照本指南了解使用 Data Manager API 时的限制和配额。
项目数量限制
您需要有一个 Google Cloud 项目才能使用 Data Manager API。Google Cloud 项目提供您用于对 API 请求进行身份验证的 OAuth 客户端和凭据。
Data Manager API 会对每个 Google Cloud 项目实施速率限制,并按服务和操作类型(读取与更改)进行区分:
| 服务 | 操作 | 每日请求数 | 每分钟请求数 |
|---|---|---|---|
IngestionService |
更改(写入) | 100000 | 300 |
IngestionService |
读取 | 100000 | 300 |
| 所有其他服务 | Mutate(写入) | 5 万 | 300 |
| 所有其他服务 | 读取 | 5 万 | 300 |
超出限制的请求会被拒绝,并返回错误 RESOURCE_EXHAUSTED 和 HTTP 状态 429 Too Many Requests。
您可以通过主动减少请求数量和从客户端限制 QPS 来控制应用并缓解速率限制。您还可以在 Google Cloud 控制台中设置配额提醒和监控,以便在应用达到限制之前收到通知。
配额名称
每个限制都对应于 Google Cloud 中的配额限制名称和指标。当请求超出限制时,Data Manager API 会在 metadata.quota_limit 下的 ErrorInfo 标准详细信息载荷中返回配额限制名称:
| 配额限制名称 | 服务 | 操作 | 窗口 | 限制 |
|---|---|---|---|---|
IngestionMutateRequestsPerDayPerProject |
IngestionService |
mutate | 日 | 100000 |
IngestionMutateRequestsPerMinutePerProject |
IngestionService |
mutate | 分钟 | 300 |
IngestionReadRequestsPerDayPerProject |
IngestionService |
读取 | 日 | 100000 |
IngestionReadRequestsPerMinutePerProject |
IngestionService |
读取 | 分钟 | 300 |
ManagementMutateRequestsPerDayPerProject |
所有其他服务 | mutate | 日 | 5 万 |
ManagementMutateRequestsPerMinutePerProject |
所有其他服务 | mutate | 分钟 | 300 |
ManagementReadRequestsPerDayPerProject |
所有其他服务 | 读取 | 日 | 5 万 |
ManagementReadRequestsPerMinutePerProject |
所有其他服务 | 读取 | 分钟 | 300 |
检查 ErrorInfo 载荷中的 metadata.quota_limit,以区分每日限制错误和每分钟限制错误,并确定是暂时暂停并使用退避算法重试,还是暂停到每日配额重置。如需了解详情,请参阅配额和速率限制错误。
处理速率限制和并发
如需在不超出项目配额的情况下最大限度地提高吞吐量,请遵循以下准则:
每个请求的批量记录数:在每个请求中包含尽可能多的记录,最多不超过请求限制(每个请求最多 10,000 个
AudienceMember资源或 2,000 个Event资源)。最多发送 10 个并发请求:为了在不超过每分钟 300 个请求的限制的情况下缩短总提取时间,最多向
IngestionService发送 10 个并发请求。使用退避算法重试每分钟速率限制:如果请求失败并显示
RESOURCE_EXHAUSTED(HTTP429),并且metadata.quota_limit指示每分钟限制(例如IngestionMutateRequestsPerMinutePerProject),请使用带抖动的指数退避算法重试(例如,在重试之间等待 1 秒、2 秒和 4 秒)。在每日配额用尽时暂停:如果
metadata.quota_limit指示每日限额(例如IngestionMutateRequestsPerDayPerProject),请勿立即重试。暂停请求,直到每日配额在美国太平洋时间午夜重置。
请求限制
以下是特定请求的限制:
IngestAudienceMembersRequest和RemoveAudienceMembersRequest:audience_members列表中有 10,000 个AudienceMember资源AudienceMember的UserData中有 10 个用户标识符destinations列表中的 10 个Destination资源
RemoveAllAudienceMembersRequest:destinations列表中的 10 个Destination资源
-
events列表中的 2,000 个Event资源Event的UserData中有 10 个用户标识符destinations列表中的 10 个Destination资源