如何解决K8吊舱之间的比赛条件

时间:2019-05-01 08:12:37

标签: algorithm spring-boot java-8 kubernetes amazon-dynamodb

这可能不必对K8s Pod进行任何操作,但我怀疑还有更多算法。但这是我们面临的完整情况。

让我们说我们有 2个Pod ->正在运行Java应用程序。

我们有 1个Dynamo表->具有id(哈希键)(非唯一),created_date(sort_key),id_2

程序的预期行为是检查给定的id(最新)的存在并获取其id_2。如果不存在这样的id,则生成一个新的id_2

现在是比赛条件-> 两个Pod并行开始执行逻辑,并且它们两个都开始查询Dynamo,并且碰巧具有相同的id。现在他们找不到任何id ..,因为它们都没有插入到Dynamo中,因此它们创建了完全独立的新id_2 ..并且两个吊舱最终都为插入了新的id_2相同的id ..情况并非如此。

我们如何解决这种比赛条件。

任何线索都将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

我认为您应该重新考虑表架构。

通过具有以 id_2 作为哈希的表,没有排序键,并且在 id / created_data

上具有全局二级索引

当然,这仅在表中 id_2 是唯一的而不是每个 id

唯一的情况下有效