【发布时间】:2023-03-12 19:39:02
【问题描述】:
我有一个节点后端 REST API,它将被部署为多个容器。
我有一个用户数组 = ['u1', 'u2', 'u3', 'u4'] 可以存储在 mongoDb 或 redis 中
我有一个 get 端点,可以从这个数组中返回下一个用户。
例如:第一个请求应该返回 u1,第二个请求应该返回 u2,第五个请求应该返回 u1。
一旦这个 API 被部署为多个容器,假设有 10 个容器在运行并且同时发出 10 个请求,我如何确保它们按顺序返回。
我正在寻找一种标准方法来处理这种情况。以下是我想到的一种方法
将数组作为列表存储在 redis 上。
对每个请求执行 LPOP 和 RPUSH,这样第一个请求之后的列表就是
['u2', 'u3', 'u4', u1]
这里需要注意的是,如果 5 个请求并行出现,可能会出现执行 5LPOP 的情况 并且数组可能为空,RPUSH 可能会乱序执行。
处理此问题的最佳方法是什么?
【问题讨论】:
标签: node.js concurrency microservices