" n' z `# h0 [! B7 m* c- h
〖课程介绍〗
8 d+ z4 m1 u7 M) x抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
0 ?9 H% R* f! t6 H
; u/ ~6 z( e! ~' [' e3 o〖课程目录〗& \! `1 B$ c* n2 x: ^& v2 B
第1章 课程介绍【预备,初识】, b/ X3 R+ B M7 V- _: S2 N% ]" @
课程内容的整体介绍以及学习建议。, j7 X) m- I( z$ M k c# C; `: R
1-1 Go抽奖系统导学 试看2 N4 v: K& x2 Y# j2 w9 @5 r
0 t p1 W; t' y# O0 F7 A: y第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
# D, Z$ p5 s; \6 C& ?9 J" p看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
7 C9 @' W7 c! w1 i2-1 年会抽奖_实现分析- e* A+ }5 u% |; g; ^
2-2 年会抽奖基本功能实现/ C& V. Y# {: ^/ m+ \
2-3 编写web单元测试和并发安全问题
1 K# T8 M7 B( x: _! `1 [2-4 用互斥锁解决并发安全问题
. ~) B. _+ b+ z0 h1 f M$ M2-5 彩票_实现分析
0 j* D& `& p5 X8 g2-6 刮刮乐和双色球 试看
$ m9 b+ A! P0 o; {2-7 微信摇一摇_实现分析
$ {$ m" h5 d0 S2-8 微信摇一摇实现(上)
- }4 N' t% ~5 G- N8 E0 K2-9 微信摇一摇实现(下)0 ^5 d4 W3 m1 D& I; }4 M0 s
2-10 bug修复和压测) C g8 v+ `8 x
2-11 支付宝集福卡_实现分析
4 I5 h% V2 J: c' N$ m2-12 支付宝集福卡实现2 |& [2 m3 [6 x% h4 `
2-13 微博抢红包_实现分析% D: h: P/ |8 [, K: ~5 f
2-14 实现发红包
0 a4 a9 _$ z4 D' }! |' T2-15 实现抢红包* p+ U( q9 [+ \ J
2-16 均衡问题和sync.Map解决异常
+ C& ?& X" ^) e" U2-17 改用chan的方式解决并发安全问题
" C' j" t& I$ y8 q" w( a2-18 再次压测验证和优化改造$ F, Z% @. {5 F$ d6 w2 @# m$ G
2-19 抽奖大转盘_实现分析
$ ~4 b2 Y) p' d: d# \' T2-20 抽奖大转盘初步实现
, t4 f" X+ ?) r# P3 a, k" c _8 M2-21 sync.Mutex和atomic改造性能对比
. @# _" t$ v- l1 [2-22 六种抽奖活动总结* n; u5 J; g( w( K8 D
2-23 并发编程与锁的底层原理
5 g3 u% i. x! p) o% u9 @8 z2-24 高并发和高性能系统中锁的影响与解决办法
& y% D* ~1 a2 D) y2-25 阶段任务! W6 j, @8 i$ h' M
( E* |9 f& F; C& c* F第3章 系统设计和架构设计【扩胸运动,有容乃大】
T8 F8 e1 {, Y" f) B& S& _本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
+ E/ ~2 l; |: u4 \1 U/ Q% V- c0 S: s: x3-1 需求整理和提炼
) [2 h! ^9 V" [& K: t9 S3-2 用户操作和业务流程& V* h7 Q) S& T* \% G+ S
3-3 数据库设计7 f! {$ r& s9 ]: |) ~+ W3 w
3-4 缓存设计 试看
, R2 k4 A: u# @* @# ?; t w: T1 K3-5 系统架构设计
+ m- U* u6 @7 c, A! A2 p3-6 系统设计和架构设计总结6 k+ }5 s- c6 n# n# G) d2 ~
3-7 高性能程序设计,缓存为王
% G8 K# `1 p% ~& A3-8 系统架构升级之道,关注关键服务依赖% h6 \0 g- s$ K+ ]3 t% `! E% }9 ?9 G
3-9 阶段任务/ v) ?$ n8 b# ]* Z/ {8 t
, P; K; a+ k% K/ }
第4章 项目框架与核心代码【踢腿运动,固若磐石】# s" t& m% I! T& L; b
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
C2 j/ R* T. P L6 m4-1 项目框架搭建
+ D* P. b$ L3 |( O) N4-2 数据模型的生成/ E/ P- _7 x5 h6 ^" f
4-3 核心的dao和service类
1 A) S" ^# S) m; O# n( S% A$ F2 b" H4-4 定义dao+ O: r: U ~7 T
4-5 定义service
% b! y |8 G+ B4-6 定义数据库和redis配置信息+ Z" k* |- s; v" v2 T r8 P
4-7 创建数据库实例及其要点1 D* }' D- V5 L. ~: e& T
4-8 创建redis实例及其要点
: T* k$ r0 K k7 I4-9 利用iris建立web站点
" C) a+ ]5 f5 I8 B J- h2 B- d4-10 项目配置和通用方法0 I f9 H! w+ J" z
4-11 web站点初始化构建
; S: e' p4 {4 K0 Z4-12 实现IndexController' p% r3 F3 t+ E1 r
4-13 完善路由和main.go文件 O& o- R. D, G3 V
4-14 登录和退出:安全值校验和防篡改6 ?7 A7 d* u4 q5 h8 z! Q
3 S. Q- X+ _1 [" c4 k
第5章 后台功能开发【体侧运动,运筹帷幄】- t% E4 O' \$ M( Q" ?/ t) d
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
, D* g. n- b5 R- P0 c. C5-1 后台功能开发介绍
* N7 d8 |' I2 N& Y5-2 页面模板和AdminController0 `) p' i: P2 A3 n1 S$ f& K
5-3 奖品管理实现(上)
4 L; Y4 M& P7 p+ A e& j5-4 奖品管理实现(中)
6 U6 A0 G( I+ h* i9 X7 ^% ^" G4 d5-5 奖品管理实现(下)8 a* [1 Q2 {- L7 Z! Q) t
5-6 优惠券管理实现(上)
+ e C) [. B# ~8 A: E. @: z& ^6 r5-7 优惠券管理实现(下)
1 M3 U& ?7 @8 @& a$ \5 m: H5-8 中奖记录管理
, B8 H+ S K& C7 c; P! R% u6 I5-9 用户管理
( x$ v, \4 f( c5-10 IP黑名单管理0 h2 g# N6 n9 R; d
) d$ _: C- V Z, v. y" \第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
% e2 B5 B" i4 L' Z4 M1 \8 [% C% l本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。# R7 j2 m+ ]# {, g! i
6-1 抽奖接口开发细节分析2 N6 Q8 M( ] A1 l. N$ q; ~
6-2 用户并发操作的锁8 B1 F* s2 c% [! \9 B3 M
6-3 验证用户、IP今日参与次数(上)% r4 ?5 z* j* n# g0 M/ t- |" }: M$ O
6-4 验证用户、IP今日参与次数(下)4 h6 j9 w' R6 H1 {! t: y
6-5 用户、IP黑名单的处理
2 [( W- M% ^0 F; z# c6-6 抽奖的实现$ v+ [0 F v" N0 U5 M
6-7 发奖的实现
' p) @8 U% p7 k f6-8 中奖记录和返回结果 E) E+ }( Y5 [2 G$ `, U
& ?7 U. j2 I, d* C
第7章 使用redis缓存优化【全身运动,升级版本】
0 E( \2 |1 h) Y& U! u% v本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。6 V6 v1 k# b( d& T
7-1 分析_奖品数据全量缓存
. M+ Z1 P1 C7 v7-2 实现_奖品数据全量缓存(上)) f( n5 O# r% g! k/ L. `
7-3 实现_奖品数据全量缓存(下)) y" Q6 M+ d* J$ @- U
7-4 分析_单个用户数据部分缓存/ i- T; y! U# e) b- F% y* |
7-5 实现_单个用户数据部分缓存
" v/ z* k8 r7 R9 x( ]7-6 分析_IP黑名单数据缓存0 M0 q# q4 @& m7 k7 d- x
7-7 实现_IP黑名单数据缓存
! c# \$ S9 o5 ?* N Y+ S7-8 优化IP今日抽奖次数* J/ i6 Y0 s0 Z& Y6 F9 R* h" u
7-9 优化用户今日抽奖次数, c! a; _( G( ^2 X
7-10 用户今日抽奖次数(上)' Z1 u" ^5 I3 g* f; s
7-11 用户今日抽奖次数(下)7 M9 Y! U; ^/ ^7 D
7-12 为什么使用奖品池
9 I- h9 S' I" Z- {7-13 初步使用奖品池
! V" F. a0 E7 d- x7-14 分析_优惠券的全量缓存
$ j5 i' L. n6 K \, N. ^. t7-15 实现_优惠券的全量缓存(上)
! `; _5 x% L: N. a2 A7-16 实现_优惠券的全量缓存(下); c) D( |# o1 U3 C' M
7-17 使用redis优化总结
e; ]" ?6 K( |4 U* {( T$ V, e. D! u
- L+ u0 h1 h+ {" F第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】4 U( w% `$ T2 |0 D
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。4 H& T- b. T$ T' a f/ ~
8-1 发奖计划设计分析
+ y) m; e0 ^3 S) q8 c8-2 实现发奖计划(上)
. f7 L7 x- }; O0 b$ q' G& O8-3 实现发奖计划(中)
. h0 C$ B/ ~' g8-4 实现发奖计划(下)
3 l1 k( y2 [$ @! n. q, f! V) R4 w8-5 自动填充奖品池分析5 v; Y n7 E& z, p- R5 z) A. D
8-6 实现奖品池(上)
, ^) D8 n: X- V% i- a* m: m6 J, x1 ?8-7 实现奖品池(下)
* V% x: V* E- y& O7 w* F8-8 总结发奖计划和奖品池
6 D. s0 C! V8 w. n5 |+ y; J; F6 K+ w! M4 K" ]! e
第9章 完整性演示以及更多总结【整理运动,整体交付】
7 ^# d3 C- }! A# o) G- m. u实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...8 Y2 A3 K- d/ T( y2 s |! Y9 q Q
9-1 前端大转盘分析
: ^ s# W; n3 |. x5 ^+ P ~9-2 前端大转盘效果实现7 \+ X; K4 }$ d8 R4 d: B
9-3 优化奖品设置分析2 G5 _$ s; q) p O" g9 O9 N5 g
9-4 优化发放奖品分析) X0 R9 _6 n- O! {
9-5 再来一次压力测试吧4 L. [0 U @7 Y/ h# I: }
9-6 压力测试
" G) G, g! U7 H9 v' s- G# a9-7 更多运营策略2 L2 j0 | D0 c1 g7 @
; t0 t* Q* V4 H; c! Y. {- @0 d9 I第10章 引入thrift框架【附加运动,扩展服务】
" z2 \+ G6 j% k. J通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
. g7 _. i1 F! X1 t% X" \4 D) w10-1 了解thrift
: i# l" v) ^$ c6 Y- e/ }10-2 定义thrift文件
8 n, n' b0 g* M2 N10-3 生成代码
' G5 t9 R+ n2 g" L. e10-4 服务端接口(上)
N7 }9 v K2 b, s2 Y, _10-5 服务端接口(中)# o o( N3 \9 C" c* f
10-6 服务端接口(下)0 B, ~9 l& x+ f4 w4 I
10-7 客户端接口
1 n& |% H" a* c7 I3 B. B& d10-8 总结
* [3 E4 a/ q7 v) N& a m" s3 a/ j0 C9 i
第11章 课程总结【结束,沉淀】! q# x- R- F! W5 |8 D: O' f' k. v5 O8 X
对课程进行总结
2 U) E2 U0 i3 Q4 B9 R11-1 问题与思考
- E- O V" c. {/ o I( s+ n11-2 课程总结. @/ q# ~8 S+ m$ K7 r
& f- d9 f& L1 F( a
〖下载地址〗0 d7 C- _- I4 b2 H# T/ \5 F
- R2 v& t# l9 q. J2 H; d, e
8 d. ?. @0 n2 X6 L( r" j( h( X; H# R& `) C8 H" B
|
|