PlayFab 中的限制

当客户端尝试超过为特定 API 或 API 设置的 API 调用速率限制时,会发生限制。 这些限制是为了防止任何单个游戏中断其他人的 PlayFab 服务。

了解 PlayFab 限制

在大多数情况下,PlayFab 会根据请求的目标或请求影响的内容应用限制。 使用 API 针对某个玩家或使用该玩家特有的令牌更改某个玩家时,PlayFab 会选择适合该玩家的费率。 当请求使用特定于游戏的令牌而不面向玩家时,将选择一组适合游戏的不同限制。 这些限制高于单个玩家特定的令牌,因为与单个玩家相比,使用游戏令牌调用可能会影响更多玩家、实体或执行更多 PlayFab 操作。 PlayFab 还使用允许的请求桶限制在特定时间范围内可以发出的请求数。 大多数限制有两个存储桶:一个存储桶允许你在短时间内为突发方案发出更多请求,另一个存储桶允许你在较长的时间内为普通方案发出更少的请求。

限制算法摘要

  1. 通过首先在正文中查找(例如游戏玩家、游戏实体、主玩家或字符),标识 API 调用所针对的实体。
  2. 如果正文缺少明确的目标实体,请使用令牌类型(游戏玩家、主玩家或游戏)来确定限制。
  3. 如果任何限制存储桶已过期,请删除它们并创建新的空存储桶。 递增限制存储桶(突发和持续)计数,并检查调用是否超过任何限制存储桶。
  4. 如果超出限制,则返回 429 错误,直到有新的空存储桶可用之前的剩余秒数。

目标实体限制的优点

目标实体限制是一种机制,它基于目标实体的类型对某些操作强制实施限制。 这些限制有助于保持系统稳定性并防止滥用,从而为用户提供:

  • 每个玩家的一致限制:大规模扩展游戏不会影响单个玩家的限制,使游戏能够扩展其用户群,而无需担心任意容量限制。
  • 统一玩家限制:无论并发用户多少,玩家都会有相同的限制。 这使开发人员能够使用小型用户群在开发早期识别限制问题。
  • 服务稳定性:限制可防止单个玩家的流量过大或对 PlayFab 服务或跨多个游戏共享的特定数据平面分区产生负面影响。

另请参阅