12

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

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

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

4

2 回答 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 无处不在,因此这也可能会影响您的选择。

于 2017-04-11T03:30:01.627 回答
7

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

如果它是同步的,并且如果您真的想要它们之间的某种协调,那么Amazon Simple Notification Service (SNS)将无济于事,而AWS Step Functions将是可行的方法。

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

正如我从您的问题“需要通知其他微服务”中读到的那样,我认为这只是通知他们(而不是协调他们),并且每个人都会知道在不依赖其他微服务的情况下进一步做什么。如果这是真的,那么 SNS 就是一个很好的选择。

于 2017-04-11T04:33:30.487 回答