Go語言開發分散式任務排程 輕鬆搞定高效能Crontab
第1章 課程介紹
本章中將介紹一下本課程的基本內容,包括:我們要做什麼、要求什麼基礎、將學會哪些工具、收穫哪些獨家乾貨,以及課程具體安排。
第2章 如何執行shell命令
執行"定時任務"其實就是執行"shell命令"。在本章中,將首先帶大家區分"程式"與"命令",接著瞭解bash命令直譯器的2種工作模式,並圖示分析shell執行任務的底層原理與涉及的系統呼叫。最後,我們使會用Go語言的Command標準庫,實現任務的執行,輸出捕獲,殺死任務等重要功能。 ...
第3章 如何解析cron表示式
cron表示式是配置定時任務執行週期的核心工具。在本章中,將首先分析cron表示式的構成以及解析邏輯,並利用開源專案cronexpr解析cron表示式並計算任務的下次排程時間。之後,我們將利用其實現任務併發排程邏輯,即同時排程多個不同的cron任務,作為後續實戰課的一個重要前置知識。 ...
第4章 如何應用etcd協調服務
etcd等價於java生態中的zookeeper,基於raft協議工作,用於解決各種分散式應用場景的設計難題。本章中,我們將深入分析raft協議原理,逐步講解etcd的核心API用法,為實戰專案作好準備工作。
第5章 應用mongodb實現分散式儲存
mongodb是一個分散式的海量儲存服務,常用於儲存大量的日誌類資料。本章中,將首先分析mongodb優勢、原理、應用場景,讓大家對其架構和功能有所瞭解。然後,我們會搭建mongodb服務端,開發若干示例程式,包括:插入,查詢,刪除。後續實戰課將使用mongodb完成任務執行日誌的儲存與檢視。 ...
第6章 分散式crontab架構分析
本章中,將帶領大家對分散式crontab的整體架構進行功能分析,以及功能拆解。我們會結合整體架構圖,包括master節點、worker節點、etcd服務、mongodb服務各自的職責和資料流關係進行相關內容講解。
第7章 實現master
萬丈高樓平地起,在本章中,將會帶領大家建立github專案,並初始化符合golang規範的專案結構,會帶領大家安裝依賴的etcd、mongodb包,告訴大家如何正確使用go get命令。之後,我們會逐一實現任務管理API,並實現前後端分離的任務管理後臺。...
第8章 實現worker
在本章中,我們首先讓worker實時同步etcd中的任務列表。其次,會基於cronexpr與協程實現一個高併發的定時任務排程模組。我們會通過etcd實現分散式樂觀鎖,解決多個worker節點併發排程同一個任務的問題。最後,把任務執行的輸出與錯誤碼作為日誌,儲存到mongodb中供web管理後臺檢視。...
第9章 完善系統
本章中,我們首先為master新增日誌檢視API,在web後臺可以檢視mongodb中儲存的任務執行日誌。此後,會實現服務註冊與發現功能。最後,將演示如何配置nginx upstream反向代理實現高可用的master叢集,配置systemctl來實現對master/worker守護程序的保活功能。...
第10章 課程總結&課後練習
本章中,將帶領大家回顧整個課程,也給大家提出一些簡單可行的課後練習題,包括任務超時限制,任務失敗告警。分散式任務排程還有很多細節可以打磨,大家一定要多多動腦動手呦!
下載地址:Go語言開發分散式任務排程