漫潮者,私有云,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 ^! ?& P
2-1 原理介绍
. t' y# y% x8 e: p/ b" a
2-2 执行任务
7 ~3 S @! n- ]. u
2-3 捕获任务输出
8 G8 D% ~* z' _3 m* l
2-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 A
3-1 cron表达式原理
+ m7 [0 z8 j9 q; {6 }+ M" V
3-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' Y
etcd等价于java生态中的zookeeper,基于raft协议工作,用于解决各种分布式应用场景的设计难题。本章中,我们将深入分析raft协议原理,逐步讲解etcd的核心API用法,为实战项目作好准备工作。
6 A" H* I7 J1 \# }' a
4-1 功能与原理(上)
2 K0 |* {+ M6 m, X+ n2 h' }0 h# k
4-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; x
4-6 get读取目录下所有Kv
/ {5 P; E8 n% x6 T" }+ T+ K; E/ z
4-7 delete删除kv
6 k( i# R4 B% n0 \/ W
4-8 lease租约实现kv过期
T" e/ @( ]! b
4-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 S
4-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+ u
mongodb是一个分布式的海量存储服务,常用于存储大量的日志类数据。本章中,将首先分析mongodb优势、原理、应用场景,让大家对其架构和功能有所了解。然后,我们会搭建mongodb服务端,开发若干示例程序,包括:插入,查找,删除。后续实战课将使用mongodb完成任务执行日志的保存与查看。 ...
4 ]/ ~! S* C. b9 X2 ^
5-1 moongodb简介&基础语法概述
/ w8 u- j! ]0 ^. M/ o8 B& j8 H, b
5-2 moongodb原理概述
3 l+ S' N& ` s% _
5-3 搭建与连接mongodb
& |. z( \7 U) P( L
5-4 InsertOne写入单行记录
; \1 ~3 n- Y5 K2 g
5-5 InsertMany写入多行记录
2 P! j+ s& ?( }( }0 w
5-6 Find查询记录
, E9 I; J3 w( u& e
5-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 b
6-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) w
6-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 r
7-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/ A
7-7 job-list接口开发:从etcd获取所有任务
7 I* c0 Z5 o7 m) R
7-8 job-kill接口开发:在etcd中标记结束任务
1 I+ H& g7 E+ V' w. J/ J5 ?9 r2 D
7-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% V
7-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 g
8-1 worker功能概述
' ?3 Q n2 m8 R$ { {" V6 A
8-2 启动后从etcd获取任务列表
$ ?9 I" m h# [' u4 r
8-3 监听etcd中任务变化
" y( Q/ n4 G8 y8 e& O+ U. P
8-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* `+ z
8-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: X
8-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% M
2 H. }) p* Z1 ^1 r. N: {1 i- O
欢迎光临 漫潮者,私有云,NAS,新媒体电商.软件开发,商乾 (https://www.aurrel.com/)
Powered by Discuz! X3.4