2 Q5 N* } o3 G' ?
〖课程介绍〗* [4 A' ?. R+ O7 _
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平3 n9 k, p. s3 \) G0 w+ }! j
/ s- M" c) z7 k" z- [% j6 j; I9 r〖课程目录〗" H8 a- U: X. a* c9 ^
第1章 课程介绍【预备,初识】
" L+ R- j/ v) D! T课程内容的整体介绍以及学习建议。" A5 D. K; d+ E* o* [4 `
1-1 Go抽奖系统导学 试看
6 I8 [; x. h1 w1 i" b: q+ F" C- k, Y; r) I
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
8 x( W/ p+ \! V% U看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。..., v5 y) O- b: L& u' e% c
2-1 年会抽奖_实现分析- b- r4 d* O8 f
2-2 年会抽奖基本功能实现; X0 a' ?7 u: Z) h9 ^+ H. l7 W
2-3 编写web单元测试和并发安全问题
. W& p2 n* D( t& V2-4 用互斥锁解决并发安全问题
$ @: j6 @& u( C1 A0 j+ t1 T2-5 彩票_实现分析/ A t" [4 B! W+ q! K
2-6 刮刮乐和双色球 试看
9 Y4 d7 p9 B' {2-7 微信摇一摇_实现分析# E& y1 A) u' x4 b' J- W2 E
2-8 微信摇一摇实现(上)/ S+ X# {5 I6 J1 j7 T. O
2-9 微信摇一摇实现(下)% ?0 ^7 z) Y4 E
2-10 bug修复和压测0 B. T3 N7 y7 K# [
2-11 支付宝集福卡_实现分析+ [( c% k# u4 L
2-12 支付宝集福卡实现$ M* L4 x ^- o1 t' E% ?
2-13 微博抢红包_实现分析6 T5 O4 `% |. l, ^- D, N, f4 R% v
2-14 实现发红包1 y4 ^' X- d4 L R
2-15 实现抢红包" \$ q; H5 O) C% t) t" ^
2-16 均衡问题和sync.Map解决异常
; a3 [; b) ]6 b+ V; p2-17 改用chan的方式解决并发安全问题4 K/ S5 _+ V* @3 M: u
2-18 再次压测验证和优化改造# Q, [9 u( l" _) U# D& M
2-19 抽奖大转盘_实现分析9 A" f( {5 P% v
2-20 抽奖大转盘初步实现
6 c( o3 p6 v Q: G2 T1 a# R* `2-21 sync.Mutex和atomic改造性能对比' }8 |' K$ h7 n& Y3 J, a2 e& j+ G
2-22 六种抽奖活动总结
* i7 l0 U0 w1 J2-23 并发编程与锁的底层原理
) Q5 x, p. b" G ~( j4 z2-24 高并发和高性能系统中锁的影响与解决办法
) D" l, c) b8 E5 I# k2-25 阶段任务! q4 {5 q1 J/ D9 e- |
! Y. n" h1 I: o- `9 T
第3章 系统设计和架构设计【扩胸运动,有容乃大】
/ V4 w2 `8 \: l( W2 z( [本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。" j# o1 N3 H# i+ D2 Q' R, z6 y
3-1 需求整理和提炼
5 s3 e% |7 |+ i8 r# [" q; Q7 V3-2 用户操作和业务流程
* i5 Z6 P9 C9 B1 ]3-3 数据库设计
" n" ~3 s; H8 k2 ^# {2 J3-4 缓存设计 试看
! J- Y9 o3 W4 o4 b& }. T. y3-5 系统架构设计
2 \; {9 N; B& ~; c' S! X, c3-6 系统设计和架构设计总结& t/ T! P$ R$ O
3-7 高性能程序设计,缓存为王* a( h1 [; X/ [! `% |: q3 A
3-8 系统架构升级之道,关注关键服务依赖4 W0 n5 T2 N* R- r
3-9 阶段任务
5 p4 {+ {1 J+ `( ?7 @( n5 _3 G6 \% `9 o7 [" a$ G) ^
第4章 项目框架与核心代码【踢腿运动,固若磐石】, U' h: ^9 g* Y$ j1 Y
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。6 d( i. ]' \, e. c+ P# ?
4-1 项目框架搭建
+ Z# |" w2 }5 q4 o$ c- Y0 ^4-2 数据模型的生成
. B5 r+ y" o: B3 ~4-3 核心的dao和service类* Q& c- C! M, r) y" o
4-4 定义dao1 @2 w# i+ l: {$ u' Z% L! i2 Y
4-5 定义service/ r) O7 j$ Z$ ?8 h) J
4-6 定义数据库和redis配置信息
+ K- A' O2 O3 D. A4-7 创建数据库实例及其要点
; D# m2 ?+ b8 m+ t4-8 创建redis实例及其要点
; l/ u! @/ z5 h, Q: n4-9 利用iris建立web站点. Y5 p2 `( [* t6 h9 P- U6 I7 ^
4-10 项目配置和通用方法
& E j8 R3 [0 L( m1 f+ y4-11 web站点初始化构建) J' e. F/ [( S, r( s+ S3 z
4-12 实现IndexController
$ Q f, ^# R. B D- \5 ^4-13 完善路由和main.go文件* s) u/ l2 |/ L+ m3 C
4-14 登录和退出:安全值校验和防篡改7 G* q+ H* F5 ~9 m
7 b o2 u( Y, J; V, B第5章 后台功能开发【体侧运动,运筹帷幄】; T$ D( }8 q; \& s0 w+ i( Y
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。4 K+ v0 v5 F- B# s$ S9 c
5-1 后台功能开发介绍
5 m9 |" J% O% o S; V6 S) N; }5-2 页面模板和AdminController8 G+ S* H( m% e0 y( W9 V& T% Z
5-3 奖品管理实现(上); S* O5 {5 p! ^) Y
5-4 奖品管理实现(中)
6 K _; K# V9 ^ |4 K* }7 c5-5 奖品管理实现(下)
5 n8 n' F- w: f/ i' {4 P5-6 优惠券管理实现(上). O! H! m- u9 v. B" c+ g+ A. ~
5-7 优惠券管理实现(下)" @2 o+ F Q! M3 G- d0 l4 F
5-8 中奖记录管理
- S/ s2 } @; ^& y. |5-9 用户管理
_) J4 n+ H; x) L5-10 IP黑名单管理
5 J" q, B4 F; l# S( r- V& {& I! i) `* Q
$ p- S$ \, v& p+ U第6章 基于mysql的抽奖功能开发【体转运动,基础版本】# h5 z% g% ?2 y5 u; f9 I' a
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
) c U: k/ A& ?3 h q6-1 抽奖接口开发细节分析. r e% E& e2 b
6-2 用户并发操作的锁
- ~2 p- p! E7 E! p6 w# W6-3 验证用户、IP今日参与次数(上)2 r; _8 i2 e5 K. N% X' p
6-4 验证用户、IP今日参与次数(下); A, M2 a# Q9 W# ^. x, v
6-5 用户、IP黑名单的处理$ h* j; t$ O, G$ E
6-6 抽奖的实现2 m+ p( C' [0 E* _8 K( W! j* m
6-7 发奖的实现 ~( x- b4 E4 l7 w
6-8 中奖记录和返回结果
8 N, D6 @: ^2 k9 ^" r4 n( M9 g9 O) }4 {" ]; T1 o- s7 w0 T7 D% p
第7章 使用redis缓存优化【全身运动,升级版本】 O1 y" _. @2 B5 C# g
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。" I& ^9 b+ n4 Q$ P1 E0 M. \
7-1 分析_奖品数据全量缓存! v# U5 Z3 A0 B, S/ b
7-2 实现_奖品数据全量缓存(上)9 y9 S+ t% l/ ?; F
7-3 实现_奖品数据全量缓存(下)
9 k6 o% _$ X# R' d) o) D$ K7-4 分析_单个用户数据部分缓存
6 e7 Y. Z6 x$ X; Y; M7-5 实现_单个用户数据部分缓存
, ~ k& L( m) I( p* N6 f! v7-6 分析_IP黑名单数据缓存
' N' e6 k1 h2 R/ F/ J7-7 实现_IP黑名单数据缓存5 H8 \- E# G' q" M
7-8 优化IP今日抽奖次数
! _ u( i, M0 z& f7-9 优化用户今日抽奖次数
0 i; r" J! `; g9 G7-10 用户今日抽奖次数(上)
* o9 [: Z% w C$ v6 K% N7-11 用户今日抽奖次数(下)* Z# A G' _/ o- L9 o
7-12 为什么使用奖品池+ P0 L% o$ P8 r8 U* {6 f0 A# d
7-13 初步使用奖品池8 i% T" T6 j' r; V' \. E6 q
7-14 分析_优惠券的全量缓存2 l7 b% H( K+ R, X/ S# A
7-15 实现_优惠券的全量缓存(上)3 [( J; p% d9 L: c3 a: }
7-16 实现_优惠券的全量缓存(下), W5 Q: j, V3 X3 L+ U4 T6 o
7-17 使用redis优化总结1 l0 v6 C3 A9 [6 n
1 e g: l8 I- [7 A# r第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】5 h1 l. C6 o d0 A' a9 F/ E
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。% k' U3 s9 d/ ^& ^% R* s& A
8-1 发奖计划设计分析
9 A' T) y3 O8 F2 `, j8-2 实现发奖计划(上)1 Q, X: L# u. Z& }" z
8-3 实现发奖计划(中)
; ~$ K! J# l' Q+ u# P& s4 u t4 x8-4 实现发奖计划(下)- F: F- ]) F% z* Q
8-5 自动填充奖品池分析1 o$ X9 M3 @; q3 i/ e! b
8-6 实现奖品池(上)
# ~. x. A2 t- K5 K( k5 @; `) _/ J8-7 实现奖品池(下)2 W- ?+ Q+ Y" x& A
8-8 总结发奖计划和奖品池
& U Q3 e2 o8 z9 \0 ?$ M
% }* `: N! A* Z$ J l第9章 完整性演示以及更多总结【整理运动,整体交付】
! H7 ]5 @$ H& g. J实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
# v2 {2 I& e# k: b1 u! c9-1 前端大转盘分析& K1 h% P4 V. B/ e2 w8 B
9-2 前端大转盘效果实现8 n8 [; b$ Y% N4 X/ t
9-3 优化奖品设置分析7 D p% Z$ O7 T; J, A) S* U7 G1 z! F
9-4 优化发放奖品分析4 h% ^. w% i* `6 j) I& q8 t9 i' [
9-5 再来一次压力测试吧& K4 |, w1 P1 V- [ o# m
9-6 压力测试
1 L p* f0 y- [; D' V1 ~6 w! a# C9-7 更多运营策略
; a9 Q3 t" ]) H7 k }$ H( A; v5 N5 a0 _9 P$ {' N
第10章 引入thrift框架【附加运动,扩展服务】$ X' y5 x/ \" n: Z
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
7 |' K6 J( U1 p) j& ~$ F1 B- I& K10-1 了解thrift7 I. |' q' Z: j- K4 n. H o
10-2 定义thrift文件
8 Y! W. [! c0 E" [$ X10-3 生成代码0 c* r% w# F) R7 m: x8 T
10-4 服务端接口(上)
% x2 m, A( S S# |10-5 服务端接口(中)$ X! b* ?# M0 C. d! I1 }
10-6 服务端接口(下)
3 E0 }" g) Y8 m% }10-7 客户端接口
1 E: Q: K |5 B- |3 w10-8 总结2 c: W$ e5 z( U4 ~
0 G: C G# W6 K; P第11章 课程总结【结束,沉淀】( ~5 T$ K% Y- [8 `" g' i
对课程进行总结
) r+ l' k3 I; Q9 h3 t; I& ~11-1 问题与思考
2 f# |- F: C" I# b% I11-2 课程总结2 C2 \: ~# r/ V& f( d
( B# l" d5 T9 B9 @* F" ~
〖下载地址〗
# R6 v2 u. v. K! j1 ^. p# W8 y; b- S% y) w) C- C0 a& D
; ]6 }0 r4 s5 K0 I+ N o' g
) f G) W7 Z+ V/ {: y
|
|