我们正在尝试构建一个系统,该系统在分担处理负载的不同机器上具有多个服务实例。
每个都将检查一个表,如果该表上有要处理的行,它将选择第一个,将其标记为正在处理,然后对其进行处理,然后将其标记为已完成。冲洗重复。
防止 2 个实例 A 和 B 执行以下操作的竞速条件的最佳方法是什么
A(1) 读表,找到要处理的第 1 行,B(1) 读表,找到要处理的第 1 行,A(2) 标记为行处理 B(2) 标记为行处理
在单个应用程序中,我们可以使用锁或互斥锁。
我可以将 A1 和 A2 放在一个事务中,是不是很简单,还是有更好、更快的方法来做到这一点?
我应该把它打开,这样步骤是:
A (1) 将下一行标记为我的处理 A (2) 将其返回给我处理。
我认为这之前必须已经解决了很多次,所以我正在寻找“标准”解决方案,如果有多个,好处和坏处。