AWS上的2个正在运行的实例选择了相同的记录。

时间:2018-02-06 14:10:31

标签: c# .net amazon-web-services multi-instance-deployment

我有两个运行相同应用程序的AWS实例指向同一个Db。

应用程序的作用是,它会获取未从表中处理的记录。

我的问题是,在第一个实例尝试将其标记为“正在进行中”之前,两个实例都处理相同的记录'

我可以参考这些问题的任何好的解决方案或设计模式。

1 个答案:

答案 0 :(得分:0)

我使用的算法是让应用程序的每个实例都具有唯一的ID。在表上添加一列用于ID。我们称之为'ProcessedBy'。

最初创建行时,ProcessedBy为空。 应用程序读取行。 然后它使用SQL更新ProcessedBy,例如"更新..设置ProcessedBy = @ID,其中ProcessedBy =' '和rowId = @ rowId"。 如果您返回SQL命令更新了一行,则可以安全地处理该行。如果它没有更新一行,那么另一个应用程序就会在你之前到达。

如果您没有收到更新后的行数,则可以再次阅读该行,并在“已处理”栏中验证其是否为您的ID。列。