这可能不必对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
..情况并非如此。
我们如何解决这种比赛条件。
任何线索都将不胜感激。谢谢
答案 0 :(得分:0)
我认为您应该重新考虑表架构。
通过具有以 id_2 作为哈希的表,没有排序键,并且在 id / created_data
上具有全局二级索引当然,这仅在表中 id_2 是唯一的而不是每个 id
唯一的情况下有效