z, D; P, j' L4 M$ b〖课程介绍〗 }0 V- t. |) w2 p( E7 d0 n6 g
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
, a* Y6 r" y' f) b# Z; f+ P# k ]( D/ X5 U" [7 A, x+ X! [- M1 o
〖课程目录〗
- z3 l! L6 f1 P: O- x0 s' m第1章 课程介绍【预备,初识】
3 i& ~1 H v6 Q6 u% F6 B课程内容的整体介绍以及学习建议。
2 I+ a! E( E. Z; q" g; t( _1-1 Go抽奖系统导学 试看% o$ ^, U1 @) S3 w! |) n: }
2 _" |+ z- v. w$ |
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】 `1 ?1 `4 A6 V; x5 F
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...' P: W, M7 {7 ~3 z
2-1 年会抽奖_实现分析( v0 Y; l! A* r+ u
2-2 年会抽奖基本功能实现# ~% p5 H( t( B
2-3 编写web单元测试和并发安全问题
9 F5 e2 Y* J$ o0 o2-4 用互斥锁解决并发安全问题, }+ A1 w0 D B0 u8 b& i, S6 b
2-5 彩票_实现分析
# Z. ?- i5 Z4 |1 d2-6 刮刮乐和双色球 试看
7 \3 g, h7 P j4 r, i ?% x# e2-7 微信摇一摇_实现分析
, M. {, D. j+ ~& o7 }% d% y2-8 微信摇一摇实现(上)* @5 A# `, B$ O- Z @# |, ?
2-9 微信摇一摇实现(下)
' `0 L3 T+ B) z. T% n; ?; Y+ I9 x2-10 bug修复和压测
6 D0 ~7 O; O. I) ^0 X2-11 支付宝集福卡_实现分析* P( i0 U* k3 M% S
2-12 支付宝集福卡实现4 l% ^" A2 ?9 M8 S5 j
2-13 微博抢红包_实现分析
, k# x3 q" ?# N1 P, k2-14 实现发红包5 M$ S8 l! T2 W6 r0 z! o
2-15 实现抢红包
$ d9 d3 D% p' O2-16 均衡问题和sync.Map解决异常
* ]9 [5 Z0 @8 T2-17 改用chan的方式解决并发安全问题* R, P, f0 E' Z+ `
2-18 再次压测验证和优化改造
: p+ {. a' h" J2-19 抽奖大转盘_实现分析/ ~3 k) ?6 R, O" f+ o
2-20 抽奖大转盘初步实现* d" L: t. J; c L3 G
2-21 sync.Mutex和atomic改造性能对比
! w3 A* c% q& {. _2-22 六种抽奖活动总结$ K& z+ ?6 f- B. G% e5 S+ D* b( M
2-23 并发编程与锁的底层原理 q* r6 F: \7 m B$ ^
2-24 高并发和高性能系统中锁的影响与解决办法8 }1 b; v8 l$ D! E9 B( p; O
2-25 阶段任务
2 ~8 k: z9 M9 \* ~; _( Q8 v5 [9 ~3 x/ Q- v1 q" c+ _+ g n
第3章 系统设计和架构设计【扩胸运动,有容乃大】
+ C4 c" {7 J8 V+ l0 O本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
1 N @+ F. ~# i1 ^" S6 w3-1 需求整理和提炼
& ?1 Y8 k+ N( Z; [; z- {% j3-2 用户操作和业务流程! J( P5 m* T5 \5 _6 j
3-3 数据库设计
. J* n; X k& ~% e! n; |. k3-4 缓存设计 试看
6 f% m6 Z3 f2 B6 S$ d3-5 系统架构设计
7 N/ O9 p7 q) ~& A2 @' E8 K3-6 系统设计和架构设计总结5 {- M4 g. {6 k, h! X
3-7 高性能程序设计,缓存为王/ K% l S- c; o9 w! E
3-8 系统架构升级之道,关注关键服务依赖
9 E+ W- Y* Y0 O" E+ s: P3-9 阶段任务
! |+ i$ [3 J# G( k8 G6 l; j4 z3 ?. H2 N9 v/ F5 ~0 `* Z
第4章 项目框架与核心代码【踢腿运动,固若磐石】1 C* I, i; M) [3 M" [1 V/ _
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。: S2 X! E0 Q+ O( I6 y
4-1 项目框架搭建
! K6 X3 Z& ^/ d0 m# A$ M, E! D3 h; U4-2 数据模型的生成: c; G, j- ^; p* y6 b
4-3 核心的dao和service类6 b( ^, ]! _+ ~* D2 U- f; n/ d, ~
4-4 定义dao) H9 m% z, k( q
4-5 定义service% a$ k9 h) f. v
4-6 定义数据库和redis配置信息
3 e' ?2 N% b1 a; c4-7 创建数据库实例及其要点
8 g+ b% B" v f; O2 Z$ [* a" V' p4-8 创建redis实例及其要点. X+ A& R) I Q% W
4-9 利用iris建立web站点
z& I( V" O9 f5 a4-10 项目配置和通用方法
; c5 s0 O' I! @0 J9 v4-11 web站点初始化构建 d7 x8 S4 q/ Q* g2 a
4-12 实现IndexController) f7 E2 z r6 A* \
4-13 完善路由和main.go文件
3 n0 G/ R! N7 @; n8 c6 e9 ]# d4-14 登录和退出:安全值校验和防篡改
0 t* L3 |4 y4 E* m- z# {' Y3 m+ U% T5 {; G" M p# [ d" V# A) O$ @! L
第5章 后台功能开发【体侧运动,运筹帷幄】8 D! M; R: H1 p# J
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。+ @) c" b5 U6 z: ?( a2 b3 G
5-1 后台功能开发介绍
4 M L L: J7 x; p% w! G% y5-2 页面模板和AdminController
$ @2 n0 }& f3 f3 ]5-3 奖品管理实现(上)
4 [' z1 n4 Y8 X- L1 y; _/ f2 v2 T5-4 奖品管理实现(中)
# H" R9 m. N" Y# e, Y4 F0 b( g5-5 奖品管理实现(下)
8 K# d* o1 f+ W5-6 优惠券管理实现(上)
( A6 {; o: q# O }' r7 v8 `5-7 优惠券管理实现(下)* x, w" o2 A k9 i
5-8 中奖记录管理
, a% {: C% b( ]6 f5-9 用户管理1 p) m2 W" l; Z* }0 G7 }
5-10 IP黑名单管理. T5 h5 ^7 K3 C$ J, N/ ~6 [
0 {3 t& P4 J4 K, Q7 l0 `第6章 基于mysql的抽奖功能开发【体转运动,基础版本】8 z. r1 l6 y/ T; b: P4 u7 `6 R
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
/ k( q% O/ r/ y8 G: n! [6-1 抽奖接口开发细节分析
8 Z- D( m% C+ H7 t6-2 用户并发操作的锁: f% Y. Z8 K1 S- ^9 z- Q5 l
6-3 验证用户、IP今日参与次数(上), a2 ~& v% V& ~: I3 _7 P
6-4 验证用户、IP今日参与次数(下)2 ^- P7 u; N- \
6-5 用户、IP黑名单的处理# k% w* f' [) d, A1 A9 x# ]# I
6-6 抽奖的实现
1 }/ x& S6 _& [! u: t, N6-7 发奖的实现
# ]( W9 A' x4 b0 m/ ` x+ Q) f* `9 l6-8 中奖记录和返回结果
$ y% H3 E' D1 L3 ~; E' R
" w4 V* C& [* i" W/ x第7章 使用redis缓存优化【全身运动,升级版本】. W6 H }) C6 {# p. K k: h2 C
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。9 _ \+ e. c3 W0 {+ A
7-1 分析_奖品数据全量缓存; h- M( { e& `. i& ?6 P, T$ U
7-2 实现_奖品数据全量缓存(上)
! B/ c$ b `, K% g6 x: C7-3 实现_奖品数据全量缓存(下)
5 Z5 C8 B! ^; G7-4 分析_单个用户数据部分缓存# h+ d% \; c4 X- m7 h$ L
7-5 实现_单个用户数据部分缓存! j" E- M8 |+ q( K% b
7-6 分析_IP黑名单数据缓存
' ~- P( f( v- z; a2 p/ e: R7-7 实现_IP黑名单数据缓存! U3 X+ ]& U# F3 h
7-8 优化IP今日抽奖次数
# z1 b* A, p8 w7-9 优化用户今日抽奖次数
K# ~6 |7 `7 k$ H* U7-10 用户今日抽奖次数(上)
7 R4 |3 c7 \3 Z. E w2 k7-11 用户今日抽奖次数(下)1 t8 v+ w. s8 A; o; a8 d. k
7-12 为什么使用奖品池
5 i. J/ I1 p0 j+ W, q7-13 初步使用奖品池/ b5 b9 f* W+ I8 n
7-14 分析_优惠券的全量缓存' E" Y4 \: p5 \9 o X6 O4 `! y
7-15 实现_优惠券的全量缓存(上)" J+ d+ B6 {8 A9 m% N Q
7-16 实现_优惠券的全量缓存(下)
1 f. o* M# d* `$ w7-17 使用redis优化总结& J1 U$ l5 d1 h" W; Z( p
2 t6 _) G: L2 ]" ]9 \
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】( c) w1 @5 a8 n8 }' S
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
. I; n+ C# b0 D2 T) u8-1 发奖计划设计分析0 @8 h( P9 _9 Q6 v
8-2 实现发奖计划(上) Q: k9 g! @# s, f' n+ N
8-3 实现发奖计划(中)
/ @2 x* y. }# W4 g, ^0 a8-4 实现发奖计划(下)
" M! r% z2 I3 p7 _% k" t8-5 自动填充奖品池分析
2 m/ L% I2 r2 f* o5 ?/ V7 k; y" u8-6 实现奖品池(上)" F9 m/ f9 ]( Z( g9 g: ?( @( Q
8-7 实现奖品池(下)
2 {* v- \% {$ {7 {& Q8-8 总结发奖计划和奖品池
0 I6 u( k5 k+ ]+ d: P' F; Y7 o$ F( K5 x3 p- b" t' Y
第9章 完整性演示以及更多总结【整理运动,整体交付】! | J0 D$ `# D- w9 E8 ?6 m1 Z9 X/ J2 e
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
$ a8 {/ [7 f1 _3 P. r0 ?9-1 前端大转盘分析
( w- S2 N# Y+ C9 I8 B1 | H9-2 前端大转盘效果实现0 ]. ?9 K& k4 L
9-3 优化奖品设置分析
) m: N. w$ w* _0 O( P" w$ W9-4 优化发放奖品分析
, q- Q. J- E3 n3 }% P' g9-5 再来一次压力测试吧
/ {; e* u# [5 y) b9-6 压力测试* S. N: V" e& Y$ m1 n
9-7 更多运营策略- ^( K" D0 T8 C7 x4 o9 L" q+ A
$ Z; P+ Z: x! f' b) |
第10章 引入thrift框架【附加运动,扩展服务】! C" F+ [% P |& t W0 ]
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。1 H7 |# X- F: z J8 o7 |* Z, U W
10-1 了解thrift
: b! R( e2 d- `/ S( {: V10-2 定义thrift文件8 z+ e- k& a `+ [! b9 c+ O
10-3 生成代码5 W: d4 g |2 ~$ w9 ]# z
10-4 服务端接口(上)" K0 ~: _5 A3 Y2 k5 E; G
10-5 服务端接口(中)1 u M- j' w; m2 U1 L
10-6 服务端接口(下)& S8 K$ C1 F w
10-7 客户端接口8 O+ }+ E4 M& {9 g
10-8 总结
, [9 w1 e$ J' f1 C9 a; z# L3 G
第11章 课程总结【结束,沉淀】' ~9 \3 w% I0 Y/ j5 F
对课程进行总结
) }% E7 | T+ _0 u! D11-1 问题与思考
+ D" V1 E, L# W8 l5 s7 W0 } {11-2 课程总结$ E( a; x! t1 U7 S5 `
0 P8 {# G6 X T, J. y6 J〖下载地址〗 n% v7 W5 U7 ^) d4 N
2 l1 R! q9 O( X5 X8 I, K
5 Q/ g% @: R& }2 n8 g* a% U1 p! A$ p6 T+ R1 U
|
|