首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动标度:至少2个实例和随后的Lambda

自动标度:至少2个实例和随后的Lambda
EN

Stack Overflow用户
提问于 2017-06-26 15:34:22
回答 1查看 421关注 0票数 0

全,

我真的被困住了,几乎什么都试过了。有人能帮忙吗。

我在创建自动缩放组时提供了2个实例.我触发一个Lambda (操纵标记),它将实例名更改为唯一的名称。

所需的状态,我希望Lambda的第一个实例给第一个实例命名为"web-1“,那么第二个就会运行得很好,以指定一个名称"web-2”。

Current State I首先对运行的实例进行搜索,以查看"web-1“是否存在。因此,在本例中,我的Lambda执行两次并创建两个名称相同的实例( web-1,web-1)。

我怎么才能避开这一切?我知道问题是因为Lambda在听云观察事件。ASG的启动在同一时间创建了两个事件,在我的情况下,导致了我的问题。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-26 18:59:13

您正遇到一个经典的多线程问题。两个lambda函数同时执行,查看相同的“未使用”web-1并用相同的函数标记这两个函数。

您需要的是一个原子操作,它允许每个Lambda执行“允许”继续执行。您可以尝试使用助手DynamoDB表来序列化标记尝试。

  1. 让lambda函数决定设置哪个标记(web-1、web-2等)
  2. 检查一个DynamoDB表,看看是否在最后30秒内设置了该标记。如果是这样的话,其他人会先找到它,所以回到第一步。
  3. 尝试将您所追求的标签的“所有权”与当前的时间戳一起写入DynamoDB。尝试使用一些attribute_not_exists或其他DynamoDB条件,以确保只有一个同时这样的写入成功。
  4. 如果你在写作上失败了,回到第一步。
  5. 如果你写作成功,那么你就可以自由地设置标签了。

创建时间戳的原因是允许终止"web-1“,然后启动一个新的EC2实例,并将其标记为"web-1”。

上面的逻辑没有被证明是有效的,但是希望能够给出足够的指导来开发一个有效的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44763317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档