簡體   English   中英

AWS 中的 State 機器(步驟 function?)

[英]State machine in AWS (step function?)

我想得到一些建議,看看步驟 function 是否適合我的用例。

我有一堆隨機生成的用戶記錄。 在將它們放入池之前,我需要進行一些預處理和驗證。 我有一個定期運行(1-5 分鍾)的階段,以從池中收集記錄並將它們組合起來,然后發布它們。

我需要對每條記錄進行實時追溯/監控,並且一旦記錄發布,我需要通知用戶。

這是一個圖表來說明流程。

在此處輸入圖像描述

步驟 function 是否適合我的用例? 如果沒有,是否有任何替代方法可以幫助我簡化解決方案? 謝謝

是的,Step Functions 是一個選項。 當場景涉及復雜的分支/重試邏輯和可觀察性要求時,步驟 Function 與其他 AWS 無服務器工作流模式(例如事件驅動或發布/ 訂閱)相比,“狀態機”增加了最大價值。 SM 邏輯是明確和可視的,這使得推理工作流變得簡單。 對於每個 State 機器 (SM) 執行,您可以輕松跟蹤執行所采用的確切路徑以及失敗的位置。 這種增加的功能反映在其較高的成本上。

在任何情況下,您都需要收集記錄,直到收集它們為止。 此批處理要求意味着您的架構將需要更多元素,而不僅僅是 State 機器。 這里有一些想法:

(1) 一個 SM 在記錄到達時一個接一個地對其進行預處理

一種選擇是僅使用 State 機器來編排預處理和驗證。 每個到達的事件記錄都會啟動一個 SM 執行。 預處理將 go 記錄到隊列中,從隊列中定期輪詢並發送以進行組合。

[Records EventBrige event] -> [preprocessing SM] -> [Record queue] -> [polling lambda] -> [Combining Service]

(2) 在端到端的 State 機器中預處理和處理 bached 記錄

在記錄到達時將它們收集在隊列中。 lambda 定期輪詢隊列並開始對一批記錄執行 SM。 SM Map 任務並行預處理和驗證記錄,然后調用組合服務,所有這些都在一次執行中完成。 此設置為您提供最大的可見性,但更復雜,因為您必須處理單個記錄導致批處理執行失敗的情況。

[Records arrive] -> [Record source queue] -> [polling lambda gets batch] -> [SM for preprocessing, collecting and combining]

其他

還有很多其他組合,包括在必要時將 SM 鏈接在一起。 或者完全避免SM。 哪個選項最適合您將取決於哪些痛點對您最重要:可觀察性、錯誤處理、簡單性、成本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM