gpt4 book ai didi

notifications - AWS : Broadcast notifications for multiple worker processes running on multiple instances

转载 作者:行者123 更新时间:2023-12-01 09:54:06 24 4
gpt4 key购买 nike

我在 Amazon EC2 中有多个应用程序实例,每个实例都运行多个工作进程。我想要的是每个工作进程都订阅一些通知(例如配置更改)。该通知应该基本上是广播消息,因此一旦发送 - 每个 worker 都会收到它。

我知道 SQS 不支持消息广播。通过类似的问题/线程,我看到了使用 SNS 而不是 SQS 的建议。由于以下原因,我不确定这是否对我有用:

  • 应用程序实例是自动缩放组的一部分,因此可以动态添加和删除它们。在这种情况下,一旦实例终止,我看不到任何取消订阅每个工作人员(每个实例有多个工作人员)的明确方法,这意味着我将在一段时间后结束订阅者死亡的困惑。
  • 用于订阅的协议(protocol)也不清楚。 HTTP 端点看起来是唯一的选择,这意味着我的每个工作人员都应该在自己的端口上运行 HTTP 服务器。看起来我应该只监听实例公共(public) IP,这增加了一层复杂性和不安全性。

  • 目前我有一个基于第三方的解决方案——我正在使用 0MQ 发布/订阅服务器。但我正在寻找 AWS 提供的一些开箱即用的解决方案。

    谢谢,
    沃万

    最佳答案

    想到的开箱即用 AWS 解决方案是创建一个 SNS 主题,然后对于每个实例,当实例启动时,它会创建自己的 SQS 队列并将队列订阅到 SNS 主题,这样each individual queue gets a broadcast copy您发布到 SNS 的每条消息。

    您希望在实例终止时取消订阅并删除这些队列,这可以通过 lifecycle hooks 完成。 .

    如果您不想使用服务器来管理生命周期 Hook 的处理(将启动或终止事件发布到 SNS 或 SQS),您可以创建 AWS API Gateway 端点来触发 AWS Lambda 函数,然后订阅 API使用 https 到 SNS 主题的网关端点,以处理 Lambda 中的清理任务,无需服务器。

    这是几项服务一起工作,可能听起来有点复杂,但会非常便宜,几乎不需要维护或关注。

    关于notifications - AWS : Broadcast notifications for multiple worker processes running on multiple instances,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32161547/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com