iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
DevOps

AWS Solution Architect Associate的鐵人不只三項證照之路系列 第 23

Day 23 AWS的雲上排隊服務-SQS

想知道如何在雲端上傳遞和處理來自使用者的網路請求訊息嗎?AWS的SQS可以幫助我們做到這一點。我們往下走吧!

1. SQS的應用價值

SQS是Simple Queue Service的縮寫,是一套可以提供雲端訊息處理和程式作業的服務,讓我們可以有效、彈性處理大型任務和接收訊息的頻率。

2. SQS的組成和運作機制

參考大話AWS雲端架構一書的架構圖,SQS的組成如下:
情境是我們在雲端的系統接收到使用者的網路流量去執行某項工作。第一台機器稱作Producer收到流量後,會發送訊息告知使用者,你的流量我們收到了,請耐心等候下一則的工作狀態通知;並將使用者要求的工作內容傳遞到Message。Message會將訊息以JSON格式放置到Queue內。第二台機器Consumer會依序處理Queue的任務,並根據進度,告知使用者工作狀態。

2.1 Producer傳送資料

Producer最大可傳送至Message的容量大小是256KB。那要傳送大型的檔案,不就無解?解法就在S3!什麼意思呢?
在訊息傳送過程當中,大的檔案會被上傳至S3,訊息本身只需要紀錄檔案存放在S3上的路徑。檔案本身的處理,Consumer只需要根據訊息所提供的檔案路徑,即可去S3把資料拉下來處理,處理後的資料一樣放回S3;使用者需要處理過後的資料時,一樣根據訊息內所提供的S3路徑,便可取得所需資料。
Producer傳送到在Queue裡面的訊息,最多可以放4天;超過4天的話,則需要另外調整參數,以目前服務來看,最多可放到14天。

2.2 Consumer處理資料

Consumer處理資料的方式有兩種,FIFO以及Standard。

  • FIFO: 也就是First In First Out,先進入Message的訊息,會優先處理。
  • Standard: 可根據使用者需求,客製化調整優先處理訊息的次序。
    關於Consumer還有一個重點,就是如果今天有多個Consumer的機器一起運作的話,怎麼避免同一條訊息被多個Consumer機器重複處理呢?這裡有一套機制去應對這種情況: 每當訊息被其中一個Consumer機器選中時,該則訊息就會變成隱形(invisibility),並在該則訊息被Consumer正式處理完畢後,該則訊息就會直接被刪除掉。這樣做法,可以有效減少同工的問題發生。
    此外,Consumer在Queue去擷取訊息的頻率,也是我們可以調整的一項變數。端看訊息來源量的多寡,我們可以選用Long Polling(Consumer擷取訊息頻率較低)或者Short Polling(Consumer擷取訊息頻率較高)。

上一篇
Day 22 雲端上的緩存達人-ElastiCache
下一篇
Day 24 物聯網大數據的數據捕手Kinesis
系列文
AWS Solution Architect Associate的鐵人不只三項證照之路30

尚未有邦友留言

立即登入留言