Go語言開發分散式任務排程 輕鬆搞定高效能Crontab
Go語言開發分散式任務排程 輕鬆搞定高效能Crontab
-
第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 課程總結&課後練習
下載地址: