go實現分布式存儲,go語言實現分布式crontab任務系統

 2023-11-09 阅读 16 评论 0

摘要:寫在前面 最近離職交接空檔期,在慕課網上學習了下go語言實現分布式crontab任務調度系統。自己也跟隨視頻實現了一把(跟原版略有不同)。現把成果記錄一下。 最終代碼: https://github.com/funkol2007/distributed_crontab 系統介紹 實現目標࿱

寫在前面

最近離職交接空檔期,在慕課網上學習了下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作為日志存儲。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

后續優化

有很多地方有待優化,比如

  • 任務執行時間的限制,可以支持配置任務執行的最大時長,超過強殺。
  • master目前雖然支持多機部署但是沒有主從機制,可以實現master的選主機制,防止并發問題。只有主才能執行etcd 的"寫入操作"
  • 代碼結構上有一定的冗余,可以通過復用以實現精簡

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/170133.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息