2017-04-11 160 views
4

在微服務之間協調任務有什麼更好的選擇?AWS SNS vs AWS Step Functions

例如,如果我有一個處理客戶信息並需要通知其他微服務的微服務,在微服務或使用SNS之間創建工作流(AWS Steps)會更好嗎?

我認爲AWS Steps將耦合我的lambda函數,而不是SNS。

回答

4

AWS Step Functions是執行AWS Lambda函數的步驟機器。如果你的任務涉及「做這個,那麼這個」活動,那麼Step Functions可能是一個不錯的選擇。它包括確定下一步並自動處理重試的邏輯。這是亞馬遜簡單工作流程(SWF)的現代版

亞馬遜簡單通知服務(SNS)也可以觸發Lambda函數,但它不處理邏輯或重試。這非常適合解耦服務,尤其是對於多個訂閱者從主題接收相同消息的扇出(例如,用於觸發多個Lambda函數或發送多個通知)。它基本上是一個公共/訂閱服務,其中Lambda是其中一種訂戶類型。

選擇將取決於您的特定使用情況。如果您不想重新設計使用Step Functions的內容,請通過SNS發送通知。如果您有時發送通知(例如電子郵件)而不是僅僅觸發Lambda功能,請使用SNS。

目前,Step Functions不適用於所有地區,而SNS無處不在,因此也可能影響您的選擇。

4

這取決於你想要什麼類型的協調。 同步或異步。

如果它是同步的,如果你真的想他們之間的一些協調,然後Amazon簡單通知服務(SNS)無助和AWS步驟功能將要走的路。

但是,如果需求是異步的,而您只是想通知/調用微服務,那麼SNS會更適合。

正如我可以從你的問題中讀到的「需要通知其他微服務」我假設它只是通知他們(而不是協調他們),並且每個人都知道如何進一步做,而不依賴於其他微服務。如果那是真的,那麼SNS是一個很好的選擇。