需求:
A 为主机,B 为客户端,数据库会在 0.1-0.5 秒之内在 A、B 电脑上同步
A、B 会在数据库中获取,计算,并写入数据
正常的业务流程是:
A 先进行操作,获取数据 10,计算 10-1=9,写入数据 9
B 再进行操作,获取数据 9,计算 9-1=8,写入数据 8
但是因为数据库的同步延迟,如果 A 与 B 在同一毫秒进行操作,很可能 AB 获取到同样的数据,然后写入相同的数据
例如:
A 获取数据 10,计算 10-1=9,写入数据 9
B 获取数据 10,计算 10-1=9,写入数据 9
我觉得应该要对这种情况做任务队列
不知道应该怎么实现呢?
1
qinix 2018-03-20 22:54:17 +08:00 via iPhone
锁…
|
2
liuzelei 2018-03-20 23:04:40 +08:00
这不是传说中的隔离等级么。。。。
|
3
msg7086 2018-03-20 23:50:32 +08:00
这不是队列……
|
4
akira 2018-03-21 00:06:33 +08:00
不对啊,客户端可以直接操作数据库?
|
5
kfll 2018-03-21 00:23:28 +08:00 via iPhone
……这是要多主集群吧……不过有个客户端就很奇怪了……
|
6
feverzsj 2018-03-21 00:31:42 +08:00
这种问题真是莫名其妙啊,客户端直接连到主机的数据库中不就好了
|
7
SbloodyS 2018-03-21 00:34:53 +08:00
这个不是隔离么。。。
|
8
MeteorCat 2018-03-21 00:36:36 +08:00 via Android
事务?要么全部一次性全部成功,要么一次性失败让出给其他操作?
|
9
Seumi 2018-03-21 01:51:19 +08:00 via Android
互斥锁
|
10
ctro15547 2018-03-21 08:53:30 +08:00
上锁?
redis 广播互相订阅一下,写过一个 demo 跟题主要求很像 |
11
picture2200 2018-03-21 09:06:19 +08:00 via Android
加一个状态位,a 和 b 根据不同的状态取数据就可以了。
|