AWS SNS与AWS步骤功能

时间:2017-04-11 02:29:13

标签: amazon-web-services amazon-sns aws-step-functions

在微服务之间协调任务的更好选择是什么?

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

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

2 个答案:

答案 0 :(得分:10)

AWS Step Functions 是执行AWS Lambda函数的步骤计算机。如果您的任务涉及"这样做,那么这个"活动,然后步骤功能可能是一个很好的选择。它包括确定下一步并自动处理重试的逻辑。它是亚马逊简单工作流程(SWF)的现代版本。

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

选择取决于您的具体用例。如果您不想重新设计使用步骤功能的东西,请通过SNS发送通知。如果您有时发送通知(例如电子邮件)而不是仅触发Lambda函数,请使用SNS。

目前,每个地区都没有步骤功能,而SNS无处不在,这可能也会影响您的选择。

答案 1 :(得分:6)

这取决于您想要的协调类型。 同步或异步。

如果它是同步的,如果你真的想在它们之间进行一些协调,那么亚马逊简单通知服务(SNS)将无济于事,并且 AWS步骤功能将会是要走的路。

但是如果需求是异步的,并且你只想通知/调用微服务,那么SNS会更合适。

我可以从您的问题中读到"需要通知其他微服务"我认为这只是通知他们(反对协调他们),每个人都会知道如何进一步做,而不依赖于其他微服务。如果这是真的那么SNS是合适的。