首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS SNS -主题应该如何通用,何时应该重用/创建主题?

AWS SNS -主题应该如何通用,何时应该重用/创建主题?
EN

Stack Overflow用户
提问于 2020-03-21 14:35:34
回答 1查看 1.6K关注 0票数 6

我们正在引入SNS + SQS来处理我们的微服务体系结构中的事件产生和传播,到目前为止,微服务体系结构依赖于HTTPS调用来相互通信。我们正在考虑将多个SQS队列连接到一个SNS主题上。然后,运行在EC2中的lambda或服务将使用队列中的事件。

我的问题是,这些主题应该有多一般?我们什么时候应该创造新的话题?

比如说,我们有一个用户域,需要发布两个事件--创建和删除。我们正在考虑的两个选择是:

选项A有两个主题,“用户创建的”和“用户删除的”。每个主题都保证单个事件类型.

消费者不必担心放弃他们不感兴趣的事件,因为他们已经知道来自“用户创建的”主题的消息只与用户creations.

  • multiple相关,代码发布的不同部分与相同的主题

有关。

选项B有一个主题“用户”,它接受多个事件类型

  • 消费者将根据事件的类型对事件进行过滤或采取不同的操作(他们还可以将队列订阅配置为筛选特定的事件类型)
  • 可以确保每个主题

都有一个发布服务器。

有没有人对这两种选择有强烈的偏好?为什么会这样呢?

在一个相关的注意事项上,您将在哪里为每个资源包括云配置?(队列资源创建应该与使用者一起部署,还是应该独立于任何发布者/使用者?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-21 17:59:17

我认为您应该选择B,并将与给定“域”(例如“用户”)有关的所有事件保留在一个单独的主题中:

  • 使您的基础设施保持简单的
  • ,您可以引入对多个事件类型感兴趣的服务(例如“创建”和“删除”)。从两个主题中获得正确的排序是很棘手的;假设一个“用户-删除”事件在“用户创建”event
  • throughput之前到达,这实际上取决于您的域(创建和删除用户听起来不像一个大容量问题)
  • 考虑主题中数据结构的变化,同时引入两个或多个主题的更改可能会变得非常复杂的

关于您的另一个问题:将主题/基础结构配置与服务分开。它是一个单独的基础设施(如数据库),应该保持独立;特别是当您将更多的消费者和生产者引入您的系统时。

编辑:这可能是一个示例“安装”:

subscriptions

  • Repository

  • 存储库user-service包含服务/lambda代码,cloudformation/terraform服务模板,其主题为sns包含与
    • sqs有关的所有cloudformation/terraform模板,包含与主题有关的所有cloudformation/terraform模板()。

您可以考虑将SNS & SQS下面的代码保存在一个存储库中(最后两个存储库),但我强烈建议将特定于某个服务/lambda的所有内容保存在单独的存储库中。

一般来说,把你的主题看作一个“数据库”是有帮助的,这条思路应该能为你的所有问题指明正确的方向。

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

https://stackoverflow.com/questions/60789083

复制
相关文章

相似问题

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