use*_*934 10 concurrency locking mongodb nosql
我的应用程序的场景类似于在Facebook上发送好友请求.
当用户A向用户B发送好友请求时,在内部创建新好友请求文档.在用户B也想要向A发送好友请求的稍后时间,系统会发现好友请求文件存在,因此他们应该是彼此的朋友,不会创建新的好友请求文档.
我试图找出用户A和用户B同时向对方发送朋友请求的情况,这将创建2个朋友请求文档并导致未确定的行为...
谢谢你的建议..真的很感激!
编辑:一些人建议使用请求队列来解决这个问题; 但是,我对使用队列感到困惑,因为我认为这将使我的休息api端点处理请求顺序.通过使用队列,我不会失去多线程的所有好处吗?我不禁想象,如果我的服务有数百万个请求排队并等待由于这个问题逐个执行,那将是多么糟糕.有没有人在生产过程中看到类似问题?
我的客户端也有类似的情况,它在数据库中有并发写入,我实现的是队列服务。
Create a request in the queue rather than writing in the database, a separate reader will
read one message from the queue at a time and check if it is valid to write it to
database, write only if there is no previous request.
Run Code Online (Sandbox Code Playgroud)
您可以实现自己的队列,也可以使用 AWS-SQS、rabbitmq、MSMQ 等服务。
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |