【发布时间】: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