% o% m2 @/ i6 H+ R7 R! ^
〖课程介绍〗' `7 V. s8 t" \& P& v
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平/ d5 t6 V) f) Q5 i
! g7 x" p. P4 F3 Q) t+ Z6 u! F〖课程目录〗
4 s8 I7 F7 r! v5 r( |' I! `& }第1章 课程介绍【预备,初识】- H( ]; X( b& M9 c. |
课程内容的整体介绍以及学习建议。
- c6 B$ o) H+ x( w1-1 Go抽奖系统导学 试看' |8 |$ q4 r6 F
! Y5 W' U% }# ~( K+ `1 T% i, a
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】$ u" c) r5 d. a% [; W8 U
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...( w# b3 a3 k- |6 O2 q; V8 O
2-1 年会抽奖_实现分析2 b9 A* z. Z* r
2-2 年会抽奖基本功能实现9 b7 e( g+ ]# |" r ~
2-3 编写web单元测试和并发安全问题. @5 q) l- u- }
2-4 用互斥锁解决并发安全问题
( G- ]2 j' \' s" g2-5 彩票_实现分析
* ^/ S+ X8 \; G: z; T/ }0 T2-6 刮刮乐和双色球 试看
4 }8 ^+ Q. i( ^! M3 l9 y7 l$ I2-7 微信摇一摇_实现分析
) y& g' }% x2 `2-8 微信摇一摇实现(上)
: `; _! U" X# l. B; l2-9 微信摇一摇实现(下)& L0 M! r8 P3 `0 Y
2-10 bug修复和压测6 n( n& _0 U0 s6 ?% Q' a
2-11 支付宝集福卡_实现分析
1 B7 H/ b# \+ f5 O3 J2-12 支付宝集福卡实现
5 I* e, b6 [; I5 A, A2-13 微博抢红包_实现分析
4 u# x5 o& [. @; r9 n9 V2-14 实现发红包% G9 w$ ?) F8 o) F7 S" n: C
2-15 实现抢红包
, {, g# v W `2 J C& Z2-16 均衡问题和sync.Map解决异常
6 U; ~ R$ ^" m* h! o2-17 改用chan的方式解决并发安全问题 l( f1 F9 Z h/ [5 b# X
2-18 再次压测验证和优化改造& G% B/ R1 J$ [
2-19 抽奖大转盘_实现分析. P) o& @( y5 [! v; U# o
2-20 抽奖大转盘初步实现
2 \" c' g# B- G" c; k2-21 sync.Mutex和atomic改造性能对比5 L6 e" ]( p: U% q e! Z7 c8 e
2-22 六种抽奖活动总结
! r* X: Q& O' I% u+ Y _4 h2-23 并发编程与锁的底层原理
) Q) Q- _, O. L: S6 x# S2-24 高并发和高性能系统中锁的影响与解决办法
& {9 K& I( j. ~' t2 |2-25 阶段任务
; x' O6 V3 {3 a
" @* c; e8 M: M$ N& [' H第3章 系统设计和架构设计【扩胸运动,有容乃大】6 N3 `( ~' j6 i* E
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。2 s4 z% w. B: ^1 Y2 \, `
3-1 需求整理和提炼
& ~" w u g4 _: ^1 a+ d: P" s3-2 用户操作和业务流程+ T2 J3 \" j& |. Y
3-3 数据库设计+ D0 Z, w. _, @/ m' D% o
3-4 缓存设计 试看
1 N+ @! O% @: k9 X! H- D5 z5 {8 v. u3-5 系统架构设计( ~; {3 m* R: ?9 q* ]* F" z9 f; F
3-6 系统设计和架构设计总结! H [& \0 v8 _0 B) G4 H5 Q
3-7 高性能程序设计,缓存为王
* F! { z# o( G% D8 _( S& p: p. l4 K n3-8 系统架构升级之道,关注关键服务依赖$ R: t7 V/ o7 m, K K' f
3-9 阶段任务5 k7 c8 G a# X" N6 n
! f. ^1 F( h* G9 F9 D; C
第4章 项目框架与核心代码【踢腿运动,固若磐石】. W' w1 t1 k' C! h9 \: Z0 f
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。( q: q! _+ k% D9 x
4-1 项目框架搭建+ Q. p0 P/ t$ K, k- R
4-2 数据模型的生成& B9 j; f3 J" t" m/ t8 @
4-3 核心的dao和service类' q' K* x- v* H! H- o; I
4-4 定义dao
& e2 B: V$ {4 f4 i+ {9 s, @4-5 定义service1 a) V7 d' M' @/ c4 s% X
4-6 定义数据库和redis配置信息
, ]- I" l# t# @' Q2 ?# U4-7 创建数据库实例及其要点
0 {5 ]0 r# H+ s* X! E4-8 创建redis实例及其要点
/ h! v, Y+ ~0 L2 S/ o4-9 利用iris建立web站点6 _; \# q+ Y$ T- t- u% o7 ?
4-10 项目配置和通用方法. [) t1 R3 l' O5 }& R5 ^
4-11 web站点初始化构建: n4 J" i' l% a9 o! X
4-12 实现IndexController
# m$ b$ M7 |* w! _4-13 完善路由和main.go文件. }. J _& T$ J! N
4-14 登录和退出:安全值校验和防篡改
7 v) r! x. a" |# M/ @4 e
7 B# h! S0 l3 x6 h4 N第5章 后台功能开发【体侧运动,运筹帷幄】% s( U9 R" Z1 A- r) Z- x
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
% F( c j) @- L6 [' K9 D0 X8 X5-1 后台功能开发介绍$ h# S8 U& j5 v% J6 k
5-2 页面模板和AdminController
5 R$ x. b" O9 L# J$ O; q5-3 奖品管理实现(上)
4 A/ z# \( G+ N5 s. e1 R5-4 奖品管理实现(中)
4 l. r( z9 l5 c. C" L5-5 奖品管理实现(下): Y$ M9 R9 x8 A; A* M" O
5-6 优惠券管理实现(上)! Q& ^- v3 b( c; D- ?% z
5-7 优惠券管理实现(下)" D7 g0 F& V$ f: b
5-8 中奖记录管理1 q/ ?$ y8 P% S* Q
5-9 用户管理4 M6 _* U9 ]7 {. p7 y
5-10 IP黑名单管理7 u% g, u& r% ^# i
- L. a3 q1 m, u
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
% a4 \: P, V6 N0 f% w本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。. ]. I. J+ N' B, g
6-1 抽奖接口开发细节分析
0 R2 ^; ?6 b* a6-2 用户并发操作的锁) i! V& s( v* q* H2 s7 D
6-3 验证用户、IP今日参与次数(上)1 @$ k6 d' @' u
6-4 验证用户、IP今日参与次数(下)
* P" n( Z) S+ |0 E, v6-5 用户、IP黑名单的处理
& }9 J5 V: p, e- ^) i4 z6-6 抽奖的实现+ n3 R) r1 j9 @+ E- c
6-7 发奖的实现/ B0 q; S- L% t7 @! Z a' ^, u
6-8 中奖记录和返回结果
+ I7 c, f4 B0 x9 j. ]) v! o. x7 K$ k2 q3 m. m
第7章 使用redis缓存优化【全身运动,升级版本】
# y1 U( d V' R本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
3 J' G8 \4 f- O" E/ }6 @7-1 分析_奖品数据全量缓存7 i6 j2 k& B8 |2 B1 F; i1 x
7-2 实现_奖品数据全量缓存(上)$ D- J7 z4 M4 v' S9 T" X/ ], Q
7-3 实现_奖品数据全量缓存(下)5 T2 k) C( G% d, a
7-4 分析_单个用户数据部分缓存# v- ? k4 i. I1 g2 L8 C: f" J
7-5 实现_单个用户数据部分缓存
2 r5 W2 o2 |3 V% f9 Z+ l6 |3 m7-6 分析_IP黑名单数据缓存
5 Y3 X7 ~- W, j" I2 \) F7-7 实现_IP黑名单数据缓存
6 [/ E1 Q5 _. V! |) \ U9 T7-8 优化IP今日抽奖次数6 H" N+ |' g6 r: ^$ U, g/ s
7-9 优化用户今日抽奖次数
$ S: j0 R7 z( S) m U6 E9 p7-10 用户今日抽奖次数(上)
- g$ m' \* h+ z) r7-11 用户今日抽奖次数(下) W0 k a: a* k& w3 R2 A
7-12 为什么使用奖品池- o$ n' ]- K( P8 P' Z( v
7-13 初步使用奖品池
$ d# }- M/ f ?7-14 分析_优惠券的全量缓存
" H0 b _) ]1 W# S7-15 实现_优惠券的全量缓存(上), r L4 r* f8 {- \; v
7-16 实现_优惠券的全量缓存(下). m& M5 H7 h" v1 V) V/ T
7-17 使用redis优化总结: z J: K: ]; c7 g6 E' g
4 Z7 P: [3 |7 R5 ~3 ?8 b
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】- `4 }$ b5 Y) V" U% b" `7 r4 S
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。; C' I# h9 q. t- X
8-1 发奖计划设计分析( k0 Y2 m+ N1 [: ~
8-2 实现发奖计划(上)
9 d) @: C# k0 ?# ~! x0 P: c" C8-3 实现发奖计划(中)0 h7 V/ A7 G2 [' x c$ J; q) @/ V& q
8-4 实现发奖计划(下)
- [3 j" [6 Z9 S& y2 m' ~8-5 自动填充奖品池分析1 E/ @+ u5 K c& ~3 }- B h0 a. Z
8-6 实现奖品池(上)
, s* G/ Y, b' w9 o1 V7 _8-7 实现奖品池(下) Q* {1 l, U, F/ x" I. L
8-8 总结发奖计划和奖品池
. ]4 ?$ ?7 l5 \0 @5 K) o* q5 Q
; e1 }# j" r5 z' c( d: q. R第9章 完整性演示以及更多总结【整理运动,整体交付】
0 q; n0 M0 n6 z* d8 c8 ^! X! `2 ?实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...; ]7 E: y, X; s& R* h9 j
9-1 前端大转盘分析
) M! s0 O9 G3 G9 o9-2 前端大转盘效果实现; C% x8 U+ H4 Y1 m) @: O
9-3 优化奖品设置分析
4 I. }0 P% J& ~; d3 d ]9-4 优化发放奖品分析8 p, b. M$ i% U$ T) y
9-5 再来一次压力测试吧5 k3 d4 T! e" V; Q9 E% r
9-6 压力测试
, Z0 L2 U- G5 G5 I9-7 更多运营策略 v) S& A3 @( N; ]9 a3 z% O
* K$ Q, F/ z, r$ ?/ f$ u第10章 引入thrift框架【附加运动,扩展服务】
; ]; ^2 T8 h3 y; _" B E; X通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
% p e9 g& E' K0 u: k- B K10-1 了解thrift
0 F* f8 R" \% U/ p3 C, ~10-2 定义thrift文件$ N4 t2 o. I8 ]3 g, M6 v1 w
10-3 生成代码: M" c( P- Q- r5 Z
10-4 服务端接口(上)* I$ N/ e8 E4 l* R; c c
10-5 服务端接口(中)& V' d) e# H& \7 G! h
10-6 服务端接口(下)% Z( A4 r( K/ W4 j1 }: o
10-7 客户端接口
1 M/ T. [' A$ j( o9 u' T10-8 总结
) a% G+ M( \+ U+ C4 N
2 r( K' ^) o8 r' J+ I第11章 课程总结【结束,沉淀】
' G L3 p$ L( t! P9 h) z对课程进行总结7 ]( P! J# o) n' X, F# |8 Z3 n
11-1 问题与思考
: a# J" S- z' `% U11-2 课程总结
2 n3 Z. W u0 Y* h! E& y) x6 x* R+ d# `& n
〖下载地址〗
' W4 y2 Y ^# E+ C/ N& ~
9 i/ C6 Q8 S8 u! S5 `9 F' U- L2 @5 ]; |5 t* r9 X
: X* W! _& e3 ` |
|