ScheduleMaster開源的分佈式任務調度系統

ScheduleMaster是一個開源的分佈式任務調度系統,它基於.Net Core 3.0平臺構建,支持跨平臺多節點部署運行。

主要特性

  • 簡易的Web UI操作;
  • 任務動態管理:創建、啟動、停止、暫停、恢復、刪除等;
  • 高可用支持,跨平臺多節點部署。
  • 數據安全性,不會出現多實例併發調度。
  • 支持自定義參數設置;
  • 支持設置監護人,運行異常時郵件告警;
  • 支持設置任務依賴,自動觸發,共享任務結果;
  • 插件式開發,任務運行環境隔離;
  • 全鏈路日誌系統,運行軌跡輕鬆掌控;
  • 用戶訪問控制;
  • 提供開放REST API,業務系統可以無縫集成;
  • 調度報表統計;
  • 任務分組管理;
  • 計劃表拆分實現複用;
  • 指定節點運行;
  • 支持http任務配置;
  • 支持延時任務;
  • 支持異常策略配置(失敗重試、超時控制等);
  • 接入redis緩存;
  • 用戶權限更加精細化;
  • 報表統計完善;

技術棧

Asp.Net Core3.0、EntityFramework Core3.0、Mysql5.7、Quartz.Net、BeyondAdmin、Jquery...

系統架構圖

ScheduleMaster開源的分佈式任務調度系統

如何使用

使用前請準備好所需環境:Visual Studio 2019、.Net Core3.0 SDK、Mysql 5.7、Centos(可選)、Docker(可選)。

下載源碼到本地,然後用VS2019打開解決方案並編譯通過。

打開項目Hos.ScheduleMaster.Web根目錄下的appsettings.json文件,先修改Mysql數據庫連接字符串以保證數據庫正常訪問,再找到NodeSetting節點,修改IP字段為master將要部署的ip地址(master端口為30000不用修改),在項目上右擊選擇發佈...,發佈到本地文件夾。

打開項目Hos.ScheduleMaster.QuartzHost根目錄下的appsettings.json文件,同樣先修改Mysql連接字符串,再找到NodeSetting節點,設置worker的名稱IdentityName,修改IP字段為將要部署的ip地址,Port字段為要監聽的地址(推薦為30001),在項目上右擊選擇發佈...,發佈到本地文件夾。如果要新增worker,按同樣方式配置IdentityName、IP、Port即可,worker在啟動後會把自己的信息注入到數據庫中,在master中可以看到。

其他發佈方式亦可。下面以運行2個worker節點為例:

在Windows中運行

  • 找到master的發佈目錄,執行命令dotnet Hos.ScheduleMaster.Web.dll啟動程序,首次啟動會自動遷移生成數據庫結構並初始化種子數據,打開瀏覽器輸入ip和端口訪問即可(初始用戶名admin,密碼111111)。
  • 找到worker的發佈目錄,執行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30001啟動程序,打開瀏覽器輸入ip和端口會看到一個歡迎頁面,表示worker已啟動成功。
  • 修改worker下的appsettings.json文件為worker2的配置(如果發佈前已經修改可跳過),執行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30002啟動程序.
  • 登錄到master中,可以看到節點管理菜單下各節點的運行狀態。

在Linux(Centos)中運行

運行前請確保機器已經安裝好.Net Core3.0運行時環境。

把發佈文件複製到Centos中,操作步驟同Windows。

在Docker中運行

  • 在master的發佈目錄中執行docker build -t ms_master .命令生成master鏡像,再執行docker run -d -p 30000:30000 --name="mymaster" ms_master運行容器。
  • 在worker的發佈目錄中執行docker build -t ms_worker .命令生成worker鏡像,再執行docker run --env identity=docker-worker1 --env port=30001 -d -p 30001:80 --name="myworker1" ms_worker運行容器啟動worker1。
  • 繼續執行docker run --env identity=docker-worker2 --env port=30002 -d -p 30002:80 --name="myworker2" ms_worker運行容器啟動worker2。
  • 執行docker ps查看各容器運行狀態。

效果圖

ScheduleMaster開源的分佈式任務調度系統

ScheduleMaster開源的分佈式任務調度系統

ScheduleMaster開源的分佈式任務調度系統

ScheduleMaster開源的分佈式任務調度系統


分享到:


相關文章: