' b; G+ G! d/ @! \4 D1 Q5 `
〖课程介绍〗
- c" h1 N; z: s" k% l3 r& C" I抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
; c* C1 ^/ z+ U' ?5 M7 C
4 g( t3 W& {! E; ~ q〖课程目录〗; N: Z9 t2 Z6 m7 v$ o& D) h0 E# y
第1章 课程介绍【预备,初识】
: r, h8 r2 k1 l课程内容的整体介绍以及学习建议。. o% h/ ^. @: s. h' b- \- j
1-1 Go抽奖系统导学 试看
& A2 v- z: V' E6 B1 k: q; u$ d
% F: E; d# _" r% d0 ~第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
% e! A- X# Y2 z& m' G看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。.... R5 e4 A, t: i3 v
2-1 年会抽奖_实现分析
/ j% I4 p3 f& x) _4 Z4 G# z2-2 年会抽奖基本功能实现
. i9 ~1 [+ M% F: i! j' Z) O2-3 编写web单元测试和并发安全问题* N+ l1 m! r# p8 A) A# p8 R l
2-4 用互斥锁解决并发安全问题2 B# Q: c, Y# w# m
2-5 彩票_实现分析
@1 e# B" ?- x9 t, I2-6 刮刮乐和双色球 试看1 }" J. n% [* S
2-7 微信摇一摇_实现分析. ~) J/ `: \6 T3 h, A& `& O0 J+ H
2-8 微信摇一摇实现(上)
% I2 {; V, A% u4 Q2-9 微信摇一摇实现(下). z- z' y9 P* U0 K) X' b
2-10 bug修复和压测
9 q& q' m' F2 H! E2 P! Q2-11 支付宝集福卡_实现分析 @; a6 f/ M o* o. C: v
2-12 支付宝集福卡实现- p* V# V8 u l. D" W
2-13 微博抢红包_实现分析* J6 z9 O: x2 \5 u( n! I
2-14 实现发红包
' u P* ?: |% e1 x: s; S2-15 实现抢红包' S# s4 r, L. W/ W6 j
2-16 均衡问题和sync.Map解决异常
* X% Z$ I, M, X* }3 Y" ?. E2-17 改用chan的方式解决并发安全问题
9 p6 U1 @0 c/ _# H2-18 再次压测验证和优化改造+ {" \! L4 s9 t+ y6 E. h
2-19 抽奖大转盘_实现分析: d1 p* E& C6 b& Q
2-20 抽奖大转盘初步实现
0 _, C: I1 J) N f2-21 sync.Mutex和atomic改造性能对比
" F. Z. R& X$ R2 ^$ L2-22 六种抽奖活动总结
, P/ s- Q# b6 F: N2-23 并发编程与锁的底层原理
$ [$ h- X+ H" e+ `' V2-24 高并发和高性能系统中锁的影响与解决办法
0 p8 {5 I$ p# C2 |. g2-25 阶段任务
7 P) C Q5 W" l5 P! ]7 X" @! r! _. M" S% _( U% u, \& V$ A! U3 ]; w
第3章 系统设计和架构设计【扩胸运动,有容乃大】
' Y4 B7 Y9 O' Q本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
* Z& Y9 w/ |3 o$ q3-1 需求整理和提炼
+ d s" I+ Q" f) R( U( p* }3-2 用户操作和业务流程
* M U" B3 |9 D0 K0 Z" k' l- u3-3 数据库设计
- S- y9 f; k1 Q. {$ p" V3-4 缓存设计 试看
% ` y! {9 {. f f+ A0 ~* ^+ X3-5 系统架构设计
% s0 m6 c, }( y& B3-6 系统设计和架构设计总结/ q0 t( D4 v6 o, @' ^: j
3-7 高性能程序设计,缓存为王
$ H( S; \( Z8 @1 w# H3-8 系统架构升级之道,关注关键服务依赖
* e, i( Z o: g8 a0 ]3-9 阶段任务3 a) D1 O8 u0 U, {7 V! b. u" o' c3 _7 u
* t% z4 k2 S9 r1 y0 P: C/ E, o; b
第4章 项目框架与核心代码【踢腿运动,固若磐石】; O' c b0 Y7 P) x6 I
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。- B. Q) u, J! b: a9 W; k
4-1 项目框架搭建
% H; D7 S; k" A8 `4-2 数据模型的生成
% n6 p, }# Z, i( b$ T4-3 核心的dao和service类
5 z" y$ h8 y; J0 z1 v4-4 定义dao) d* `% c: C. _, p. Q
4-5 定义service; S6 f. D* d( b: x! ^$ O# e
4-6 定义数据库和redis配置信息
2 [% q) H# I8 G+ c$ P3 P4-7 创建数据库实例及其要点
# w0 I) k( \9 a& y# w l9 p4-8 创建redis实例及其要点
4 d! g5 _* J0 q) X5 n4-9 利用iris建立web站点$ f1 K& n. L% q$ f
4-10 项目配置和通用方法4 ]1 `$ V- d/ s
4-11 web站点初始化构建1 X( v+ v0 o- s* R @
4-12 实现IndexController! q! r1 }+ ], r w% Q
4-13 完善路由和main.go文件
1 Y4 Q( R. l3 _* I+ \( {4-14 登录和退出:安全值校验和防篡改0 p- G, l- l! k M# A
U- M7 S* K' Z1 f. u第5章 后台功能开发【体侧运动,运筹帷幄】
% Y* @3 w6 a3 o: P/ d4 |一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。# R. E& w0 I- h7 i3 Y! L5 ]
5-1 后台功能开发介绍
! N1 C! D8 O D; | `8 S5-2 页面模板和AdminController
% {. [8 X L( w" f* [5-3 奖品管理实现(上)
# [# C3 v' \) ^* l& o1 |; {2 d5-4 奖品管理实现(中)
( _. z; V$ \& R. Q5 X5-5 奖品管理实现(下)
% H5 ^- p' n4 l) _" a9 o5-6 优惠券管理实现(上)
- Y8 q: z& X( r; c* f5-7 优惠券管理实现(下)
1 O, L8 V u+ l2 b5 C( s6 E5-8 中奖记录管理
$ R6 o5 j6 q9 k3 z5-9 用户管理
- d2 `# A' P* a5-10 IP黑名单管理. I2 u$ g: q6 V1 [ D, x; D( p# L
1 d- {, S. m9 c
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
1 Q/ \& L4 B4 M& n/ F6 s本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
6 M3 C: Z( w6 _- @6-1 抽奖接口开发细节分析. N+ H3 E$ o# _
6-2 用户并发操作的锁
( o- U% H* E2 {9 o* `3 S6-3 验证用户、IP今日参与次数(上)
L) \) g. W- H9 s1 J6 l1 }6-4 验证用户、IP今日参与次数(下)
. b: W( Q# s' @6-5 用户、IP黑名单的处理
/ D( F) E, Y& G0 P# r, S1 L) J6-6 抽奖的实现' y2 o6 r5 P2 ]! a! L& P
6-7 发奖的实现+ w( N' f* x; |* w: _, }' Q
6-8 中奖记录和返回结果2 f& s1 q! A8 p3 r
; c( N* I7 U1 A: z6 o& M7 H+ q! C3 f
第7章 使用redis缓存优化【全身运动,升级版本】% E8 _/ t' O) g4 r; H% t
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
3 ?1 j6 j0 f# n& C7-1 分析_奖品数据全量缓存" S6 I" y! Y% o
7-2 实现_奖品数据全量缓存(上)
) h/ _$ s* b. [+ Z8 L7-3 实现_奖品数据全量缓存(下)! X3 @' ?: m( J2 n, D+ K
7-4 分析_单个用户数据部分缓存
& ?( Y K4 y1 }9 c% B% _7-5 实现_单个用户数据部分缓存
' v+ Q" w& y2 A9 G9 p+ Q( W7-6 分析_IP黑名单数据缓存, s) E. o5 J; q7 [ [
7-7 实现_IP黑名单数据缓存
X0 @4 R O1 G! V7-8 优化IP今日抽奖次数- z: V$ A6 a* l1 x* b0 V0 s0 H
7-9 优化用户今日抽奖次数
. N/ c8 g% u# P7 x$ w7-10 用户今日抽奖次数(上)$ O9 p+ E) w; J" d2 O; z) R
7-11 用户今日抽奖次数(下)
% \& L# P/ ?4 N- ~7-12 为什么使用奖品池9 H& @+ w# B/ y3 r* G1 r" d
7-13 初步使用奖品池
, T2 p4 m- C# J6 q: b' s3 B7-14 分析_优惠券的全量缓存
7 x; m% Z p8 B3 K2 J) [: N) ~7-15 实现_优惠券的全量缓存(上): F* \/ i$ Y' N6 Q1 t
7-16 实现_优惠券的全量缓存(下)
2 M, I( @. ^' ~ {# T7-17 使用redis优化总结: z, k" R+ }; J( l2 c- Y: }
: U) U* K; _7 A
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
, D3 y- V8 n" }1 s* ?* H7 f本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
+ e, m6 m* u; U1 r& h" U8-1 发奖计划设计分析' C Z8 v" i3 |2 Z/ _- l. a% Q; p
8-2 实现发奖计划(上)% U# r9 ?+ i8 E+ _6 I6 h8 X! z% r
8-3 实现发奖计划(中)
) C% Z' \3 K, ^ V/ o8-4 实现发奖计划(下)
" o$ ]0 i+ R9 j1 Y$ I) X( _* u8-5 自动填充奖品池分析. L0 I2 U' y8 ]% C" n
8-6 实现奖品池(上)
% g y1 F% T2 g! r, ]8-7 实现奖品池(下)
8 g4 Q* D8 [4 v) j# p7 [8-8 总结发奖计划和奖品池0 j5 b' G% i P: @8 a
6 d! g% y0 {) r$ P# l. [; V第9章 完整性演示以及更多总结【整理运动,整体交付】; H' I6 Q& x# c0 k. [
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
+ m" q5 G/ N* D8 y9-1 前端大转盘分析& b$ S; ?$ [& x4 q8 `/ k; t9 O
9-2 前端大转盘效果实现
- g6 l( H% p4 Y/ a' i7 Y, \9-3 优化奖品设置分析) e' i& w& [3 y2 C( y
9-4 优化发放奖品分析
7 D5 l1 L' }; ]% A0 \, P9-5 再来一次压力测试吧8 x j6 _) i* Y
9-6 压力测试% ^4 i# H6 o9 u# T% V: l+ d- O
9-7 更多运营策略7 d0 O+ B& D: M, i( }
2 C0 z, G$ l7 U9 Q( c
第10章 引入thrift框架【附加运动,扩展服务】
, j# [3 R! H; j( o; h; S+ Y+ d通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
3 Y( j0 [# x$ N( y3 p! @) S0 c0 Q10-1 了解thrift/ I7 @! [# U. i# g$ v% {5 L3 i
10-2 定义thrift文件
9 C" Z1 [+ m; \1 l10-3 生成代码$ w$ V- D5 I" @( Q7 K
10-4 服务端接口(上)
& ^$ j; D- q/ |' y10-5 服务端接口(中)6 j4 A& p& G4 ^( Z0 S' v# e
10-6 服务端接口(下)) D8 t8 o% j% P- \
10-7 客户端接口" Y0 _3 R2 X# j6 y) O% H+ H
10-8 总结) ^6 A1 w, N& ?2 Z
- l; @7 x+ h0 x8 v" b& y' v
第11章 课程总结【结束,沉淀】2 g1 X2 l; i6 x1 o: _ }. Q
对课程进行总结+ B6 k7 I2 E# z/ V+ n
11-1 问题与思考
' [" `6 R& l# Q4 H. d11-2 课程总结
; p9 ]' F: D/ _6 @' a7 N; |+ {% |4 X
〖下载地址〗
) v7 |2 Q. L, M: |/ F7 j
( M* i, H6 T- W+ p9 \; M/ t, L$ p3 i, L' ]& H9 c. U4 |
4 y! L( k- l8 `" E8 Q! \ t
|
|