在微服务之间协调任务的更好选择是什么?
例如,如果我有一个处理客户信息的微服务,并且需要通知其他微服务,那么是在微服务之间创建工作流(AWS Steps)还是使用 SNS 更好?
我认为 AWS Steps 将结合我的 lambda 函数,而 SNS 不会。
在微服务之间协调任务的更好选择是什么?
例如,如果我有一个处理客户信息的微服务,并且需要通知其他微服务,那么是在微服务之间创建工作流(AWS Steps)还是使用 SNS 更好?
我认为 AWS Steps 将结合我的 lambda 函数,而 SNS 不会。
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 无处不在,因此这也可能会影响您的选择。
这取决于您想要哪种类型的协调。同步或异步。
如果它是同步的,并且如果您真的想要它们之间的某种协调,那么Amazon Simple Notification Service (SNS)将无济于事,而AWS Step Functions将是可行的方法。
但是,如果需求是异步的,并且您只想通知/调用微服务,那么 SNS 会更合适。
正如我从您的问题“需要通知其他微服务”中读到的那样,我认为这只是通知他们(而不是协调他们),并且每个人都会知道在不依赖其他微服务的情况下进一步做什么。如果这是真的,那么 SNS 就是一个很好的选择。