漫潮者,私有云,NAS,新媒体电商.软件开发,商乾

标题: Go语言开发分布式任务调度 轻松搞定高性能Crontab 前8章 [打印本页]

作者: 崔娜娜    时间: 2018-11-9 09:14
标题: Go语言开发分布式任务调度 轻松搞定高性能Crontab 前8章
Golang因其强大的协程机制,现已广泛应用于解决分布式环境下的高并发问题。本门课程中将结合Etcd与MongoDB实现一个基于Master-Worker分布式架构的任务调度系统。你不仅将掌握Golang的工程实践能力,而且会收获诸如CAP、Raft的分布式经典理论与架构经验,”工程能力”与”知识体系”齐头并进,实现华丽质变。
- A7 z4 @$ {5 X1 l1 F
; U) f: U4 X: r6 Y第1章 课程介绍  {& `, x2 W1 R3 ?! E1 o9 m+ ?: T
本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。1 C# e. s+ o6 H) g
1-1 导学视频, E! r, @3 q9 f, I" L  s* Z
0 u/ ?  c( a, H' y# L
第2章 如何执行shell命令
. y* l: y3 Z, c. T) k. c执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作模式,并图示分析shell执行任务的底层原理与涉及的系统调用。最后,我们使会用Go语言的Command标准库,实现任务的执行,输出捕获,杀死任务等重要功能。 ...
. ], R9 y2 V" ?2 ^! ?& P2-1 原理介绍
. t' y# y% x8 e: p/ b" a2-2 执行任务
7 ~3 S  @! n- ]. u2-3 捕获任务输出
8 G8 D% ~* z' _3 m* l2-4 强制结束任务
: t4 A- y. F7 ?" J0 d  f+ w+ I0 g% e( Q5 o/ K: `3 R" H
第3章 如何解析cron表达式
! F6 a! k2 c- S6 ]cron表达式是配置定时任务执行周期的核心工具。在本章中,将首先分析cron表达式的构成以及解析逻辑,并利用开源项目cronexpr解析cron表达式并计算任务的下次调度时间。之后,我们将利用其实现任务并发调度逻辑,即同时调度多个不同的cron任务,作为后续实战课的一个重要前置知识。 ...
( U& M$ M+ @4 @/ `0 B/ G9 A3-1 cron表达式原理
+ m7 [0 z8 j9 q; {6 }+ M" V3-2 开源cron解析库2 W% ^7 w0 c$ b# f# {* @& A
3-3 调度多个cron
5 X% D5 R- I9 \* g# L7 T8 J
- V+ f) ^& J. l9 b, N第4章 如何应用etcd协调服务
: A; u) X( n" Z0 N' Yetcd等价于java生态中的zookeeper,基于raft协议工作,用于解决各种分布式应用场景的设计难题。本章中,我们将深入分析raft协议原理,逐步讲解etcd的核心API用法,为实战项目作好准备工作。
6 A" H* I7 J1 \# }' a4-1 功能与原理(上)
2 K0 |* {+ M6 m, X+ n2 h' }0 h# k4-2 功能与原理(下)5 M# ?: P! x' q& b3 U) a3 w! \0 V
4-3 搭建与连接etcd, j  @/ J5 W1 Y/ e
4-4 put写入kv; s2 H6 j6 T! f, H7 Y' b! \# H
4-5 get读取kv
; o/ l" Z& q6 k; x4-6 get读取目录下所有Kv/ {5 P; E8 n% x6 T" }+ T+ K; E/ z
4-7 delete删除kv6 k( i# R4 B% n0 \/ W
4-8 lease租约实现kv过期
  T" e/ @( ]! b4-9 watch监听目录变化! D" O/ B, r/ [, L0 D
4-10 op取代get,put,delete方法9 H" L2 S0 j; Z
4-11 事务tnx实现分布式锁(上)
1 z! l3 W0 _: g$ E4 S4-12 事务tnx实现分布式锁(下)
- y2 I) N- y& s* Q
, c' e8 D# t6 k0 v/ e1 j% L6 Q% L第5章 应用mongodb实现分布式存储
4 R# z% |1 W) f$ P5 d+ umongodb是一个分布式的海量存储服务,常用于存储大量的日志类数据。本章中,将首先分析mongodb优势、原理、应用场景,让大家对其架构和功能有所了解。然后,我们会搭建mongodb服务端,开发若干示例程序,包括:插入,查找,删除。后续实战课将使用mongodb完成任务执行日志的保存与查看。 ...4 ]/ ~! S* C. b9 X2 ^
5-1 moongodb简介&基础语法概述
/ w8 u- j! ]0 ^. M/ o8 B& j8 H, b5-2 moongodb原理概述3 l+ S' N& `  s% _
5-3 搭建与连接mongodb
& |. z( \7 U) P( L5-4 InsertOne写入单行记录
; \1 ~3 n- Y5 K2 g5-5 InsertMany写入多行记录
2 P! j+ s& ?( }( }0 w5-6 Find查询记录
, E9 I; J3 w( u& e5-7 Delete删除记录& a" U( b% ?7 \$ K
2 e/ T7 ?4 Z# Q- a' s' T
第6章 分布式crontab架构分析0 s# X# ?9 R9 [0 t. g
本章中,将带领大家对分布式crontab的整体架构进行功能分析,以及功能拆解。我们会结合整体架构图,包括master节点、worker节点、etcd服务、mongodb服务各自的职责和数据流关系进行相关内容讲解。
: Q5 o& R2 z; z7 T8 _  [2 k5 b6-1 架构分析! I+ R* m# ]! V) g9 ~; Y/ K
6-2 master-worker整体架构0 m0 @, O- k& T! }' O* H3 A
6-3 master功能点与实现思路
7 c5 g& h- d) w6-4 worker功能点与实现思路4 z" L' V1 g6 R# B0 p' |8 ~
" [2 Y. B% P0 b) ~) N, P! \
第7章 实现master
% P+ _9 f0 m8 N9 y% n) [2 D! M" |1 M万丈高楼平地起,在本章中,将会带领大家创建github项目,并初始化符合golang规范的项目结构,会带领大家安装依赖的etcd、mongodb包,告诉大家如何正确使用go get命令。之后,我们会逐一实现任务管理API,并实现前后端分离的任务管理后台。...5 ]2 i' ?- J+ P6 p: l. R' E
7-1 创建项目与搭建基本框架(上)
2 C$ R+ R& S  y* s) v6 r7-2 创建项目与搭建基本框架(下)6 F7 `7 ~% I, ~) g0 s! a) y
7-3 job save接口开发-保存到etcd(上)- ]" Q6 s9 x0 m% \! v  e
7-4 job save接口开发-保存到etcd(中)
. h5 S3 o7 z+ P! \7-5 job save接口开发-保存到etcd(下): B  g. n0 c0 h8 h
7-6 job delete接口开发:从etcd中删除任务
4 R* K% `5 X" b: {+ C" r% e. U2 y/ A7-7 job-list接口开发:从etcd获取所有任务
7 I* c0 Z5 o7 m) R7-8 job-kill接口开发:在etcd中标记结束任务
1 I+ H& g7 E+ V' w. J/ J5 ?9 r2 D7-9 http支持静态文件路由5 Z. s( b/ o8 @6 b
7-10 利用bootstrap搭建页面骨架/ K1 h5 |2 D+ r
7-11 ajax获取任务列表并展示' H* f! Z0 |) v
7-12 实现删除按钮* O+ i1 @; D% r# o$ ?
7-13 实现强杀与编辑按钮
4 j: V1 Y7 n5 R; U. o9 B3 p% V7-14 实现新建任务按钮
2 W4 |4 E) x; G+ I2 {: W7 G% p3 Q7 p: Y
第8章 实现worker
: b# d! I- q1 J# ~# W. Y在本章中,我们首先让worker实时同步etcd中的任务列表。其次,会基于cronexpr与协程实现一个高并发的定时任务调度模块。我们会通过etcd实现分布式乐观锁,解决多个worker节点并发调度同一个任务的问题。最后,把任务执行的输出与错误码作为日志,保存到mongodb中供web管理后台查看。...
5 R2 G; S4 r# _! G2 k" B  g8-1 worker功能概述' ?3 Q  n2 m8 R$ {  {" V6 A
8-2 启动后从etcd获取任务列表
$ ?9 I" m  h# [' u4 r8-3 监听etcd中任务变化
" y( Q/ n4 G8 y8 e& O+ U. P8-4 实现任务调度协程(上)  _  p3 }) V1 x1 \6 N) X% Q
8-5 实现任务调度协程(下)
* t1 t' {# M* I/ F3 L5 Y2 _8-6 实现任务执行模块(上): w2 j7 r4 t* Q3 ]% o3 F
8-7 实现任务执行模块(下); c& ?% O. p4 S, T2 ]
8-8 利用分布式锁避免任务并发(上)
* j* U$ x2 c8 x6 l% f# x* `+ z8-9 利用分布式锁避免任务并发(下)! t3 N  I8 Q9 A8 h
8-10 监听etcd中的强杀任务通知' e2 z: A, W" ?  @- I& t3 l
8-11 保存任务日志到mongodb(上)
/ {. z) |5 R2 O5 T9 `1 x! \5 K: X8-12 保存任务日志到mongodb(中)( S2 o- u  S2 s) n$ ^
8-13 保存任务日志到mongodb(下)
2 }& W) R  F1 Q# ~! j0 ?
/ ]) D; }& k4 o5 [- C' y; [- ~1 @$ ?( l* h

; M! a8 Z5 \* S( E% M2 H. }) p* Z1 ^1 r. N: {1 i- O





欢迎光临 漫潮者,私有云,NAS,新媒体电商.软件开发,商乾 (https://www.aurrel.com/) Powered by Discuz! X3.4