' i7 [% [' C ~0 A
〖课程介绍〗3 X& n5 R2 z0 F& R
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平" _. } }; T- Q! _; o, |
& p; B4 j$ i& J9 c
〖课程目录〗
( k! C) a0 }' i; c0 Z& c+ ~# V第1章 课程介绍【预备,初识】- e! G R$ S# Q" h
课程内容的整体介绍以及学习建议。
* |$ z; |( E" ^' v1-1 Go抽奖系统导学 试看' }- I- t! t0 q/ t0 ?
/ o8 H; _1 v. D+ B2 x8 ^8 b' i. J
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
6 G6 j! E% ^$ e8 B6 V: d" l看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
2 @& l! r2 b% E, A5 W$ ?0 e2-1 年会抽奖_实现分析$ c1 [! R: s9 G/ ~
2-2 年会抽奖基本功能实现; Y( `0 l7 V, R/ x' }. X( j
2-3 编写web单元测试和并发安全问题
$ M( ?5 j0 a, E8 ~6 f m7 p- K2-4 用互斥锁解决并发安全问题1 @" W, }0 Y& i k: F
2-5 彩票_实现分析( h* |) b* T, u
2-6 刮刮乐和双色球 试看; a7 E8 O5 C/ A1 ~+ K" N; |
2-7 微信摇一摇_实现分析
( v$ p- }2 f- A2-8 微信摇一摇实现(上)
0 [1 K* [. q, E$ {2-9 微信摇一摇实现(下)
* D5 u0 u8 ` E1 ?9 }: e( L7 _' Q: _2-10 bug修复和压测
( Q# N4 B. ~/ e8 U7 c2-11 支付宝集福卡_实现分析3 F0 @ J. x. u2 Q3 \5 m& @
2-12 支付宝集福卡实现. A) i: f1 o! I) g( k, J
2-13 微博抢红包_实现分析( T1 ^$ c8 b9 z- w
2-14 实现发红包
u4 v, M% N; n S2-15 实现抢红包
# N4 s$ @) { Q2-16 均衡问题和sync.Map解决异常
% J: a+ j+ Z' r8 O! n2-17 改用chan的方式解决并发安全问题
% G# C) |- u c0 z2-18 再次压测验证和优化改造
. P1 V1 M6 ]. x' I2 S2-19 抽奖大转盘_实现分析. m$ @. s0 s# A4 U3 J7 t
2-20 抽奖大转盘初步实现
$ Z% O3 b I4 L+ {' E! `2-21 sync.Mutex和atomic改造性能对比* S5 X% B- B% i$ ]2 k
2-22 六种抽奖活动总结
& a- r# T8 S" K6 k, T0 S* I# P2-23 并发编程与锁的底层原理
( h- d F9 Y% g }7 d4 C2-24 高并发和高性能系统中锁的影响与解决办法% N; o* v6 j' }* o3 I/ k# F* J
2-25 阶段任务
/ B. k/ l/ a% g" ` W& {5 m0 `
* R4 ?) [% R: u2 q第3章 系统设计和架构设计【扩胸运动,有容乃大】
* i1 v8 f$ Q% ~) O8 L, Y本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
) }8 T+ d" x0 |2 w: Q3-1 需求整理和提炼
3 I$ B. V9 T* }3-2 用户操作和业务流程 ^) r" v( ^5 f9 z4 o
3-3 数据库设计: W8 P' g( O4 E; }/ s( W! i
3-4 缓存设计 试看
1 ^$ }) d. {9 L# l+ ~3-5 系统架构设计1 ~9 y5 ^5 K9 R) H
3-6 系统设计和架构设计总结" u3 u4 S2 O& G% L6 L; S5 h
3-7 高性能程序设计,缓存为王
% X: o6 O$ Z; R3-8 系统架构升级之道,关注关键服务依赖7 K9 X8 u6 l5 h$ f& M0 r6 s( L
3-9 阶段任务8 z( O7 p+ K R2 U* R% _2 {
& N1 X* F; i; z4 U第4章 项目框架与核心代码【踢腿运动,固若磐石】# x4 m& C- O, s
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
9 x& S1 {4 L$ J% _) y M" y3 K4 J3 a4-1 项目框架搭建
$ Z" M/ z$ S6 D* G" c# h% t1 N- _4-2 数据模型的生成
$ Y# H( u; r q/ A/ Q4-3 核心的dao和service类/ t, L' v% J0 l
4-4 定义dao
) Z, q& x& Q3 d h1 o b1 ^4-5 定义service
0 C8 m6 S% G& Z5 ~4 `# C6 S7 H4-6 定义数据库和redis配置信息
! K6 T N# k! O2 S5 q3 d2 _8 W% F4-7 创建数据库实例及其要点* m1 m- \. X4 {% V
4-8 创建redis实例及其要点 R1 I( x2 |) U9 x q
4-9 利用iris建立web站点
* u; u- O! N# P6 A5 ~0 p* i4-10 项目配置和通用方法
! u( x7 P% ~2 ?+ X: n$ M. Y4-11 web站点初始化构建
2 ?* z R- {$ d8 Y7 y# }4-12 实现IndexController+ s( t# s' b# ?( b8 {, l
4-13 完善路由和main.go文件% n* p3 g0 X* g; l
4-14 登录和退出:安全值校验和防篡改( _7 x( d, s7 a
3 i# u/ ]; ]3 L; s第5章 后台功能开发【体侧运动,运筹帷幄】
# y1 n; a7 H$ H8 M9 |4 D' U. t1 @5 w3 o一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。) i/ o7 h( R3 n9 h J* I8 s" K$ i
5-1 后台功能开发介绍
; @* L/ g. `1 X4 ^+ k9 s! e" ^5-2 页面模板和AdminController4 m6 a( I+ w5 r4 K
5-3 奖品管理实现(上)' u% E- C4 _! U" g
5-4 奖品管理实现(中)- \$ C* Y% G+ ^
5-5 奖品管理实现(下)7 Q0 X7 m7 Y2 t( G: ]1 i) R
5-6 优惠券管理实现(上)3 [. H' m1 {5 m, o* E) h
5-7 优惠券管理实现(下)# H8 ?+ J" ^0 C8 C' a E5 P! o
5-8 中奖记录管理
) {/ c* C P \9 v- S j: g5-9 用户管理% L/ W% q4 U |
5-10 IP黑名单管理
; U, E* X5 G3 o/ f9 p7 g# v* G7 }; F1 e4 P
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
$ `% t M- p; g8 @9 Z2 n本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
, |/ |5 q3 S) E: T$ z$ @9 p6-1 抽奖接口开发细节分析; p$ V4 \1 G2 d" d2 K& W
6-2 用户并发操作的锁8 }) c' b& d" U
6-3 验证用户、IP今日参与次数(上)
9 o% J9 t1 W9 G; U4 c6-4 验证用户、IP今日参与次数(下)2 @+ I! A5 i" G, _6 v5 g
6-5 用户、IP黑名单的处理0 J/ `6 {3 I1 m
6-6 抽奖的实现
u0 R0 E8 p* [+ ?6-7 发奖的实现
4 E: E! ^, |8 ]2 P' R3 v. j6-8 中奖记录和返回结果
# B0 ^; X6 [# ~$ s# a7 R2 p; }) Y1 n% E( x$ }# \3 ~% i+ e" L
第7章 使用redis缓存优化【全身运动,升级版本】
( e ~. M" x0 f. S$ L: E本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
/ r8 G$ u- J7 w0 G2 i5 W# T; m7-1 分析_奖品数据全量缓存6 p$ n; E, c! z- H
7-2 实现_奖品数据全量缓存(上); s9 M& a. Y4 x2 u0 ]
7-3 实现_奖品数据全量缓存(下)
" X B/ M ?. U# d7-4 分析_单个用户数据部分缓存
, _4 h. [3 r" d: e! j# Q7-5 实现_单个用户数据部分缓存
6 n/ m3 I/ b7 z7-6 分析_IP黑名单数据缓存* B& Y- |: ^9 c9 b$ m
7-7 实现_IP黑名单数据缓存
7 X6 B4 C5 @9 @; R7-8 优化IP今日抽奖次数 v; ~+ K' ~ ~" |1 U" |
7-9 优化用户今日抽奖次数6 j' E s W" u3 P
7-10 用户今日抽奖次数(上)& O$ O: X' [. ]# M4 S2 R$ @ d1 W
7-11 用户今日抽奖次数(下) {7 n7 Q* Y3 Y- R1 n4 W* p/ \3 _
7-12 为什么使用奖品池
3 M9 {. s5 z9 G6 r7-13 初步使用奖品池! N' f2 r. K0 H) E, i) d P+ X7 m9 M
7-14 分析_优惠券的全量缓存
4 }! e* l# v# m2 S: b6 |. D) J7-15 实现_优惠券的全量缓存(上)
+ @* h0 R2 t u, [ {9 A: R7 D7-16 实现_优惠券的全量缓存(下)
* n: e- r. o; h4 @/ |7 H x2 @7-17 使用redis优化总结
; i) V! A) t; g( L# b P* b- U- W7 e6 F
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
: {* B- F4 r" e8 U! p2 Q本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。: @5 F" R/ I- m6 ~7 y5 m& p- u* U
8-1 发奖计划设计分析1 \' A- r2 k: H% L$ X
8-2 实现发奖计划(上)
( B {& B8 I! ]! Z7 i1 }6 U' J) o8-3 实现发奖计划(中)
7 J* W: v3 ?# |/ T9 ]; b8-4 实现发奖计划(下)
- u5 U! s% C" j/ r8-5 自动填充奖品池分析0 t' g/ p* R I( ?2 U
8-6 实现奖品池(上)
$ K2 v# a& |3 l0 U* y0 S8-7 实现奖品池(下)
3 e4 l. e. ~5 Y. s+ L6 P6 M8-8 总结发奖计划和奖品池# c: Q7 O% x F; \
% p9 F- r# ]6 S+ R% E& _第9章 完整性演示以及更多总结【整理运动,整体交付】5 A5 M" e" ]2 z3 L% N6 f0 b
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
! f- ~" b% C {$ s9-1 前端大转盘分析8 O) P8 R V% |, |; f! H. t
9-2 前端大转盘效果实现* @: N5 K* e# |1 }4 x, G
9-3 优化奖品设置分析
. u/ Y% w+ K- S2 R. }9-4 优化发放奖品分析8 P% f; ]" s9 S( ?$ H3 v" ~
9-5 再来一次压力测试吧; n# t/ D' U7 H8 L- Z' s
9-6 压力测试
+ _" |' ?& y$ z/ O9-7 更多运营策略
3 i3 I6 J1 G% [- k+ \! _5 f! ?# s. M
+ m# a4 [7 t% _0 h3 J第10章 引入thrift框架【附加运动,扩展服务】1 J, A$ f4 w) }+ [: M/ S
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
3 F$ R( W+ @) F& z4 Z4 Y7 ?8 z4 A10-1 了解thrift
2 h+ B5 y3 }2 s+ A1 s0 t% R10-2 定义thrift文件/ A: G. a: u# h: ^* s9 v( O
10-3 生成代码
# U+ n; b: x! a2 a) S8 \' i10-4 服务端接口(上)+ r/ M' Z( Y& W* }
10-5 服务端接口(中)& Q8 P( @6 X6 P
10-6 服务端接口(下)
/ p! F9 Y! U; \3 D10-7 客户端接口2 z- c" H9 d) E, ~* w, U
10-8 总结
( V4 Z7 }( V# q& V0 Z) S8 \' N6 i$ I) f3 y; q
第11章 课程总结【结束,沉淀】4 l4 ?# G! U; C" d& t4 ^: Y7 D
对课程进行总结
' \- i+ W; w7 @+ }- F11-1 问题与思考
3 o0 G1 R, c: ], C6 R; U11-2 课程总结
/ M5 u+ ^8 r3 T- i1 C" Z, _9 S- e+ [4 n! ]# U z# P( p+ X
〖下载地址〗
% N- E! T' w& q r0 {1 G3 j/ O$ U4 v6 n4 P. W1 i
0 h R$ ?) G% L) {# z8 S4 P5 o/ M! F" G( y, k4 o
|
|