我需要在事件發生后自動化作業流程。我確實有 CRUD 應用程式方面的經驗,但沒有作業流/批處理方面的經驗。在設計系統時需要幫助。
要求
作業流程涉及 5 個步驟。每個步驟都是一個REST呼叫,并且依賴于上一步。EX 的步驟:(VerifyIfUserInSystem、CreateUserIfNeeded、EnrollInOpt1、EnrollInOpt2、..)
我的想法是維護 2 個資料庫表
WORKFLOW_STATUS 表,其中包含諸如(外鍵(指主表),作業流狀態:(NEW,INPROGRESS,FINISHED,FAILED),已完成步驟:(STEP1,STEP2,..),已處理時間,..)等列
EVENT_LOG 表,用于維護特定記錄的事件/例外跟蹤(外鍵、STEP、ExceptionLog)
題
#1。這是編排系統的正確方法(不是那么復雜)嗎?
#2。由于這些步驟涉及 REST 呼叫,因此我可能必須在服務不可用時停止該程序并在稍后的時間點恢復該程序。我不確定是否應該進行多次重試,以及如何在將其標記為 FAILED 之前保持嘗試次數。(猜測在 WORKFLOW_STATUS 表中創建另一個名為 RETRY_ATTEMPT 的列,并在將其標記為失敗之前設定一些限制)
#3 EVENT_LOG 表的設計是否正確,我應該為例外日志使用什么資料型別(clob 或 varchar(2048))?每個步驟/重試嘗試都將作為新記錄插入到該表中。
#4 如何在依賴服務備份后重置/重新啟動 FAILED 條目。
如果可用,請引導我訪問博客/視頻/資源。提前致謝。
uj5u.com熱心網友回復:
您是否考慮過使用像 Netflix 的 Conductor 這樣的作業流編排引擎?
輸入提供 IP 地址(和 Accuweather API 密鑰)
{
"ipaddress": "98.11.11.125"
}
HTTP 請求 1 定位 IP 地址的郵政編碼。
HTTP 請求 2 使用 ZipCode(和 apikey)來報告天氣。
此作業流的輸出是:
{
"zipcode": "04043",
"forecast": "rain"
}
你的問題:
- 我會使用像指揮這樣的編排工具。
- 這些任務中的每一個(在 Conductor 中定義)都內置了重試邏輯。您實作的方式將因預期時間等而異。由于我在這里呼叫的 2 個 API 是公開的(并且相對較快),因此我不會等待很長時間重試:
"retryCount": 3,
"retryLogic": "FIXED",
"retryDelaySeconds": 5,
在連接內部,您可以調整更多引數:
"connectionTimeOut": 1600,
"readTimeOut": 1600
如果需要,還有指數重試邏輯。
- 事件日志存盤在 ElasticSearch 中。
- 您可以為所有作業流程構建錯誤路徑。
I have this workflow up and running in the Conductor Playground called "Stack_overflow_sequential_http". Create a free account. Run the workflow - click "run workflow, select "Stack_overflow_sequential_http" and use the JSON above to see it in action.
The get_weather connection is a very slow API, so it may fail a few times before succeeding. Copy the workflow, and play with the timeout values to improve the success.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/440038.html
