【问题标题】:Implementing a large scale API usage quota system [closed]实施大规模 API 使用配额系统 [关闭]
【发布时间】:2012-10-01 06:05:36
【问题描述】:

从高层次上看,如何实现 API 使用配额系统?

特别是,它必须满足以下要求:

  • 实时
  • 快速,不会显着减慢 API
  • 如果使用内存缓存,需要在突然关闭后恢复(有利于 API 客户端的配额精度的小幅损失是可以的)
  • 速率限制(DOS 保护)
  • 很好地扩展

是否有任何普遍接受的架构模式/算法来实现此类系统?

【问题讨论】:

    标签: api design-patterns architecture rate-limiting quota


    【解决方案1】:

    您的 API 是否有可用的数据库?如果是这样,只需在其中为您要测量或限制的每个注册帐户存储一个计数器。

    当有人登录时,使用AOP 之类的技术来确保每个 API 调用都将通过您的限制算法运行,这应该很简单。 24小时节流系统的伪代码:

    read access_count from DB
    access_count++       
    if access_count > limit then
       respond with something like 429 - Too Many Requests
    else
       store access_count in DB
    end
    

    以上假设您有一个批处理作业,该作业每晚遍历数据库并将所有访问计数器清除为 0 以用于第二天的流量。

    它的可扩展性将取决于您选择的数据库。任何数据库都可以处理这个问题,尤其是较新的 NoSQL/NewSQL 之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2012-09-01
      • 2012-02-25
      相关资源
      最近更新 更多