AWS SNS与AWS Step Functions对比

14

如何更好地协调微服务之间的任务?

例如,如果我有一个处理客户信息并需要通知其他微服务的微服务,是创建微服务之间的工作流程(AWS Steps)更好呢,还是使用SNS更好呢?

我认为AWS Steps会耦合我的Lambda函数,而SNS不会。

2个回答

13

AWS Step Functions 是一个执行 AWS Lambda 函数的步骤机器。如果您的任务涉及“这样做,然后是这样”的活动,则 Step Functions 可能是一个不错的选择。它包括逻辑来确定下一步并自动处理重试。它是Amazon Simple Workflow (SWF)的现代版本。

Amazon Simple Notification Service (SNS) 也可以触发 Lambda 函数,但它不处理逻辑和重试。它非常适合解耦服务,特别是对于多个订阅者从主题接收相同消息(例如触发多个 Lambda 函数或发送多个通知)的分流。它基本上是发布/订阅服务,Lambda 是其中一种订阅类型。

选择将取决于您特定的使用情况。如果您不想重新设计使用 Step Functions 的事物,则通过 SNS 发送通知。如果有时需要发送通知(例如电子邮件),而不仅仅是触发 Lambda 函数,请使用 SNS。

目前,Step Functions 并不在每个地区都可用,而 SNS 则随处可用,因此这也可能影响您的选择。


7
这取决于您需要哪种类型的协调。同步或异步。
如果是同步的,并且您真的想要一些协调,那么Amazon Simple Notification Service(SNS)将无法帮助,而AWS Step Functions则是正确的选择。
但如果要求是异步的,并且只想通知/调用微服务,则SNS更适合。
我从您的问题中可以看出“需要通知其他微服务”,我假设这只是通知它们(而不是协调它们),每个微服务都会知道接下来该怎么做,而不依赖其他微服务。如果是这样的话,那么SNS是一个好的选择。

1
Step Functions 只支持异步操作。 - maletor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接