- AWS›
- 產品›
- Amazon SWF
為什麼選擇 SWF?
Amazon Simple Workflow Service (Amazon SWF) 可協助開發人員建置、執行和調整以平行或連續步驟進行的背景任務。您可以將 Amazon SWF 視為雲端中的完全受管狀態追蹤器和任務協調器。
如果應用程式的步驟需要 500 毫秒以上才能完成任務,您需要追蹤處理的狀態,並在任務失敗時恢復或重試,這時 Amazon SWF 就可以提供協助。
如果您正在尋找低程式碼的視覺化程序流程服務來協調 AWS 服務、自動化業務流程或建置無伺服器應用程式,請進一步了解 AWS Step Functions。
優勢
邏輯區隔
Amazon SWF 將背景任務的逐步邏輯控制流程與包含唯一商業邏輯的實際工作單位加以區隔。這讓您可以從使其與眾不同的核心商業邏輯分別管理、維護和調整應用程式的「狀態結構」。您可以隨業務要求的變化輕鬆地變更應用程式邏輯,不必擔心基礎狀態結構、任務分派和流程控制。
可靠
Amazon SWF 在 Amazon 的高可用性資料中心中執行,因此狀態追蹤和任務處理引擎能夠在應用程式需要時隨時可用。Amazon SWF 會以冗餘方式存放任務,可靠地將它們指派到應用程式元件,追蹤其進度,並保存最新的狀態。
簡便
Amazon SWF 以全受管的雲端處理流程 Web 服務取代複雜的自訂程式碼處理流程解決方案和程序自動化軟體。開發人員不需要再管理程序自動化的基礎設施連接,因此可以全神貫注在開發應用程式的獨特功能。
可擴展性
Amazon SWF 可以隨應用程式的使用進行無縫調整。當應用程式加入更多雲端處理流程或增加處理流程的複雜性時,也無需手動管理處理流程服務。
靈活
Amazon SWF 讓您使用任何程式設計語言撰寫應用程式元件和協調邏輯,並在雲端或內部部署執行。
Amazon SWF 產品詳細資訊
使用 Amazon SWF 來管理應用程式中的工作流程很容易。
Amazon SWF 功能
Amazon SWF 會做為應用程式所有不同元件的協調中心:
- 維護應用程式狀態
- 追蹤工作執行及記錄其進度
- 保存及分派任務
- 控制每個應用程式主機將獲指派哪些要執行的任務
使用 Amazon SWF,您只需:
- 使用 AWS 管理主控台或 Amazon SWF API 來指定工作流程的名稱。
- 使用 Amazon SWF API 來「開始」新工作流程,這樣會執行稱為「工作流程執行」的一系列特殊工作流程任務。
- 從您的工作者機器 (「工作者」是指應用程式中的元件,負責處理特定任務) 使用 Amazon SWF API 為工作流程執行建立任務順序、管理條件流程以及執行循環。
- 從工作者機器使用 Amazon SWF API 在雲端或現場請求和執行工作流程任務。
- 在 AWS 管理主控台中監控工作流程執行及其相關任務的狀態和進度。
詳細說明
Amazon SWF 是一項全受管服務,用於建置可擴展且有彈性的應用程式。Amazon SWF 提供簡單的 API 呼叫,能夠從以任何語言編寫的程式碼執行,以及在您的 EC2 執行個體上執行,或者在全球各地能連接網際網路的電腦上執行。
Amazon SWF 會做為您的應用程式主機在此互動的協調中心。您可以使用 Amazon SWF 來建立所需的工作流程及其關聯的任務、任何想套用的條件邏輯,並且加以儲存。每次執行工作流程的時候,它都會被當作是不同的工作流程執行。您可以用程式設計方式來設計自己的應用程式元件,以請求要在工作流程執行中執行的各種任務,而 Amazon SWF 會在主機 (無論主機在雲端或現場) 上按照您指定的順序,協調各項任務完成。應用程式使用 API 與 Amazon SWF 溝通,以記錄任務成功或失敗。然後,Amazon SWF 會根據您的商業邏輯,透過將下一個工作流程任務指派給應用程式主機或是重新執行已失敗的任務,來繼續執行一系列任務。
登入 AWS 管理主控台來開始 Amazon SWF 工作流程執行。或是,您可以透過我們的 Amazon SWF API 來開始工作流程執行。Amazon SWF 採用簡單的 Web 服務界面,不僅易於使用且非常靈活。
- 啟動工作流程執行:啟動一系列工作流程工作,並使第一個任務可供應用程式主機使用。
- 描述工作流程執行:提供工作流程執行和任務的狀態。
- PollForActivityTask:您的應用程序主機(在雲端或內部部署中)在連續循環中要求並執行工作流程任務。
- 回應活動問題已完成:應用程式主機告知 Amazon SWF 已成功完成任務。然後 Amazon SWF 會將下一個任務提供給應用程式主機,以繼續工作流程執行。
- 終止工作流程執行:停止向前推動特定工作流程執行。Amazon SWF 不會將這個特殊工作流程執行的任何其他任務指派給應用程式主機。
預定用途和限制
使用本服務需遵守 Amazon Web Services 客戶協議。
使用案例
視訊編碼
使用 Amazon S3 和 Amazon EC2 的影片編碼。 在此使用案例中,是以區塊形式將大型影片上傳到 Amazon S3。區塊的上傳過程必須受到監控。區塊上傳之後,要將它下載到 Amazon EC2 執行個體進行編碼。經過編碼的區塊會儲存到另一個 Amazon S3 位置。以這種方式將所有區塊進行編碼之後,會將它們合併成一個完整的編碼檔案,再整個放回 Amazon S3。如果處理期間有一或多個區塊發生編碼錯誤,此程序便可能失敗。必須透過 Amazon SWF 的雲端處理流程管理功能偵測和處理這類失敗問題。
資料中心遷移
將元件從資料中心遷移到雲端。 業務關鍵操作由私有的資料中心託管,但需要整體遷移到雲端中,而不會導致中斷。以 Amazon SWF 為基礎的應用程式可以將包含資料中心所執行元件的工作者與雲端中執行的工作者合併在一起。若要無縫轉移資料中心工作者,會先在雲端中部署相同類型的新工作者。資料中心的工作者與新的雲端工作者會繼續照常執行。傳送部分負載給以雲端為基礎的工作者,以測試和驗證它們。測試期間,應用程式不會中斷,因為資料中心的工作者一直在執行。測試成功後,逐步停止資料中心的工作者並向上擴展雲端中的工作者,藉此將它們全部移至雲端處理流程管理應用程式。您可以針對資料中心的所有其他工作者重複這個雲端處理流程程序,將整個應用程式移至雲端。如果因為一些業務考量,某些處理步驟必須繼續在私有資料中心執行,這些工作者可以繼續在私有資料中心執行,同時也參與應用程式。
以人力工作者處理產品目錄
使用 Amazon Mechanical Turk 處理大型產品目錄。 在驗證大型目錄中的資料時,目錄中的產品會以批次處理。不同批次可同時處理。將從資料中心的伺服器中提取每個批次的產品資料,然後轉換成 Amazon Mechanical Turk 的 Requester User Interface (RUI) 所要求的 CSV (逗號分隔值) 檔案。上傳 CSV 以填寫和執行 HIT (人力智慧任務)。完成 HIT 後,將結果 CSV 檔案反向轉換,使資料返回原始格式。接著評估結果,Amazon Mechanical Turk 工作者會針對可接受的結果付費。故障將會清除及重新處理,而使用可接受的 HIT 結果更新目錄。在批次處理過程中,系統需要追蹤 Amazon Mechanical Turk 工作者的品質並據此調整費用。出現故障的 HIT 會重新進行批次處理,並透過管道再次傳送。
AWS Flow Framework
AWS Flow Framework 是各種便利程式庫的集合,可讓利用 Amazon Simple Workflow 建置應用程式的過程更快速也更輕鬆。
運作方式
AWS Flow Framework 有一個直覺的程式設計模型,可讓使用者輕鬆建置能跨各種機器執行工作的應用程式。利用這種框架,便能快速建立任務、協調任務,以及表達任務彼此之間的依存關係,而這些與您在傳統程式中所做的一樣。例如,您可以透過在個別「本機」電腦上呼叫應用程式邏輯中的方法,來執行在「遠端」電腦上應用程式中的方法。透過使用由 Amazon Simple Workflow 服務儲存的資訊,AWS Flow Framework 會負責處理執行遠端方法所需的複雜往返工作,並將其結果傳回本機應用程式。任何已執行方法的輸出結果都可用來連接相互依存之邏輯的各個部分。這個架構讓您使用簡單易懂的語法來表達使用簡易「封鎖並等候回呼」方法的各種方法之間的相依性。這個架構也讓您在發生本機錯誤時,於遠端機器上處理故障,並讓您用簡單的方式來定義如何在應用程式失敗時,於應用程式中重試重要的方法。
- 在適用於 Java 的 AWS SDK 取得
- 檢視 Java 版本的網路研討會
- 閱讀開發人員指南
- 請參閱 API 參考
注意
適用於 Ruby 的 AWS Flow Framework 不再積極開發。雖然現有的程式碼將繼續無限期運作,但不會有新功能或版本。適用於 Ruby 的 Flow Framework 原始程式碼將繼續在 AWS SWF GitHub 存檔中提供。如果您以 Ruby 為基礎的 Simple Workflow 應用程式正在進化和變更,您可能需要考慮一些選項,包括遷移至 AWS Step Functions 或使用原生 Simple Workflow API。如需詳細資訊,請參閱 AWS Simple Workflow 開發人員指南。
您可以利用 AWS Flow Framework 來編寫簡單的程式碼,然後讓這個架構的預建物件和類別處理 Amazon Simple Workflow API 的詳細資訊。AWS Flow Framework 會負責建立和執行應用程式的步驟、追蹤其進度、讓您定義步驟失敗時的重試規則以及更多項目。同時,Amazon Simple Workflow Service 會維護應用程式的執行狀態、將各項任務分派給可用的工作者,以及保存所有任務的稽核記錄。
AWS Flow Framework 是由 AWS 開發和管理的 Java 開放原始碼。您可以使用以下連結來取得程式庫、原始程式碼、文件、範例以及其他資料。