最近離職交接空檔期,在慕課網上學習了下go語言實現分布式crontab任務調度系統。自己也跟隨視頻實現了一把(跟原版略有不同)。現把成果記錄一下。
最終代碼: https://github.com/funkol2007/distributed_crontab
實現一個分布式crontab系統。用戶可以通過前端頁面配置任務和cron表達式和命令來執行定時任務,相比較linux自帶的crontab來說,本項目可以方便看到執行結果,且分布式部署可以避免單點問題,用戶不用登陸到各個機器去配置任務,操作方便。同時用戶可以通過頁面查看任務執行的情況。當然,目前做的還比較簡單,對任務的執行時間沒有超時機制,但提供了手動的刪除和強殺正在執行的任務操作。
go實現分布式存儲、主要分為master和worker兩個角色。通過etcd來作為服務發現和分布式鎖的實現。MongoDB作為數據量存儲日志信息,方便查詢執行結果。同時也可以通過本地log日志查看模塊的執行情況。
master通過跟前端交互獲取用戶的任務操作信息,通過與etcd交互和mongodb交互來完成建立、刪除、編輯、強殺、查看健康woker節點以及查看日志等功能。
woker通過監控etcd的節點變化來執行任務的執行、強殺等操作,同時通過etcd來實現自身服務的注冊功能以及吧執行結果寫入MongoDB作為日志存儲。
有很多地方有待優化,比如
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态