1. 程式人生 > >Go語言開發分布式任務調度 輕松搞定高性能Crontab

Go語言開發分布式任務調度 輕松搞定高性能Crontab

監聽 接口 記錄 簡單 inux 寫入 可用 初始化 創建

第1章 課程介紹
本章中將介紹一下本課程的基本內容,包括:我們要做什麽、要求什麽基礎、將學會哪些工具、收獲哪些獨家幹貨,以及課程具體安排。
1-1 導學視頻

第2章 如何執行shell命令
執行"定時任務"其實就是執行"shell命令"。在本章中,將首先帶大家區分"程序"與"命令",接著了解bash命令解釋器的2種工作模式,並圖示分析shell執行任務的底層原理與涉及的系統調用。最後,我們使會用Go語言的Command標準庫,實現任務的執行,輸出捕獲,殺死任務等重要功能。 ...
2-1 原理介紹
2-2 執行任務
2-3 捕獲任務輸出
2-4 強制結束任務

第3章 如何解析cron表達式
cron表達式是配置定時任務執行周期的核心工具。在本章中,將首先分析cron表達式的構成以及解析邏輯,並利用開源項目cronexpr解析cron表達式並計算任務的下次調度時間。之後,我們將利用其實現任務並發調度邏輯,即同時調度多個不同的cron任務,作為後續實戰課的一個重要前置知識。 ...


3-1 cron表達式原理
3-2 開源cron解析庫
3-3 調度多個cron

第4章 如何應用etcd協調服務
etcd等價於java生態中的zookeeper,基於raft協議工作,用於解決各種分布式應用場景的設計難題。本章中,我們將深入分析raft協議原理,逐步講解etcd的核心API用法,為實戰項目作好準備工作。
4-1 功能與原理(上)
4-2 功能與原理(下)
4-3 搭建與連接etcd
4-4 put寫入kv
4-5 get讀取kv
4-6 get讀取目錄下所有Kv
4-7 delete刪除kv
4-8 lease租約實現kv過期
4-9 watch監聽目錄變化
4-10 op取代get,put,delete方法

4-11 事務tnx實現分布式鎖(上)
4-12 事務tnx實現分布式鎖(下)

第5章 應用mongodb實現分布式存儲
mongodb是一個分布式的海量存儲服務,常用於存儲大量的日誌類數據。本章中,將首先分析mongodb優勢、原理、應用場景,讓大家對其架構和功能有所了解。然後,我們會搭建mongodb服務端,開發若幹示例程序,包括:插入,查找,刪除。後續實戰課將使用mongodb完成任務執行日誌的保存與查看。 ...
5-1 moongodb簡介&基礎語法概述
5-2 moongodb原理概述
5-3 搭建與連接mongodb
5-4 InsertOne寫入單行記錄
5-5 InsertMany寫入多行記錄

5-6 Find查詢記錄
5-7 Delete刪除記錄

第6章 分布式crontab架構分析
本章中,將帶領大家對分布式crontab的整體架構進行功能分析,以及功能拆解。我們會結合整體架構圖,包括master節點、worker節點、etcd服務、mongodb服務各自的職責和數據流關系進行相關內容講解。
6-1 架構分析
6-2 master-worker整體架構
6-3 master功能點與實現思路
6-4 worker功能點與實現思路

第7章 實現master
萬丈高樓平地起,在本章中,將會帶領大家創建github項目,並初始化符合golang規範的項目結構,會帶領大家安裝依賴的etcd、mongodb包,告訴大家如何正確使用go get命令。之後,我們會逐一實現任務管理API,並實現前後端分離的任務管理後臺。...
7-1 創建項目與搭建基本框架(上)
7-2 創建項目與搭建基本框架(下)
7-3 job save接口開發-保存到etcd(上)
7-4 job save接口開發-保存到etcd(中)
7-5 job save接口開發-保存到etcd(下)
7-6 job delete接口開發:從etcd中刪除任務
7-7 job-list接口開發:從etcd獲取所有任務
7-8 job-kill接口開發:在etcd中標記結束任務
7-9 http支持靜態文件路由
7-10 利用bootstrap搭建頁面骨架
7-11 ajax獲取任務列表並展示
7-12 實現刪除按鈕
7-13 實現強殺與編輯按鈕
7-14 實現新建任務按鈕

第8章 實現worker
在本章中,我們首先讓worker實時同步etcd中的任務列表。其次,會基於cronexpr與協程實現一個高並發的定時任務調度模塊。我們會通過etcd實現分布式樂觀鎖,解決多個worker節點並發調度同一個任務的問題。最後,把任務執行的輸出與錯誤碼作為日誌,保存到mongodb中供web管理後臺查看。...
8-1 worker功能概述
8-2 啟動後從etcd獲取任務列表
8-3 監聽etcd中任務變化
8-4 實現任務調度協程(上)
8-5 實現任務調度協程(下)
8-6 實現任務執行模塊(上)
8-7 實現任務執行模塊(下)
8-8 利用分布式鎖避免任務並發(上)
8-9 利用分布式鎖避免任務並發(下)
8-10 監聽etcd中的強殺任務通知
8-11 保存任務日誌到mongodb(上)
8-12 保存任務日誌到mongodb(中)
8-13 保存任務日誌到mongodb(下)

第9章 完善系統
本章中,我們首先為master添加日誌查看API,在web後臺可以查看mongodb中保存的任務執行日誌。此後,會實現服務註冊與發現功能。最後,將演示如何配置nginx upstream反向代理實現高可用的master集群,配置systemctl來實現對master/worker守護進程的保活功能。...
9-1 job-log接口開發之master支持mongodb日誌查詢
9-2 web界面開發:查看任務執行日誌
9-3 worker服務註冊到etcd
9-4 worker-list接口開發之master從etcd查詢worker列表
9-5 web界面開發:查看健康worker列表
9-6 分布式部署到linux服務器(上)
9-7 分布式部署到linux服務器(下)
9-8 常用命令總結

第10章 課程總結&課後練習
本章中,將帶領大家回顧整個課程,也給大家提出一些簡單可行的課後練習題,包括任務超時限制,任務失敗告警。分布式任務調度還有很多細節可以打磨,大家一定要多多動腦動手呦!
10-1 課程總結&課後練習

下載地址:百度網盤下載

Go語言開發分布式任務調度 輕松搞定高性能Crontab