
需求:
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 根据不同的状态取数据就可以了。 |