本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Flow Framework基本概念:應用程序結構
在概念上,AWS Flow Framework 應用程式包含三個基本元件:「工作流程啟動者」、「工作流程工作者」和「活動工作者」。一或多個主機應用程式負責向 Amazon SWF 註冊背景工作程式 (工作流程和活動)、啟動工作程式,以及處理清理工作。工作者處理執行工作流程的機制,並可能在數部主機上實作。
此圖代表基本的 AWS Flow Framework 應用程式:
注意
在三個不同的應用程式中實作這些元件在概念上很方便,但您可以建立應用程式以各種方式實作此功能。例如,您可以使用單一主機應用程式處理活動和工作流程工作者,或使用不同的活動和工作流程主機。您也可以使用多個活動工作者,每個工作者各在不同的主機上處理不同組的活動等。
這三個AWS Flow Framework元件會透過將 HTTP 請求傳送至管理請求的 Amazon SWF 來間接互動。Amazon SWF 會執行下列作業:
-
維護一或多份決策任務清單,決定工作流程工作者要執行的下一個步驟。
-
維護一或多份活動任務清單,決定活動工作者要執行哪些任務。
-
維護工作流程執行的詳細 step-by-step 歷程記錄。
使用時AWS Flow Framework,您的應用程式程式碼不需要直接處理圖中顯示的許多詳細資料,例如將 HTTP 請求傳送至 Amazon SWF。您只要呼叫 AWS Flow Framework 方法,框架就會在後端處理細節。
活動工作者的角色
活動工作者執行工作流程必須完成的各種任務。包括:
-
活動實作,包含一套針對工作流程執行特定任務的活動方法。
-
使用 HTTP 長輪詢請求來輪詢 Amazon SWF 是否有要執行的活動任務的ActivityWorker物件。需要任務時,Amazon SWF 會傳送執行任務所需的資訊來回應請求。然後,ActivityWorker物件會呼叫適當的活動方法,並將結果傳回給 Amazon SWF。
工作流程工作者的角色
工作流程工作者協調執行各種活動、管理資料流程,以及處理失敗的活動。包括:
-
工作流程實作,包含活動協調邏輯、處理失敗的活動等。
-
活動用戶端,功能為活動工作者的代理,可讓工作流程工作者排程要非同步執行的活動。
-
WorkflowWorker物件,使用 HTTP 長輪詢請求來輪詢 Amazon SWF 是否有決策任務。如果工作流程任務清單上有任務,Amazon SWF 會傳回執行任務所需的資訊來回應請求。然後架構會執行工作流程以執行任務,並將結果傳回給 Amazon SWF。
工作流程啟動者的角色
工作流程啟動者啟動工作流程執行個體 (也稱為「工作流程執行」),可在執行期間與執行個體互動,以將額外資料傳遞給工作流程工作者或取得目前的工作流程狀態。
工作流程啟動者使用工作流程用戶端啟動工作流程執行,在執行期間視需要與工作流程互動,並處理清理。工作流程啟動器可以是本機執行的應用程式、Web 應用程式,AWS CLI甚至是AWS Management Console.
Amazon SWF 如何與您的應用程序進行交互
Amazon SWF 協調工作流程元件之間的互動,並維護詳細的工作流程歷程記錄。Amazon SWF 不會啟動與元件的通訊;它會等待來自元件的 HTTP 請求,並視需要管理請求。例如:
-
如果請求來自工作者,請輪詢可用任務,Amazon SWF 會在任務可用時直接回應該工作者。有關輪詢如何運作的詳細資訊,請參閱 Amazon 簡單工作流程服務開發人員指南中的輪詢任務。
-
如果請求是來自活動工作者的通知,表示任務已完成,Amazon SWF 會在執行歷程記錄中記錄該資訊,並將任務新增至決策任務清單,以通知工作流程工作者該任務已完成,以便繼續執行下一個步驟。
-
如果要求來自工作流程 Worker 執行活動,Amazon SWF 會在執行歷程記錄中記錄資訊,並將任務新增至活動任務清單,以指示活動工作者執行適當的活動方法。
這種方法可讓員工在任何具有網際網路連線的系統上執行,包括 Amazon EC2 執行個體、企業資料中心、用戶端電腦等。它們甚至不必在同一個作業系統上執行。因為 HTTP 請求來自工作者,所以不需要對外部開放連接埠,工作者可在防火牆後面執行。
如需詳細資訊
如需 Amazon SWF 運作方式的更全面討論,請參閱 Amazon 簡易工作流程服務開發人員指南。