每个用户过来之后为他创建一个容器,每个节点创建完容器之后,会在数据库写一条在线记录。当当前用户疯狂在请求时,可能有多个节点收到了创建请求
创建的逻辑是: 先从数据库查询是否有在线记录,有,则忽略,没有则创建并写记录
那么遇到的问题是,A 机器检查到没有记录,然后就插入,在这个过程中可能 B 也检测到没有记录,先创建并且插入了记录,A 插入就会报错,这种问题应该有通用的解法?
1
7911364440 2022-11-30 11:44:09 +08:00
分布式锁
|
2
xiangyuecn 2022-11-30 11:49:12 +08:00
跟分布式不分布式没关系。
你就算是一个节点也会出这个问题。 |
3
xiangyuecn 2022-11-30 11:50:39 +08:00
你根本就没加锁。开的事务成了摆设。
|
4
yianing 2022-11-30 11:52:00 +08:00 via Android
数据库 rr + select for update
|
5
oneisall8955 2022-11-30 11:56:08 +08:00 via Android
try lock
|