如何更好地协调微服务之间的任务?
例如,如果我有一个处理客户信息并需要通知其他微服务的微服务,是创建微服务之间的工作流程(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 则随处可用,因此这也可能影响您的选择。