* |+ {& m# s F- n+ l7 b
〖课程介绍〗% v3 L c0 D4 P8 x6 Q) c
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
' x/ @: U3 a+ h7 M% c: N7 @) i& a% C% H+ Z' ]
〖课程目录〗
) q( C2 m1 z! `第1章 课程介绍【预备,初识】/ h' T+ R( `1 W3 D7 [9 R* L4 }8 x
课程内容的整体介绍以及学习建议。
& H7 K& P7 S# u6 p5 ^ D1-1 Go抽奖系统导学 试看& Q4 x4 S' j/ ]5 F$ t) u% q
, K( S; ^3 }- E9 a* h
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】/ j [! |+ n: C7 h6 l' u
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...1 o% V/ Y! m. m
2-1 年会抽奖_实现分析
+ x& D X2 H ~% k/ m2-2 年会抽奖基本功能实现
2 R7 l3 G& i7 D( }$ a& M$ Y2-3 编写web单元测试和并发安全问题
( z# X7 R, z) y& b& l6 J5 a. a/ R2-4 用互斥锁解决并发安全问题% Q/ b6 L+ n, p
2-5 彩票_实现分析; [* B$ h, A! Z4 n2 l
2-6 刮刮乐和双色球 试看) C; ?: \8 R3 b, v! ~/ p5 v2 a4 Y
2-7 微信摇一摇_实现分析
* o. b8 F4 f1 @# F7 E9 |2-8 微信摇一摇实现(上)! c- [2 f2 @9 Z H
2-9 微信摇一摇实现(下)
, b3 X( x1 Q3 X" h F2-10 bug修复和压测 {+ U1 o" N1 ^7 F$ k( S/ d- Q
2-11 支付宝集福卡_实现分析
0 G/ e& B, J8 t# \8 I2-12 支付宝集福卡实现
5 s5 ]2 g- G h% r, ^) k0 Y2-13 微博抢红包_实现分析
- Z# l3 S0 o2 q1 j. d2-14 实现发红包
; N( B+ Y1 y" Q$ c2 V/ R( j2 ]2-15 实现抢红包
8 @# F/ g2 P6 a) a2-16 均衡问题和sync.Map解决异常; m x& q/ M D8 X( u' `
2-17 改用chan的方式解决并发安全问题( t A; S2 r' F6 b% C
2-18 再次压测验证和优化改造
$ ^6 D4 b9 [. S1 S: k8 ?2-19 抽奖大转盘_实现分析& {- ^6 i% @* G0 G0 p' b
2-20 抽奖大转盘初步实现. K1 }0 b: N: w- V, R4 ?5 A; ^
2-21 sync.Mutex和atomic改造性能对比
8 I+ x( r) {- Q2-22 六种抽奖活动总结
& r8 ~( ^% u6 s0 K! h0 w; F2-23 并发编程与锁的底层原理' [3 w5 H0 G; q* E' C3 p
2-24 高并发和高性能系统中锁的影响与解决办法
/ P, S7 Q* G [* N8 f2-25 阶段任务
7 o: d7 G, b% R9 B* t- ~0 d* w8 A( \+ S6 O7 B; C& d4 b
第3章 系统设计和架构设计【扩胸运动,有容乃大】
2 w9 s' j0 \0 o: B( `; O& d本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。2 A; X+ i& ?. L. r+ k
3-1 需求整理和提炼& A2 r9 S% x; L' ~1 i
3-2 用户操作和业务流程
6 Y2 f% A2 P& Y! D) B3 G4 z3-3 数据库设计
1 ]4 p# V, d" m: p3-4 缓存设计 试看
F2 D% G1 `) z% R' [- L3-5 系统架构设计5 d6 b2 L$ M. {) l9 h2 n
3-6 系统设计和架构设计总结
* F# G# o3 {1 Q5 v. H( Y# G3-7 高性能程序设计,缓存为王1 ^2 Y g) a4 [! Y4 w& h- q
3-8 系统架构升级之道,关注关键服务依赖
+ E9 C2 y7 o: P7 {& ]- ]' u3-9 阶段任务2 `2 J" G1 r& i. b
' d8 b# g( L3 }% ?7 B. B第4章 项目框架与核心代码【踢腿运动,固若磐石】& g; j+ E i0 Q+ S0 q
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
E5 J. g' s; ]* M7 @4-1 项目框架搭建
( p9 o0 Q6 h- D# g4 V( o0 v4-2 数据模型的生成
' W9 f0 J3 e1 H9 R6 b4-3 核心的dao和service类+ ^* o# t, i3 T' D3 A
4-4 定义dao3 p p }: w! o7 G
4-5 定义service
2 y# F" h- Y- ?( s6 ~4-6 定义数据库和redis配置信息
+ }1 |, e, k& Y0 q; H7 {2 `4-7 创建数据库实例及其要点- @1 \( S Z1 j: w5 z
4-8 创建redis实例及其要点
( L3 E* X; y3 r# a. {# b* ^4-9 利用iris建立web站点7 U1 d/ t4 s) c2 }/ y! d$ o
4-10 项目配置和通用方法: B1 `; R+ _5 A [. n
4-11 web站点初始化构建, @' [; B% F j7 L9 y8 B7 Q" w( ]3 |
4-12 实现IndexController, S6 E, A) c: ]1 r- ]
4-13 完善路由和main.go文件
' b/ w5 b6 X- X6 m3 C$ l8 j4-14 登录和退出:安全值校验和防篡改
( c9 `0 ~; u% N: c. K
) T: s! I8 r5 A* T1 I2 A" i第5章 后台功能开发【体侧运动,运筹帷幄】! s; W# v# n- V: x
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
: K) D- a1 S4 K4 i5-1 后台功能开发介绍
7 F+ g7 g" ?* I( u7 {5-2 页面模板和AdminController
- M/ |5 O Z. Z0 S, {: D: W# e5-3 奖品管理实现(上)
+ L5 ]6 ?: ~5 S, I; S5-4 奖品管理实现(中)
# `. p% W: N3 g) h* o F% P5-5 奖品管理实现(下): Q7 l7 p5 ^6 e" W
5-6 优惠券管理实现(上)/ L# ?- I" H" V3 w& o4 t
5-7 优惠券管理实现(下)" s# t, h3 \9 o0 R1 f
5-8 中奖记录管理
/ v, Y( A( w T) j6 x& A8 G5-9 用户管理
8 P: B# Z& C% `6 ]$ c+ w7 y5-10 IP黑名单管理
- o1 T9 {" H3 f w2 ?, Y+ ~) w
% L3 j L6 x* L- r/ N第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
& z' t$ w0 T( Y5 f9 R' ^6 h( ]本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
7 c8 I0 I4 H( n0 {6 L0 T4 l7 z4 l- I; C6-1 抽奖接口开发细节分析) k9 F6 c* G, _# [: T2 M& t
6-2 用户并发操作的锁
! }$ ~/ [' Q4 o L- W' p7 X K6-3 验证用户、IP今日参与次数(上)
K: t7 ?. C7 {% `6-4 验证用户、IP今日参与次数(下)2 d7 G( r$ _$ ~- ?' F7 R
6-5 用户、IP黑名单的处理 Y% g+ Y+ q+ j) i
6-6 抽奖的实现. I- g0 K( R3 I
6-7 发奖的实现* {5 Z+ \" ^+ U6 k/ y, K
6-8 中奖记录和返回结果5 @8 h7 {2 ?- N
9 T4 ^2 I1 k' i2 O/ |' M9 w第7章 使用redis缓存优化【全身运动,升级版本】. N1 F# U- K/ q# w- d; B
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
! J8 g% z* G4 u& ~) Q" H1 \9 ] S7-1 分析_奖品数据全量缓存3 F, `! z$ K9 e4 m
7-2 实现_奖品数据全量缓存(上)
; r! f( ~( n# o" d9 z" X. G7-3 实现_奖品数据全量缓存(下)
( @, d) M: n6 {/ p! J# A: t. A; l7-4 分析_单个用户数据部分缓存( u+ p7 P7 O! [" M" F( L% O
7-5 实现_单个用户数据部分缓存/ w& w! R8 L; W" p
7-6 分析_IP黑名单数据缓存
# \% E: e. A/ i( f$ w7-7 实现_IP黑名单数据缓存2 ^0 C* U/ q8 ^8 R# C
7-8 优化IP今日抽奖次数2 r+ M% u/ s! ~/ g. c
7-9 优化用户今日抽奖次数
: x5 m* o+ [8 O7-10 用户今日抽奖次数(上)# }, {3 \2 _/ T
7-11 用户今日抽奖次数(下), f; ]- Q+ c1 g q7 Q( k
7-12 为什么使用奖品池
. x+ U. \% x. X% B% u1 o7-13 初步使用奖品池( d! Z* f: D" w2 j* G* F
7-14 分析_优惠券的全量缓存; G8 y' j D5 H# H8 u, R
7-15 实现_优惠券的全量缓存(上)# v6 Y/ g4 w: Z$ l5 Y
7-16 实现_优惠券的全量缓存(下)
# V) z9 X; Q1 Y* c7-17 使用redis优化总结
4 `/ U; Q6 v- N' G3 T, n
8 o7 G% [6 N8 M' p! I7 I% O第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
- a8 p! ~/ l m/ V本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
4 M2 S) ~7 h2 t; [) H2 t' t8-1 发奖计划设计分析; k3 R3 R) t) d- J
8-2 实现发奖计划(上)
' V5 u* K% w. {! A9 I8-3 实现发奖计划(中)
, g+ K+ H, m! m+ p. m7 G8 ^# l8-4 实现发奖计划(下)
7 q7 x' L ~) S. T9 M8-5 自动填充奖品池分析 B+ R& d9 c. k
8-6 实现奖品池(上)
7 A, M4 T3 ~7 w2 Z8-7 实现奖品池(下)
" I& ~% T$ u( {9 Y5 g8-8 总结发奖计划和奖品池1 S6 J) C+ N% \& h3 u
3 W. {* C# h5 ~6 B; @1 K
第9章 完整性演示以及更多总结【整理运动,整体交付】
" I C; d9 j2 T实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...# H6 X0 ?' f. t0 W% i8 v9 E
9-1 前端大转盘分析
. ^: M8 k7 w* E) @5 Y9-2 前端大转盘效果实现2 C, k( a. {2 b, b
9-3 优化奖品设置分析7 E! M, X: N7 e" J
9-4 优化发放奖品分析
3 n8 \6 a2 v1 D6 _9-5 再来一次压力测试吧
+ P. B; E& {5 b/ P2 O5 ]9-6 压力测试8 a3 X& c* l5 I) e! W1 e3 U8 c) h
9-7 更多运营策略
, o' Q# I9 S# Q2 x
' ~9 V& b1 w9 j$ X; x第10章 引入thrift框架【附加运动,扩展服务】/ A, w; _7 L, c- D" {3 q0 @9 P3 a
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。) i% f1 E- N! j7 B, P) x
10-1 了解thrift
/ n' K0 r* y2 K% F; a. r10-2 定义thrift文件
1 |( B" L( @3 i$ O7 T10-3 生成代码. O* F. H% s/ Z) k4 O2 V
10-4 服务端接口(上)1 G* F- v8 ~. u3 _
10-5 服务端接口(中)
% l; |7 ^: u9 m9 Q& Z( A10-6 服务端接口(下)
8 O7 v! k0 U( a/ \10-7 客户端接口; W; F& X; b9 z7 M
10-8 总结4 a2 v6 Y: F7 z3 d
4 O; B! j3 g" s A& ?第11章 课程总结【结束,沉淀】
) ~( n( O# h* I' r, S对课程进行总结% Y% Q2 F, T6 n2 _% U
11-1 问题与思考; k. l' u. N; R4 V
11-2 课程总结
& F* e$ k9 I9 u# @8 [& d
# C# B7 s/ `6 c) S: _7 r: O〖下载地址〗
0 @+ X% a/ I/ }$ z7 I# ~
( X' B) O# j# {2 n
& h5 Z# ?: v! d8 q9 w' s/ P4 e- |: F+ @) a( }' a2 h* O/ ]
|
|