0 g1 T: W$ P1 h8 H" k
〖课程介绍〗
8 j: p6 e% u. T% W) D抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
7 `) O, V' O# R% ^8 ^8 i1 d" U# C; s1 p( ]+ v( Q
〖课程目录〗
" n {, R" q4 S# y9 s第1章 课程介绍【预备,初识】
9 L/ T* u/ g" S7 X课程内容的整体介绍以及学习建议。* V" _3 X( W Z0 z" z+ v' w9 `
1-1 Go抽奖系统导学 试看
1 s: P) F. l7 ]; p, {% r [* g2 X4 D: g" X3 t
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】' m# K e& |5 u& W3 R- A" Z$ ?( W
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...: f5 i, b% q! [1 Q% K
2-1 年会抽奖_实现分析
) m4 ~. s8 w6 r; o" L3 m2-2 年会抽奖基本功能实现3 ~0 k* |/ I8 l$ e% t
2-3 编写web单元测试和并发安全问题# \& M7 C5 H' m: b9 \
2-4 用互斥锁解决并发安全问题+ J" G s; j1 ]2 ~# a2 J
2-5 彩票_实现分析
/ Z" t5 k+ _0 K- h$ _: T% y4 b9 g2-6 刮刮乐和双色球 试看
* p1 z/ k* S9 y1 n& G0 Q) w2-7 微信摇一摇_实现分析
* V1 D# _' N, i8 E2-8 微信摇一摇实现(上). a- S+ E- e# I x$ j, r" Q8 y
2-9 微信摇一摇实现(下)' }: k: K2 ^0 x8 n
2-10 bug修复和压测* O0 x( u- |7 O# m9 V
2-11 支付宝集福卡_实现分析
h% s$ T5 X5 e; v2-12 支付宝集福卡实现
( S o- G* X% Z; X0 u) h* E2-13 微博抢红包_实现分析; M$ ?" T4 I* m, J u1 _
2-14 实现发红包 E$ n( k8 M7 @$ D/ l) A2 D
2-15 实现抢红包
2 r5 W) K6 W& M! i# S2-16 均衡问题和sync.Map解决异常
* ?; n( Z! I4 Q. S3 W* z8 L! F2-17 改用chan的方式解决并发安全问题4 Z. E a- H6 B: j/ ?9 K! m
2-18 再次压测验证和优化改造- d9 h! C0 B$ \8 t
2-19 抽奖大转盘_实现分析
9 w- U3 s1 g6 Y' ^' o2-20 抽奖大转盘初步实现7 p2 V: t- [ v2 B7 i+ H
2-21 sync.Mutex和atomic改造性能对比0 G& n" t9 N: O/ O! u$ M
2-22 六种抽奖活动总结$ w; ^4 E2 d" \+ F" ]
2-23 并发编程与锁的底层原理
, T5 H d- V1 Q5 T- |2-24 高并发和高性能系统中锁的影响与解决办法& l1 e- x0 m6 F' L
2-25 阶段任务
/ ]/ }8 _! L$ D5 J0 y
3 `2 A) s* y: U7 q q0 l第3章 系统设计和架构设计【扩胸运动,有容乃大】
: t2 [& O0 K1 M& M$ _$ D本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。. A3 t; X u/ d$ Y
3-1 需求整理和提炼
+ ~* m, w5 W( D C" H0 G3-2 用户操作和业务流程
/ H( t+ Y% @5 D6 N- U7 K6 Q3-3 数据库设计
* v+ K% X b7 ~/ n. e3-4 缓存设计 试看) W1 L2 [: a0 ~) F. G3 v R" G5 S
3-5 系统架构设计: G: ]- r @4 v: p
3-6 系统设计和架构设计总结9 P) v* }/ y, t' a6 k' H! m
3-7 高性能程序设计,缓存为王8 i+ r, g) b' K7 l
3-8 系统架构升级之道,关注关键服务依赖
! Q) z+ ^; ^5 r1 o) N3 c7 D0 Y3-9 阶段任务
L' Z* c8 y. j$ D$ P& D. R( u3 v6 c: t- c0 r1 U3 g. }/ Q' s
第4章 项目框架与核心代码【踢腿运动,固若磐石】
. V% c( y+ C( p9 j) L0 {, C- L6 p8 G本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。. P+ R6 A( [0 x" d2 g
4-1 项目框架搭建
6 Q( J* I% }8 k' e5 d/ ~& D4-2 数据模型的生成
2 n# B) }( O3 F' d& D4-3 核心的dao和service类) R6 c7 Z/ p( G9 G
4-4 定义dao; H9 q& ^2 _% L# O' z: f% A
4-5 定义service
$ K% J, n/ K4 r( d9 [2 X4-6 定义数据库和redis配置信息
9 v( V/ _* z6 {1 N) W4-7 创建数据库实例及其要点- F" u" i4 s" F# |
4-8 创建redis实例及其要点$ e: [, N. `4 }/ ?( K$ P* o
4-9 利用iris建立web站点# l z. |" ? M
4-10 项目配置和通用方法+ k6 r" q7 k' R
4-11 web站点初始化构建# F# D/ \* B* p. Y, b
4-12 实现IndexController9 p: l1 y. Z, g0 Y8 |1 r
4-13 完善路由和main.go文件1 h% f+ W7 x1 W: [0 T; F) X
4-14 登录和退出:安全值校验和防篡改6 O) y2 H( j1 p+ X. Z
" X# U- X7 V0 Y! a4 F C% Q第5章 后台功能开发【体侧运动,运筹帷幄】. U3 T2 R. \6 _& B4 n
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。: ^3 t( n' _4 I' w( q; j
5-1 后台功能开发介绍
; `( e' [9 `2 A6 n1 W5-2 页面模板和AdminController) {3 |, @( T1 O" y* F3 v
5-3 奖品管理实现(上)
( g5 p) y* a9 J- Z6 X: P) p5-4 奖品管理实现(中)
2 C1 q: s9 Y2 ?+ {4 _7 ?" s: u5-5 奖品管理实现(下)
4 F" _' Y1 R$ Y+ U, m$ g- J5-6 优惠券管理实现(上)
/ O6 [$ c. W9 G1 Y1 Y4 w# N- S5-7 优惠券管理实现(下)
1 X" y$ e; ]6 g$ a* t- }5-8 中奖记录管理
( P- d: I' C! V/ ?% _5 E5-9 用户管理6 }- h D0 B4 ?$ v% j
5-10 IP黑名单管理% Z' }: E8 @# W) [
9 r0 y d& s9 n, T* c/ K
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
$ y* o6 Z# o9 a/ D; O本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。7 r/ m. g' G+ E; P0 c, @
6-1 抽奖接口开发细节分析
* o) W5 _' W$ [6-2 用户并发操作的锁& l1 v# O: Y' ?6 J
6-3 验证用户、IP今日参与次数(上)) J4 b4 T% B6 N- [4 h
6-4 验证用户、IP今日参与次数(下)1 L: [. \, M% x' L/ `9 B
6-5 用户、IP黑名单的处理: r- S$ S' Z, P/ b- Q) b
6-6 抽奖的实现/ a. ~9 s9 A# Z3 s! o$ q8 }0 v' U7 P
6-7 发奖的实现6 p1 b" d9 c9 p. C! A+ U( e5 F
6-8 中奖记录和返回结果" L8 N" f2 j( j* q- W$ E3 M/ [
# y w! v5 |$ H( }* T, q
第7章 使用redis缓存优化【全身运动,升级版本】: Y A1 D8 U$ i
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。& e$ d) W# s% N e* C: `! W5 _
7-1 分析_奖品数据全量缓存! V8 _+ i( q0 w7 ]4 d
7-2 实现_奖品数据全量缓存(上)! W' g8 q E+ Y' T
7-3 实现_奖品数据全量缓存(下)
( i% L6 Q3 N% z) e5 u, S3 f& A7-4 分析_单个用户数据部分缓存) \- a5 K3 O( a. x0 |7 L& ?
7-5 实现_单个用户数据部分缓存
4 P9 N O' b' e; ]7-6 分析_IP黑名单数据缓存
, w* c- C8 m+ v' M+ ^1 ^; A7-7 实现_IP黑名单数据缓存- {7 C |8 O& z8 e/ y5 P* V" K
7-8 优化IP今日抽奖次数3 U+ x" o2 \( B9 O
7-9 优化用户今日抽奖次数
9 a' Q ~# X- ~0 U: g7-10 用户今日抽奖次数(上)
! L. Q# L2 Z1 {$ Q9 S7-11 用户今日抽奖次数(下)0 i, C+ s- l: O7 O! {: A
7-12 为什么使用奖品池5 G4 v/ G2 {& C [* j- a
7-13 初步使用奖品池' C7 |: Z/ ?4 w! c! i
7-14 分析_优惠券的全量缓存
- j) x7 ^: ~8 r; G* E. ~; D7-15 实现_优惠券的全量缓存(上)
1 c) F* r R7 m+ }- R7-16 实现_优惠券的全量缓存(下)
3 v7 r' {0 ]5 E( i6 A) c$ [1 O6 ]7-17 使用redis优化总结1 \2 m# u8 M0 ]7 |9 M# Z8 y& i
7 f' V- C4 U0 O* T& \9 F
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】1 x9 S: N3 H! `4 P( q
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
& Q; _$ `6 @. U3 l) L) Q8-1 发奖计划设计分析6 h6 O, W0 L& C" u) x3 h' N
8-2 实现发奖计划(上)
# m; |& q/ K! h) g# c9 ]7 h( F8-3 实现发奖计划(中)5 u- d# i. a e+ v7 |
8-4 实现发奖计划(下)( `; \. I( U! _
8-5 自动填充奖品池分析- Q4 e: t! e& D) o6 b/ I8 `+ L
8-6 实现奖品池(上)$ G+ t0 [8 x0 w1 t1 `
8-7 实现奖品池(下)
0 C" O! u" d3 k Z, Z8-8 总结发奖计划和奖品池: ^2 b/ Z- {% I' c1 I2 H
/ n+ R8 X3 o6 R: e第9章 完整性演示以及更多总结【整理运动,整体交付】
2 F) H# s& L" B& [5 c! R实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...8 Q7 z9 _, _, t0 `
9-1 前端大转盘分析
3 m8 \3 j+ {6 o) m9-2 前端大转盘效果实现
6 |3 |9 t' G$ S9 \+ `/ L9-3 优化奖品设置分析
6 S" f+ a( W$ n- ]! m9-4 优化发放奖品分析" U8 {0 U: t1 ~+ `
9-5 再来一次压力测试吧( M* Q8 r) N' Z( c1 K( @- |, I% R
9-6 压力测试! N, _, m0 m5 x$ q7 Z
9-7 更多运营策略" y6 }. L6 k4 x5 w( y8 e5 k1 e$ m; t, `
9 U3 [; t) S6 ?9 p6 X4 Y b第10章 引入thrift框架【附加运动,扩展服务】
0 r# d3 d& r/ ?通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。6 }% M3 F3 s6 f: t; R7 J
10-1 了解thrift
' a3 }( c8 v* V3 R/ ~10-2 定义thrift文件
2 t' u# t& Z! w/ Z10-3 生成代码$ A1 }9 [& e) o
10-4 服务端接口(上)
$ X3 L/ ]) D6 Y$ g3 R10-5 服务端接口(中)
. }5 t' j; r4 j: L, l, ^% K10-6 服务端接口(下)
( e2 _9 h: i) @) m10-7 客户端接口
* [# e n: Z n2 ]7 N' {4 b10-8 总结2 d4 b1 e. l, z; D" L- w" _5 m8 _% r/ @
9 {7 J) j' ~2 f% p% U+ y
第11章 课程总结【结束,沉淀】/ }+ ]: @7 A8 h
对课程进行总结8 i- f% y+ Q1 T7 j; @+ q
11-1 问题与思考5 p0 z1 G# `. j
11-2 课程总结
! H7 V& k. n$ @6 g, q& G- a6 `3 C. D3 m
〖下载地址〗9 d) y! {, z$ r# p
% ?- @9 _2 L0 r
! Y- R2 n# i" L3 t6 Z' \% H+ v. z0 Y; q
|
|