MongoDB 并发更新的疑惑
最近因为接到爬虫的项目而使用到了MongoDB(之前没用过)
这次项目是把 Websocket 传输过来的数据而更新 MongoDB里的数据
单一的 Websocket 传输是没有什么大碍,毕竟 update 就行,
问题是现在有两个 Websocket 传输导致有两次的数据被传输了。
比如:
刚开始 A进程 连接 Websocket 地址并监听数据并更新MongoDB
过一段时间(因为 A进程 只能维持 20分钟左右,官方会强制踢下线)
所以 我这里弄了计时器 等到 A进程到 19分钟左右的时候B进程会准备连接 Websocket 并监听数据并更新MongoDB
这里用计时器是因为 连接
Websocket的步骤大概花 20秒左右,
想避免这20秒内的数据丢失而做了计时器,达到无缝连接的效果。
这时候A进程和B进程 都会连接 Websocket
所以导致两个进程会同时发送同样的数据到 MongoDB里,更新了两次。
这种同时更新的情况会不会出问题呢?大家是怎么解决的呢?
因为数据传输太快太频,我这里都不知道怎么测试了。
之前用upsert来测试的时候 并发的数据是不管用,直接insert两个记录。
关于 LearnKu
推荐文章: