前言
後續這兩篇文章,我們將簡單介紹 Azure 背景作業與排程工作: WebJob 與 Azure Function。 背景作業與排程工作在程式設計中相當重要,有別於過去撰寫排程與背景程式方式,使用者可以在 Azure Portal 上透過 WebJob 與 Azure Function 設定,直接執行你所需要的腳本與程式,相當方便。您也能介接其他 Azure 服務,讓工作流程更加完善。本篇文章會先介紹 WebJob,下篇再介紹 Azure Function,若有錯誤或任何建議,請各位先進不吝指教。關鍵字:背景處理、WebJob 與 Azure Fnction 之間的選擇、Azure WebJob
介紹
背景處理
對許多類型的處理程序並不在使用者介面操作時執行,我們稱之為背景處理 (background processing),如:批次處理作業、密集處理作業程序與長時間執行工作流程。應用程式在啟動這些工作後,可以繼續處理用戶的請求。背景處理作業可以最小化使用者介面運作的負擔,藉此提高可用性並降低回應時間。背景處理工作類型如下:- CPU 密集型作業:例如數學計算或模型分析。
- I / O 密集型作業:例如執行一系列儲存工作或建立索引。
- 批次處理作業:例如夜間數據更新或計劃處理。
- 長時間執行的工作流程:例如訂單履行或供應服務和系統。
- 敏感數據處理:將任務交給更安全的位置進行處理。
- 觸發器 (Trigger)
事件驅動的觸發器:事件為觸發點 (通常是用戶採取的動作或工作流程中的步驟) 啟動任務。
排程驅動的觸發器:基於排程計劃啟動任務。這可能定期或指定未來時間的一次性啟用。
WebJob 與 Azure Fnction 之間的選擇
- 正常來說,會優先選擇 Azure Function: 因為支援多種語言、可以使用現有 lib
- 如果你已經有可執行的程式或腳本,而且你不想更動。
- 可以進行排程 → 排程觸發 WebJob
- 需要持續執行 → Continuous WebJob
- 只有需要的時候執行 → 需要的時候觸發 WebJob - 較客製化觸發或者控制 → WebJob SDK
Azure WebJob
WebJob 允許您在 App Service 中背景執行腳本或 console 應用程式。您可以在 Azure Portal 新增 WebJob 服務:你可以選擇連續或觸發兩種類型。連續類型 WebJob 將會執行至結束為止;觸發類型的 WebJob 則提供了可呼叫的 Webhook,以提供排程功能 。
WebJob 可以支援的格式如下:
- cmd、.bat、.exe (使用 Windows 命令提示字元)
- .ps1 (使用 PowerShell)
- .sh (使用 Bash)
- .php (使用 PHP)
- .py (使用 Python)
- .js (使用 Node.js)
- .jar (使用 Java)
觸發與排程類型的 WebJob 有許多使用方式:
- 需要在 App Service App 背景執行大量可執行之程式和腳本。
- 透過 CRON 表示式 執行的排程作業。
- 在 Azure Portal 或透過基本身份驗證使用 admin API 執行所需要的作業。 例如,特殊情況下,需要執行之故障排除或清除資料腳本。
- 執行 Console Application 等可執行程式。
- 執行批次處理和 Javascript 等腳本。
- 想要自動執行目前仍在手動觸發的可執行程式。
我們用一個簡單呼叫網站的腳本,讓 WebJob 執行,執行內容如下:
Invoke-WebRequest -UseBasicParsing -Uri http://www.google.com
接著我們將資料壓縮成 .zip,於 Azure Portal 上建立新的 WebJob,時間我們設定為每30秒執行一次。
WebJob 建立完成後如下圖:
到了執行時間,我們點選儀表板上的 紀錄 即可看見執行詳細資料
理所當然,您也能透過 Visual Studio 建立 WebJob 專案,並且上傳。詳細過程就不再贅述,您可以參考:使用 Visual Studio 開發和部署 WebJob - Azure App Service
0 留言