, F w) O i1 s0 z' ]〖课程介绍〗" f0 L" V6 H+ b3 m& t: H/ i5 {
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平1 i( F# z# c, w6 b
4 B+ h* P# y. l〖课程目录〗
! R! m/ k& X; q) G& f第1章 课程介绍【预备,初识】8 \+ B) u' b/ e7 d( S) S b, x
课程内容的整体介绍以及学习建议。
. s' ~& C+ s- K& B9 J8 `1-1 Go抽奖系统导学 试看
, w" d _+ E' K. d
6 }8 H5 n; }! r* i# I第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
$ z+ ]6 b; u9 ~, w# {看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
" p, ~7 a3 P+ S; l8 g# l4 z2-1 年会抽奖_实现分析
# t# k( H4 N' e# n- O6 {+ V- I2-2 年会抽奖基本功能实现
% i" G) J4 x- e. n$ K0 [( I- |" w2-3 编写web单元测试和并发安全问题$ J9 f. F4 r, g
2-4 用互斥锁解决并发安全问题* J. m! e( X$ K: P% S
2-5 彩票_实现分析
( L K3 z0 }* f% c2-6 刮刮乐和双色球 试看) p9 d3 V& |( w& q' M- _; c
2-7 微信摇一摇_实现分析
% [* z$ o6 F7 g9 m/ \+ n/ w! \4 n7 l( @2-8 微信摇一摇实现(上)# n4 G$ l- |( O
2-9 微信摇一摇实现(下)$ |2 T, k$ z% D1 N
2-10 bug修复和压测+ ]! U Y- l: [# O
2-11 支付宝集福卡_实现分析
6 C) [* \8 ?$ L2-12 支付宝集福卡实现
# O: X6 p& e/ X2-13 微博抢红包_实现分析. Q' o$ U7 u- w+ E1 E6 O
2-14 实现发红包
# D! F4 m/ m/ |- M) r$ t* w ?0 S; ?2-15 实现抢红包
( K/ g1 Z; s; N. M8 j2-16 均衡问题和sync.Map解决异常
8 C0 k( `3 @' o/ s" B4 n: C2-17 改用chan的方式解决并发安全问题
4 G# J) v9 G+ E% t9 d2-18 再次压测验证和优化改造( D- h. `+ \7 R- ~9 [( U
2-19 抽奖大转盘_实现分析
; h" m6 v& T: w `4 m( m. O/ D2-20 抽奖大转盘初步实现% |+ a8 ~& Q8 \( q
2-21 sync.Mutex和atomic改造性能对比8 S6 Q+ _: V: r& O
2-22 六种抽奖活动总结
3 g( V5 b8 c- h0 v/ s2-23 并发编程与锁的底层原理# D* W5 u! i# K
2-24 高并发和高性能系统中锁的影响与解决办法
5 N. i8 K, ] E9 N) D2-25 阶段任务* g, b) e3 S; @
+ Q; g) a9 |( O& C$ o第3章 系统设计和架构设计【扩胸运动,有容乃大】6 U2 F" _, h! G; v7 A) v0 E4 I
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
G& `+ Z) f) A' D2 d3-1 需求整理和提炼
\* O, o! K9 f$ I3-2 用户操作和业务流程1 p* g/ W" N9 J' N
3-3 数据库设计- X z3 c/ F$ [0 y
3-4 缓存设计 试看, ~ ?$ i$ I1 V+ a ~) I: L% N
3-5 系统架构设计
$ |8 W' `; l6 j6 v4 F8 x3 W3-6 系统设计和架构设计总结
1 |+ D2 a/ J; V9 c9 D1 s* F3-7 高性能程序设计,缓存为王8 x ^) d' D' t8 @3 V
3-8 系统架构升级之道,关注关键服务依赖) e3 F8 O, M4 y \5 r
3-9 阶段任务
) O0 _0 M9 S) X8 K9 H
! O. \/ p) D- M I: b0 y第4章 项目框架与核心代码【踢腿运动,固若磐石】
, U: l5 S5 h( x) x) W. {本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。2 B# S( Z4 }& M3 e$ n, Y+ T0 @7 s
4-1 项目框架搭建
y* S' O% d( O# O; [4-2 数据模型的生成8 f% U7 p# F$ [# {" `
4-3 核心的dao和service类& D$ `$ W$ J' Q3 ~% x+ ]* E
4-4 定义dao/ j! q6 M6 F; d' A3 ~; _
4-5 定义service
/ v% e& @3 H' Z4 m4-6 定义数据库和redis配置信息
4 s- A9 J% ?! F* h5 J4-7 创建数据库实例及其要点
. }! m6 R$ Z: B; U/ Q5 z4-8 创建redis实例及其要点7 W( a* I2 K: z' `
4-9 利用iris建立web站点" R( X, {: J$ S& I- J
4-10 项目配置和通用方法
/ a" Q5 u& X0 ]1 z" T4-11 web站点初始化构建: R) v6 ?8 l4 M. F
4-12 实现IndexController2 S" E8 V4 K* S$ r. ^% Z! b+ A
4-13 完善路由和main.go文件
9 ]* q+ ?7 J; Y& ^ q, V6 `$ B3 q9 s4-14 登录和退出:安全值校验和防篡改
, Z' ` U1 q% X0 ~
) q1 h9 B5 `7 V0 z- J' s) Q! ~第5章 后台功能开发【体侧运动,运筹帷幄】
+ L: ^6 l! E& N2 J; w1 H一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。& i5 h/ |! G4 [- e7 g, }1 z
5-1 后台功能开发介绍4 D4 M2 ~) Z. n! [8 ^
5-2 页面模板和AdminController- @' [' L. k1 W0 w* m4 {/ [
5-3 奖品管理实现(上): w7 n) O2 q9 S) \6 {( g5 t3 |
5-4 奖品管理实现(中)" P, A1 i; V' Y- K0 Q/ |
5-5 奖品管理实现(下)8 E( X7 s/ Z& Z g
5-6 优惠券管理实现(上)
! i) k. S( a' M, k5-7 优惠券管理实现(下)
! s: r @9 z8 q7 e6 W1 w- \5-8 中奖记录管理
8 E, {; F# B, R2 H E0 A o3 x o5-9 用户管理! o* Z7 d0 B0 t
5-10 IP黑名单管理
$ O" Z5 w9 u2 k3 n x( ^
5 c4 w6 [; `7 L第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
! z8 P y) W. b; G) k本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
. b: q: T! L$ {6-1 抽奖接口开发细节分析
: T0 n. f& L* o3 m, G z8 L6-2 用户并发操作的锁
. n ^3 O$ z+ }4 w2 o! C( ?3 u6-3 验证用户、IP今日参与次数(上)# ]' Z0 {/ ^8 H( H; v
6-4 验证用户、IP今日参与次数(下)
6 w7 {9 n, i7 \6-5 用户、IP黑名单的处理* `! m7 n# X9 ]; c _) ^# I: E
6-6 抽奖的实现
0 ]. G( U: g! b6-7 发奖的实现; F* X- C- ^0 Z" I! x( B6 e$ x
6-8 中奖记录和返回结果
; }8 K9 j5 l. c6 W* L7 A6 k& a7 ]
! o# D- n3 ~, F1 I; [4 h第7章 使用redis缓存优化【全身运动,升级版本】
0 Y( J4 {* V! E- s5 }: n本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
, E- P, l, j8 u2 ?$ F$ ]7-1 分析_奖品数据全量缓存
) n3 V) X- I% ?% e: j" S' g9 Q3 n7-2 实现_奖品数据全量缓存(上)
0 X7 z4 |8 d( b3 d7 w \7 g |7-3 实现_奖品数据全量缓存(下)
( F) s& v a. V7 b$ O$ p+ U% A7-4 分析_单个用户数据部分缓存
9 B7 e) v/ Q8 k9 m7-5 实现_单个用户数据部分缓存
; C3 J, F5 X. q' n8 ?' b7-6 分析_IP黑名单数据缓存& j* K" M t$ [0 l& ?* o% ]- |
7-7 实现_IP黑名单数据缓存. G0 ^" W4 z4 ^; H: Q
7-8 优化IP今日抽奖次数
7 b) V) _; ? u# |4 {; G& s- Q7-9 优化用户今日抽奖次数
) d% }& n% T* m7-10 用户今日抽奖次数(上)6 o, l% r, L8 z! j; _
7-11 用户今日抽奖次数(下)/ |' f! H$ b! ~/ X8 ]
7-12 为什么使用奖品池
* n* H% I# H5 ~4 s i7-13 初步使用奖品池2 g k. K5 ^* D; b! @4 _
7-14 分析_优惠券的全量缓存# q" b6 t G5 k4 J
7-15 实现_优惠券的全量缓存(上)9 F5 w8 k: `2 k; L) E# q' J
7-16 实现_优惠券的全量缓存(下)
0 o6 B+ L( f5 K' `7-17 使用redis优化总结
& A' Y& D# v' g) i$ i7 t ^
! |& M! x0 u5 O) l+ Z第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
6 o- S+ n$ s/ e5 M本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。" }! f+ M' O* M' q, f
8-1 发奖计划设计分析- |" \" P) ^$ p% b
8-2 实现发奖计划(上)
8 S7 }; ?% D8 r9 U# U6 R8-3 实现发奖计划(中)
( c) I5 w1 c: e8 q3 C- [8-4 实现发奖计划(下)# P. R- x8 t. A& [6 H# J
8-5 自动填充奖品池分析/ G, v% }8 j# \9 p6 c
8-6 实现奖品池(上)
" o6 E e' K* M8 G2 ]6 q8-7 实现奖品池(下)( ^0 W4 o# ~6 x* M
8-8 总结发奖计划和奖品池
2 T5 @, r B% ]; }: b. l
1 M) b* L( n+ r第9章 完整性演示以及更多总结【整理运动,整体交付】
" m$ _( e/ u+ K9 Q实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
4 _/ Y: d Q1 f9-1 前端大转盘分析
/ W, s2 c+ _- J9-2 前端大转盘效果实现
8 a& N1 J& R! [/ C1 }4 |* f2 I, M9-3 优化奖品设置分析
, Z* d" t: }: Z$ w; t9-4 优化发放奖品分析
: I5 p U3 q4 V! s9-5 再来一次压力测试吧
5 p0 N4 x, Z/ Q9 _2 G0 _1 q6 w9-6 压力测试
& A* K# \2 R( Y. p' I4 F9-7 更多运营策略
8 ?7 e# X! `% U
" K& H1 N) y" w: |第10章 引入thrift框架【附加运动,扩展服务】
3 ^: s+ t) _3 d" g- E3 n通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
. q3 \0 A( N% c6 S5 o4 {- I$ |10-1 了解thrift4 \( }" x. o* ?" W$ w2 F, t5 D Q
10-2 定义thrift文件3 I/ v- s; R. r) m
10-3 生成代码
! o1 h3 `6 ?+ V3 C10-4 服务端接口(上)
* W @% S$ U2 t$ L/ r. h10-5 服务端接口(中)/ K, r g% r( f# y
10-6 服务端接口(下)/ |' e# t/ f/ Q' @: J: M
10-7 客户端接口
2 p. M" E" f# p: q: s2 e* ?" r! j10-8 总结/ S3 J" t& f+ D7 h( ]2 s4 F
8 _# Q3 U5 C, T* ^/ ^2 A第11章 课程总结【结束,沉淀】
# _8 F7 O1 ^+ k- Q# t$ Q对课程进行总结
2 X% n( h7 I$ ?8 Q) l/ H11-1 问题与思考5 `- h2 m2 w( F) i, q
11-2 课程总结$ D7 E0 r/ A, b q9 S; P2 M5 a
; X$ \! ?$ E. I4 R; Y+ U, z
〖下载地址〗
L+ i9 ?. M6 r8 }
8 [7 R( w; _8 d1 l, T! {/ F0 g# A" U1 B! R- f0 t& D! ~4 W
& Y- J% a3 b4 @* U |
|