【问题标题】:Architecture for keeping track of API credits?跟踪 API 信用的架构?
【发布时间】:2021-03-01 12:58:45
【问题描述】:

我有一个用户表,其中有一个 api 键列和总积分/已用积分列。

用户获得一个 API 密钥,使用该密钥,他们可以使用我的 API,但前提是 used credits<=total credits

由于这是一个 API,我可能很容易每秒处理数十个请求。这样就排除了在某种 API 中间件中每次调用时直接从数据库读取/写入。

那么,正确的做法是什么?

  • 我是否应该尝试将 api-key:remaining credits 作为键值对存储在 redis 中并在每个 API 调用中使用它?
  • 如果我有多个服务器节点,其中一个从 redis 读取剩余一个积分并开始执行 API 调用,但在中间另一个节点将剩余积分设置为零,会发生什么情况? (即奇怪的并发边缘情况)

一般来说,我需要具有高度可扩展性和支持高并发性的解决方案(每个实例 >100 次请求/秒,并且说 >1 亿次 API 调用/月)。

有什么想法吗?

【问题讨论】:

    标签: database api redis monitoring api-key


    【解决方案1】:
    • 使用 Redis 存储 API 密钥。您无需在此处设置金额。只需输入 TTL 和 API 密钥即可。
    • 使用 Apache Kafka 或类似的东西来接收客户交易:借记或贷记
    • 使用最终的股票表作为“客户的银行账户”,该表将接收来自消息经纪人的所有借记和贷记交易的总和。计算并向客户发送有关资金不足的请求信用或消息。

    类似的东西。 附言您还可以通过密钥在几秒钟内限制交易。但它是可选的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      相关资源
      最近更新 更多