AWS使用者現在可以在所有商業地區,使用SNS FIFO(First-In-First-Out)主題,讓用戶也可以在Pub/Sub(Publish/Subscribe)訊息服務中,以嚴謹的順序處理事件,並且排除重複的訊息。

AWS提到,在設計分散式軟體架構的時候,定義服務交換訊息的方式,是一件重要的工作,因為在非同步通訊用例解耦元件,就能簡化擴展、減少更新帶來的影響,並且讓發布新功能更輕鬆,而非同步服務到服務(Service-to-Service)的通訊,最常使用的形式就是訊息佇列以及Pub/Sub訊息。

訊息佇列是將訊息儲存在佇列中,直到訊息消費方進行處理或是刪除操作,在AWS中,用戶可以使用Amazon Simple Queue Service(SQS)託管訊息佇列服務;另一種方式則是使用Pub/Sub訊息,運作方式則是將訊息發布到主題中,並傳遞給所有訂閱該主題的訊息訂閱方,AWS用戶可以使用Amazon Simple Notification Service(SNS)發布和訂閱訊息,訊息訂閱者也能夠設定過濾政策,忽略不關心的訊息。

在SQS中,用戶可以使用FIFO佇列,保留訊息的發送和接受順序,並避免訊息被多次處理,而現在AWS使用者也可在SNS用到FIFO主題功能,FIFO主題與FIFO佇列類似,管理排序和刪除重複的訊息。

當訊息發布到FIFO主題時,用戶能夠利用訊息群組ID來管理訊息群組,每個訊息群組ID都會按照訊息抵達的順序傳送和傳遞,目前FIFO主題和佇列的訊息群組數量沒有限制,只是用戶需要事先宣告訊息群組ID,當訊息之間沒有邏輯上的區別,就可以簡單地使用同一組訊息群組ID,僅使用單一有序訊息群組。

由於分散式系統和客戶端應用程式,有時候會產生重複的訊息,SNS可以利用SHA-256雜湊值,以訊息主體產生去重複訊息ID,在5分鐘內,系統不會傳遞具有相同去重複訊息ID的訊息,當用戶在FIFO佇列訂閱FIFO主題,則該ID會被傳遞到佇列,避免接收重複的訊息。

用戶可以結合FIFO主題和佇列一起使用,以簡化應用程式的有序事件的實作,也能夠用來去除無法接受的重複訊息。FIFO佇列可以使用FIFO主題中的訊息過濾功能,選擇性接受訊息子集,而非接收每個發布到該主題的訊息。

熱門新聞

Advertisement