请选择 进入手机版 | 继续访问电脑版
返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

[编程语言] Go语言开发分布式任务调度 轻松搞定高性能Crontab 前8章

[复制链接]
崔娜娜 显示全部楼层 发表于 2018-11-9 09:14:36 |阅读模式 打印 上一主题 下一主题

登录网站,浏览更多精彩内容

您需要 登录 才可以下载或查看,没有账号?加入我们

x
Golang因其强大的协程机制,现已广泛应用于解决分布式环境下的高并发问题。本门课程中将结合Etcd与MongoDB实现一个基于Master-Worker分布式架构的任务调度系统。你不仅将掌握Golang的工程实践能力,而且会收获诸如CAP、Raft的分布式经典理论与架构经验,”工程能力”与”知识体系”齐头并进,实现华丽质变。8 @6 H9 F# k2 G$ ]% g2 X
, Z% O( f' \( b0 |  `
第1章 课程介绍( x! m8 |+ C8 `
本章中将介绍一下本课程的基本内容,包括:我们要做什么、要求什么基础、将学会哪些工具、收获哪些独家干货,以及课程具体安排。  r' a! U- i) V$ f, g+ j8 i0 |
1-1 导学视频, [( y9 G) h8 {  S6 J2 p! [

. Q8 _" x+ T3 h$ J第2章 如何执行shell命令
& I' a/ m% ?% m; s& Y- G5 A执行"定时任务"其实就是执行"shell命令"。在本章中,将首先带大家区分"程序"与"命令",接着了解bash命令解释器的2种工作模式,并图示分析shell执行任务的底层原理与涉及的系统调用。最后,我们使会用Go语言的Command标准库,实现任务的执行,输出捕获,杀死任务等重要功能。 ...0 R) C1 ~# g& I& E* P
2-1 原理介绍
. e/ Z3 j- q5 G2-2 执行任务- o) \( k! v7 Y5 s  c2 Y
2-3 捕获任务输出
7 {( ~2 `' Z2 e2 r2-4 强制结束任务4 R1 q( U& z* n! Q, ~9 o

) ?. o" F  M/ k% z第3章 如何解析cron表达式
! ]$ `$ e; C# Y! _. S+ scron表达式是配置定时任务执行周期的核心工具。在本章中,将首先分析cron表达式的构成以及解析逻辑,并利用开源项目cronexpr解析cron表达式并计算任务的下次调度时间。之后,我们将利用其实现任务并发调度逻辑,即同时调度多个不同的cron任务,作为后续实战课的一个重要前置知识。 ...
4 ^% B  e  P' B$ C4 }+ I9 b3-1 cron表达式原理5 ^9 W+ T( l  j( `  c( T+ A0 G
3-2 开源cron解析库
, ~4 ?1 c2 [9 m5 |9 e+ K- z: J3 ^3-3 调度多个cron  z6 v  u0 O. f& {- ?5 p

) ]- {* ~4 O  u- C. D第4章 如何应用etcd协调服务
; m# e5 b+ ^3 Q4 \6 Retcd等价于java生态中的zookeeper,基于raft协议工作,用于解决各种分布式应用场景的设计难题。本章中,我们将深入分析raft协议原理,逐步讲解etcd的核心API用法,为实战项目作好准备工作。
0 G9 _8 D6 P, x2 L. D4-1 功能与原理(上)8 J0 `1 x# \- @' D6 e' Z5 X3 K( H
4-2 功能与原理(下)5 c& o2 {7 O6 w0 c* t! P. K" |
4-3 搭建与连接etcd- q% b9 V3 r6 O
4-4 put写入kv" |4 ^8 \- o% X& X
4-5 get读取kv
' `; n0 G7 _: w6 w0 a0 D) V$ L4-6 get读取目录下所有Kv
3 J. I; s+ c* U$ z& S$ ?2 Y7 F4-7 delete删除kv6 i9 I+ E. g( p& d7 o* f
4-8 lease租约实现kv过期  i- a- Z5 d6 I* z" g
4-9 watch监听目录变化
8 D! c% f4 j6 V9 ?# N) O5 m# V4-10 op取代get,put,delete方法
" R, e* Q# ]1 I* @3 {8 V3 ^4-11 事务tnx实现分布式锁(上)! c8 E6 a# B% w. J- ?/ E
4-12 事务tnx实现分布式锁(下). o/ G9 R- k% W& f* ?- G

* O) ~. j4 d9 l+ D# V4 w4 ?, q第5章 应用mongodb实现分布式存储) }! l% r$ W% ?0 `0 O
mongodb是一个分布式的海量存储服务,常用于存储大量的日志类数据。本章中,将首先分析mongodb优势、原理、应用场景,让大家对其架构和功能有所了解。然后,我们会搭建mongodb服务端,开发若干示例程序,包括:插入,查找,删除。后续实战课将使用mongodb完成任务执行日志的保存与查看。 ...4 [2 m1 J2 R7 U7 T
5-1 moongodb简介&基础语法概述- _: a/ u9 q9 e- w
5-2 moongodb原理概述6 N' M$ H7 F: W; _0 E0 I
5-3 搭建与连接mongodb' T8 h7 `7 k6 t1 ?7 E' D
5-4 InsertOne写入单行记录% I) m* F# m  f- v" I# V% W
5-5 InsertMany写入多行记录
$ x# C! g3 c& }, g; I5-6 Find查询记录
9 V* o: X- g8 d1 |4 H# y8 P5-7 Delete删除记录
# M( E0 ?3 \1 N/ f' z$ V+ U4 U+ P1 X: z4 q
第6章 分布式crontab架构分析) B- h+ z0 A: U, Q. D
本章中,将带领大家对分布式crontab的整体架构进行功能分析,以及功能拆解。我们会结合整体架构图,包括master节点、worker节点、etcd服务、mongodb服务各自的职责和数据流关系进行相关内容讲解。' d) S% m5 Q1 N5 }2 A# C7 ?7 Q( p( N/ g
6-1 架构分析
9 \1 L8 }7 j" w  o" Z6-2 master-worker整体架构2 y) {! R: C1 I2 m8 Z: ~
6-3 master功能点与实现思路
7 u4 N6 r$ u: F& n; p9 X) q2 }6-4 worker功能点与实现思路
% c' M" v( b9 W2 {* R2 T" y1 c$ t4 h$ w
第7章 实现master) L9 C2 Y( H3 z+ ~. g8 b( _# S
万丈高楼平地起,在本章中,将会带领大家创建github项目,并初始化符合golang规范的项目结构,会带领大家安装依赖的etcd、mongodb包,告诉大家如何正确使用go get命令。之后,我们会逐一实现任务管理API,并实现前后端分离的任务管理后台。...
) e2 w3 |! T7 ]" V8 j2 J7-1 创建项目与搭建基本框架(上)4 _! q  l$ u/ U$ ^
7-2 创建项目与搭建基本框架(下)
' }9 y, f" _1 y6 m4 {8 u% m' O7-3 job save接口开发-保存到etcd(上)
2 k7 J% Y1 B( V3 J3 z7-4 job save接口开发-保存到etcd(中)
5 H" d) Y5 z! g  B* Q7-5 job save接口开发-保存到etcd(下)9 z8 _+ d# ?+ N4 p
7-6 job delete接口开发:从etcd中删除任务& P9 B6 u; I! s
7-7 job-list接口开发:从etcd获取所有任务
0 U3 M/ Q. m! s3 k& p3 p" n3 D7-8 job-kill接口开发:在etcd中标记结束任务
' Y3 F7 S- o& C7 ^. w0 N3 `, ]7-9 http支持静态文件路由$ }& g7 ^- W: u' P/ i
7-10 利用bootstrap搭建页面骨架
& e3 Z! L( ]6 J7 j, C2 p7-11 ajax获取任务列表并展示
% C7 `! q4 b- T- ^, s7-12 实现删除按钮
% o! S2 F. N" y% b, G6 M7 e& u7-13 实现强杀与编辑按钮. Z2 b" I2 G* x
7-14 实现新建任务按钮4 W$ X+ o8 p2 q

( C3 ^3 x& [$ N. p第8章 实现worker/ C5 k, V- t6 r# b  I- u3 E* T
在本章中,我们首先让worker实时同步etcd中的任务列表。其次,会基于cronexpr与协程实现一个高并发的定时任务调度模块。我们会通过etcd实现分布式乐观锁,解决多个worker节点并发调度同一个任务的问题。最后,把任务执行的输出与错误码作为日志,保存到mongodb中供web管理后台查看。...
* Z) n0 S# k# v$ P; x; |8-1 worker功能概述8 P  @4 h. J2 s) x3 H
8-2 启动后从etcd获取任务列表
% z7 [! i( c4 \8 M  h' T  S8-3 监听etcd中任务变化9 [3 [  U4 n, [
8-4 实现任务调度协程(上)' ~/ Z: r$ y' s( a. L
8-5 实现任务调度协程(下); ]. |5 z! d+ }6 U7 P
8-6 实现任务执行模块(上)
( E5 M' @# h4 h, U: V2 e8-7 实现任务执行模块(下)& z  I+ e2 C- M  }# O. V3 X
8-8 利用分布式锁避免任务并发(上)5 A2 n% v4 ^+ r- \8 `
8-9 利用分布式锁避免任务并发(下)
( m, v6 S: {4 }/ ], a2 A8-10 监听etcd中的强杀任务通知
2 D9 X& t7 v2 K" Z$ d0 x. X% \) F  U- H8-11 保存任务日志到mongodb(上)
1 u5 m6 i' }, P6 l8-12 保存任务日志到mongodb(中)3 W1 j! ?, B( b8 T7 Y
8-13 保存任务日志到mongodb(下)
* k. ~! w4 l' l& k* Z. Y, @' l+ i  J  t, K
" G) [+ D1 h# y4 m; ~: m

& e$ F. v+ b" Y. o4 [8 F* t  P8 L2 [
游客,如果您要查看本帖隐藏内容请回复
+ u! S1 z" m" H/ k
中国领先的数字技术资源交流中心!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

商乾全球电商人、电商交流学习与电商实战技术分享、电商爬虫、生活交流专业网站
  • 官方手机版

  • 微信公众号

  • 商务合作