SQS 跟 SNS 的差別在哪?
這裡簡單的整理一下,SQS 是Pull Based的架構, 消費者要自己去佇列中抓訊息下來
SNS 是Push Based的架構, 訊息會自動推撥給訂閱者
使用情境
SQS用在將應用程式解偶降低相依性
SNS
Fanout, 用在同時將訊息散發到其他不同的服務上
使用例子
SQS線上機票查詢服務(skyscanner), 假設架構如下
我們可以把服務使用者的EC2 instance與負責撈資料的EC2 instance解偶, 好處是, 即使撈資料的EC2掛了, 也不會弄丟使用者的查詢請求, 因為沒處理完的訊息會持續地保留在佇列中等待被處理
SNS
線上影像處理服務, 當使用者上傳照片到S3, 可以透過SNS同時散發這訊息給: (一)處理影像的Lambda, 以及(二)寄發感謝函給使用者的服務, 藉此平行地執行相應的動作
儲存方式
SQS 可以保留訊息到最長14天SNS 不能保留訊息, 若推撥時訂閱者不在, 訊息會遺失
消費者
SQS的消費者通常都作相似的工作SNS的消費者(訂閱者)有很大的可能是處理不一樣的工作
https://stackoverflow.com/questions/13681213/what-is-the-difference-between-amazon-sns-and-amazon-sqs
留言
張貼留言