【问题标题】:AWS SNS multiple subscribers by code (e.g. dynamic instances)AWS SNS 多个订阅者的代码(例如动态实例)
【发布时间】:2021-10-06 08:17:33
【问题描述】:

也许有人可以帮助我找到更好的 AWS 基础设施解决方案。

我将有 N 个服务(每个服务都是一个实例)(至少至少 1 个,其他的会动态添加)。在每个服务的内存中,都有一个数据缓存(1-3Gb)。我需要实现一个发布者-订阅者模式来更新每个服务的缓存。正如我所见,AWS SNS 可以调用 SQS、AWS Lambda、http\https、SMS 等。所以,看起来 AWS SNS 不支持从代码订阅\取消订阅 SNS。

目前,我只看到一种解决方案:

  1. 当新实例启动时,它将创建一个 SQS 队列并将此 SQS 订阅到现有的 SNS 主题
  2. 当实例终止时,它将取消订阅 SNS 主题的 SQS 队列,然后删除 SQS
  3. 因此,每个实例都将通过 SQS 接收有关缓存更新的事件。

我不喜欢这个解决方案,因为我需要为 SQS 和 SNS 存储具有创建\编辑权限的访问密钥。

那么,也许有人可以建议我另一种解决方案?如果有任何想法,我将不胜感激。

附:我不能使用像 ElasticCache 或 Redis 这样的缓存,因为加载数据和反序列化需要(3-5 秒),但从内存中需要 0.5 秒。 我正在使用 .net core 3.x 版本

【问题讨论】:

    标签: asp.net .net amazon-web-services amazon-sqs amazon-sns


    【解决方案1】:

    您概述的解决方案通常是大多数人最终使用的解决方案(一个 SQS 队列 + 每个主机的订阅以及设置和拆除)。

    请记住,您可以缩小 IAM 政策的范围,使其仅适用于某些资源,例如只订阅/取消订阅一个特定的 SNS 主题。您还可以考虑将设置/拆卸作为放大/缩小过程的一部分,而不是在实例本身中进行。

    【讨论】:

    • 是的,我也这么认为,但我创建这篇文章是为了仔细检查,也许有人实施了另一种解决方案。感谢您的参与!
    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多