1. 程式人生 > >2018年Go語言打造分散式Crontab 輕鬆搞定高效能任務排程

2018年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協議的工作原理,瞭解為什麼raft協議可以實現資料在叢集中的強一致性同步。此後,我們將搭建etcd服務端,開發若干個示例程式,包括:kv讀寫,watch監聽機制,lease租約,txn事務,分散式鎖。後續實戰課程...

  • 第5章 應用mongodb實現分散式儲存

mongodb是一個分散式的海量儲存服務,常用於儲存大量的日誌類資料。本章中,將首先分析mongodb優勢、原理、應用場景,讓大家對其架構和功能有所瞭解。然後,我們會搭建mongodb服務端,開發若干示例程式,包括:插入,查詢,刪除。後續實戰課將使用mongodb完成任務執行日誌的儲存與檢視。 ...

  • 第6章 分散式crontab架構分析

本章中,將帶領大家對分散式crontab的整體架構進行功能分析,以及功能拆解。我們會結合整體架構圖,包括master節點、worker節點、etcd服務、mongodb服務各自的職責和資料流關係進行相關內容講解。

  • 第7章 實現master

萬丈高樓平地起,在本章中,將會帶領大家建立github專案,並初始化符合golang規範的專案結構,會帶領大家安裝依賴的etcd、mongodb包,告訴大家如何正確使用go get命令。之後,我們會逐一實現任務管理API,包括:儲存、刪除、列表、強殺任務共4個介面,均通過操作etcd完成任務的儲存管理,介面提供給web後臺呼叫。最後,我...

  • 第8章 實現worker

在本章中,我們首先讓worker實時同步etcd中的任務列表。其次,會基於cronexpr與協程實現一個高併發的定時任務排程模組。我們會通過etcd實現分散式樂觀鎖,解決多個worker節點併發排程同一個任務的問題。最後,把任務執行的輸出與錯誤碼作為日誌,儲存到mongodb中供web管理後臺檢視。...

  • 第9章 完善系統

本章中,我們首先為master新增日誌檢視API,在web後臺可以檢視mongodb中儲存的任務執行日誌。此後,會實現服務註冊與發現功能,這是微服務中的重要概念。我們讓worker註冊在etcd,並讓master實現web介面,線上檢視健康的worker節點列表。最後,將演示如何配置nginx upstream反向代理實現高可用的master叢集,配置systemctl...

  • 第10章 課程總結

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

下載地址:百度網盤