AWS SNS多个订阅者按代码(如动态实例)



也许有人能帮我找到一个更好的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存储具有createedit权限的访问键。

所以,也许有人能给我另一个解决方案?如有任何建议,我将不胜感激。

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

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

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

最新更新