$ ]$ u0 M$ n9 `1 `) ?0 }; Q〖课程介绍〗
. m$ Q' g, q$ v3 [2 W: F7 S抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
9 b3 Z, d8 v. u1 S- e; L; g: n: ~; z
〖课程目录〗
& C Y9 a. \# h第1章 课程介绍【预备,初识】# o% |; s% l: x/ h( o
课程内容的整体介绍以及学习建议。+ `4 z) i% a3 Y( h m- o
1-1 Go抽奖系统导学 试看1 F4 R8 R/ ^2 c; ~, w
( y9 R: @1 M3 q第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】) ^. F+ g+ r) k$ `/ z
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
) e4 V( \* H U j2-1 年会抽奖_实现分析, Z" h# ]1 F: M/ S
2-2 年会抽奖基本功能实现
2 w- W3 I, P0 @! v/ v* L2-3 编写web单元测试和并发安全问题4 `5 d, r6 ~1 A- ^4 T
2-4 用互斥锁解决并发安全问题* l3 G7 l% @* U
2-5 彩票_实现分析
/ t+ q/ i- I u, m2-6 刮刮乐和双色球 试看) i9 n; [2 ~7 j! B) j
2-7 微信摇一摇_实现分析
$ f. v. S- t7 P- c: x9 L2-8 微信摇一摇实现(上)3 z _( X# p6 }; E1 g' G
2-9 微信摇一摇实现(下)
{4 V$ ]9 P* O, y& t& X2-10 bug修复和压测
! ^6 t7 L/ M, A2-11 支付宝集福卡_实现分析4 T9 m( E, {* e
2-12 支付宝集福卡实现% w+ ]: ]4 S0 d6 q* v$ H
2-13 微博抢红包_实现分析
- ^3 [2 H0 w8 z @9 y; W2-14 实现发红包; ], l( c* I& S6 y: ^
2-15 实现抢红包, r8 c p9 F7 I3 v
2-16 均衡问题和sync.Map解决异常
2 T8 G O) ~, g+ h+ |1 o2-17 改用chan的方式解决并发安全问题
: W3 q4 w: x1 e' D0 @; a2-18 再次压测验证和优化改造
! e7 ^8 I" G3 l# f2-19 抽奖大转盘_实现分析
. k3 i0 F0 y# B$ L2 F2-20 抽奖大转盘初步实现 s& z! M$ W7 \
2-21 sync.Mutex和atomic改造性能对比5 `$ ^& w3 U) R6 j8 D
2-22 六种抽奖活动总结) u& l: p) K5 c" i+ R
2-23 并发编程与锁的底层原理* H; G) J, T! p# m
2-24 高并发和高性能系统中锁的影响与解决办法! B% \4 ]" U" W: y
2-25 阶段任务, t o7 e6 G/ S$ V E6 }) g( c
* d; n# q+ u: @0 c1 D* a0 v第3章 系统设计和架构设计【扩胸运动,有容乃大】+ N7 R3 d. K9 @( t; m
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。3 u. Q. t% H: C9 O& H
3-1 需求整理和提炼7 W) [% m W; T$ Y# P
3-2 用户操作和业务流程, C7 E# _) @. }; u+ W" L
3-3 数据库设计( ~. e3 K! r) R+ ^8 l# H
3-4 缓存设计 试看
$ y+ X' f7 K2 |7 J% Z! s/ h3-5 系统架构设计
: d+ k8 x2 M# Q- X3-6 系统设计和架构设计总结
- ~% P# J- z$ r; |% D6 ]3-7 高性能程序设计,缓存为王
$ u& ^3 X9 D" S0 S/ I( @3-8 系统架构升级之道,关注关键服务依赖
5 R! V6 z# {1 \, a3-9 阶段任务( c8 h) `: C: C( {2 j/ a
( ?; B% l5 _' d$ }9 O& b
第4章 项目框架与核心代码【踢腿运动,固若磐石】7 M$ X9 \' H E+ T. ^2 _4 G, B' }3 M
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。: U. U! k/ E( G. I6 N7 N, n
4-1 项目框架搭建
3 p9 p# d- W2 m7 [% i$ K y/ t4-2 数据模型的生成) U* N1 i+ d- c6 M! ]: u7 n
4-3 核心的dao和service类$ Y$ k- S, D1 B' V5 A
4-4 定义dao
/ W+ [; E1 @0 I% G# e* q( ]0 J$ O4-5 定义service3 Y( w0 v: H8 Y8 g) [
4-6 定义数据库和redis配置信息
2 f3 m" }- O; m5 ^' |% g7 {% I4-7 创建数据库实例及其要点# q* V8 a& u# z5 h! V% l5 @; ^
4-8 创建redis实例及其要点
* N' P& b8 F8 Z8 j1 }, D1 R6 w2 m4-9 利用iris建立web站点6 T! d& P3 a. l9 _- K6 G
4-10 项目配置和通用方法
3 h$ t. D& D% V. N1 @, Q4-11 web站点初始化构建7 [3 m5 N$ `( O L' ]
4-12 实现IndexController! B* r8 W; c9 a- @, j2 t2 I
4-13 完善路由和main.go文件
2 F* q5 e* a: v; M. f0 J7 a4-14 登录和退出:安全值校验和防篡改
3 L0 {) ]3 O q; V; D; d: K, ]4 ~9 y9 m5 ~6 ]* k+ _
第5章 后台功能开发【体侧运动,运筹帷幄】7 D& W( t& w# ]- h W2 [( H
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。/ p O( h# s! a" _$ j1 j
5-1 后台功能开发介绍
: h' x) O6 O( m: a9 r# _5-2 页面模板和AdminController3 I2 B0 G, i( V4 A
5-3 奖品管理实现(上)& ], n; n; h- ]1 O! \
5-4 奖品管理实现(中)5 ?8 d8 d+ E; H# _) P8 l5 h
5-5 奖品管理实现(下)- J& q7 F4 x% ?0 b' ~
5-6 优惠券管理实现(上)+ K6 H8 B1 p1 k; N9 v3 N! [" F
5-7 优惠券管理实现(下)/ ~/ O% h, l! \8 w
5-8 中奖记录管理
2 s/ \+ q+ X) m* R! ]8 U$ d5-9 用户管理
" f0 {8 k4 ]4 e1 R+ L* @5-10 IP黑名单管理
6 C- {5 N1 T7 u8 [6 j" N* Q/ i; a) {, _% `9 P9 Z0 h
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】- u# r. V: `) t4 a- c
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
& p, e& u+ C! t# y% G, k" c6-1 抽奖接口开发细节分析4 l6 Y2 A- q) H7 L4 L: G
6-2 用户并发操作的锁
6 C+ z( Y7 V& y$ _6-3 验证用户、IP今日参与次数(上)9 N; w* g8 d. }9 T# p! r
6-4 验证用户、IP今日参与次数(下)
$ E% A, q7 ?) a$ |( M- P5 S6-5 用户、IP黑名单的处理# r" g5 P/ E7 O! z
6-6 抽奖的实现
" t+ r; f1 C8 N- U$ q6-7 发奖的实现
+ P0 U% P# y; ^) R) B6-8 中奖记录和返回结果& p3 v, A; R+ c
, s, B; Z# q' o& W( c4 ~0 @6 V7 X第7章 使用redis缓存优化【全身运动,升级版本】9 F2 j3 a: h( k: O& A" Q
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
2 e& o5 u2 x' W- W; C7-1 分析_奖品数据全量缓存7 p( c, }8 x7 Z7 }8 b6 a+ R4 y2 N
7-2 实现_奖品数据全量缓存(上)6 ^9 |$ C9 N1 y6 N7 v. O7 r
7-3 实现_奖品数据全量缓存(下)
' G% P+ X7 [5 C7-4 分析_单个用户数据部分缓存
* t, V& t6 R! n( I1 |9 _7-5 实现_单个用户数据部分缓存6 x* R6 h, e$ `# E
7-6 分析_IP黑名单数据缓存
& s& q% @( {8 R7-7 实现_IP黑名单数据缓存
; K0 g5 g: I- M* E U7-8 优化IP今日抽奖次数 x9 F4 v+ E# @2 p, [4 \* k
7-9 优化用户今日抽奖次数
. S/ X" V( W3 ~- L$ g7-10 用户今日抽奖次数(上) A5 c; h. ]/ U
7-11 用户今日抽奖次数(下)
5 S" B0 {8 M* I, n' r8 p; I7-12 为什么使用奖品池
* t. m# l. k4 f: Y2 e$ H( a7-13 初步使用奖品池
; W4 j3 v3 M; W9 g* N8 H0 |6 O7-14 分析_优惠券的全量缓存
7 N+ q) U0 `6 i4 k& O$ I" z5 H7-15 实现_优惠券的全量缓存(上), C, ~1 t, Z( @! j& s; F
7-16 实现_优惠券的全量缓存(下)
0 |& S! S% o- X7-17 使用redis优化总结
, I9 e* ~$ M6 S: l
9 W1 W2 l4 q) j: P第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
/ Z' }2 V% n, ?3 n本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。& u' z- v% L0 c7 d
8-1 发奖计划设计分析: [5 U* N; h/ O& r G6 u( v5 m' Q
8-2 实现发奖计划(上)
1 f+ r$ v: ?8 e6 B3 S8 L% P8-3 实现发奖计划(中)
+ a% _+ q& y" @) s( r; t/ m: V8-4 实现发奖计划(下)
% Y) g4 J/ Y6 V0 l& `: Z, |1 k1 ?+ l! Z8-5 自动填充奖品池分析7 Q- d! A) l( }# Q* Z( K
8-6 实现奖品池(上)
: w" n" S0 } `- m8-7 实现奖品池(下)
/ w) P* H- ?% \! D; V6 Z3 Z8-8 总结发奖计划和奖品池7 B! Z H+ L3 s% M$ }4 D
% ]0 g8 g% S2 R
第9章 完整性演示以及更多总结【整理运动,整体交付】
: J8 n5 I5 c# V* ?7 R) m实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
7 i# h8 b4 _7 r) n7 J/ p$ B; k9-1 前端大转盘分析- ]1 h; r+ E7 t
9-2 前端大转盘效果实现; Q. W2 g0 D* _$ g
9-3 优化奖品设置分析 l! C8 ^& J. u, n/ g$ n d
9-4 优化发放奖品分析) I0 ]9 R' U+ g7 @& ^0 o
9-5 再来一次压力测试吧6 O$ |2 T7 w' Q" p
9-6 压力测试; x) h$ Y1 n1 N
9-7 更多运营策略+ P5 m. C( |2 F. d/ W* V9 p( Y
0 m9 G# D* D+ }7 @% d
第10章 引入thrift框架【附加运动,扩展服务】/ N/ w3 b) z8 |/ x7 ]' W9 T) K
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。) C; |/ L, z- o
10-1 了解thrift% H- n, Q1 o% ?( Q Y# B! c
10-2 定义thrift文件 g1 _+ \( w* k- ?
10-3 生成代码
- }2 c; a" q; K1 h) v$ a10-4 服务端接口(上)
! P2 {( Z; y6 W: y" W2 i10-5 服务端接口(中)
6 e' t5 u% f% F# ~* z( l* G) x10-6 服务端接口(下)
: a. V- Z4 `/ |- B; [: m3 B10-7 客户端接口1 C- N7 ^4 J+ m; f P4 b
10-8 总结% y/ Z% D! t ~5 h$ R1 m5 W2 Y' c
; W4 \/ t% V% A: f
第11章 课程总结【结束,沉淀】' l+ ~" h2 _9 z7 d: Z \* w3 X% ?
对课程进行总结7 G8 }+ e. d. s# @/ W/ D+ K) V1 E
11-1 问题与思考7 n) ?( s4 J+ ]0 s3 C' T
11-2 课程总结
* L2 s& P. i: k2 y$ n$ r) H# M9 n* {: q
〖下载地址〗
5 j2 O) ]8 p; W# ~0 @) ]( Z8 w% b( @/ o) P
% \: K" U; ?6 d6 J
) J% y, D7 S1 G
|
|