我在Azure App Service上部署了一个节点应用程序,并将其扩展到5个示例。
现在,在我们的应用程序中,我们已经公开了一些API,这些API将数据添加到我们的mongo DB集合detail中。
现在,这些细节需要被推送到另一个具有唯一引用ID的应用程序。因此,当将数据放入细节集合时,除了mongo DB Object Id之外,我们以顺序的方式生成reference_id。
reference_id = order_category_id + order_sub_category_id + sequence_number + 1
但是,当多个请求同时针对同一类别并将数据添加到详细信息集合时,会生成相同的reference_id。
我怎么能阻止这种情况发生呢?
我已经尝试使用mongoose的unique Schema属性,但这也不起作用。我想在当前系统中生成唯一的引用ID。
1条答案
按热度按时间5cnsuln71#
这通常通过向ID添加“机器”或“示例”引用来解决,以便跨扩展示例的并发请求不会重叠。
这也是MongoDB为其
ObjectId
所做的,并且是大规模分布式ID生成的常见方法。此外,如果引用id的顺序很重要,您可能希望包括时间戳,并确保它是基于它进行排序的id的最高有效位/部分,同时保持总长度相同。