/ \/ B( h/ d h% Z7 M〖课程介绍〗2 ?# c/ { z% H& K
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平4 K+ t7 e& g# j% Q
/ P, B/ P0 }6 P: Q5 g6 I0 i6 b3 c〖课程目录〗' `4 M g" }3 M- A) O2 |# B5 j
第1章 课程介绍【预备,初识】) ? E; d8 m: N: q7 k# ?
课程内容的整体介绍以及学习建议。( S1 q `" s9 w0 V' r
1-1 Go抽奖系统导学 试看, }6 K8 f V! N, z% X
4 N+ L' L. H( [. v* _% S7 [6 ~
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
! @, _9 b0 M5 y- _# W6 G7 \$ G看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...! o6 q0 n( [. r+ K& S
2-1 年会抽奖_实现分析+ p ^$ i4 e6 |8 W- l+ h
2-2 年会抽奖基本功能实现. a4 G% X- M* K4 c
2-3 编写web单元测试和并发安全问题; w8 Q, H( x2 a5 x/ P; `( l$ B
2-4 用互斥锁解决并发安全问题. X+ _3 S0 ]( @6 [# K7 t1 X
2-5 彩票_实现分析$ @2 R8 j. ?) V# T2 D4 `
2-6 刮刮乐和双色球 试看
' G# i1 K7 Y: K9 d$ z0 ~2-7 微信摇一摇_实现分析
. y* u- E# [( p4 e# N! C2-8 微信摇一摇实现(上)4 t- l6 M8 l( r& K' K6 P! D
2-9 微信摇一摇实现(下)7 G7 t* v9 a8 Q v5 V* z8 q2 X5 R
2-10 bug修复和压测. F, P! @- I# J# W' |
2-11 支付宝集福卡_实现分析
* F" D& N1 a* F- F2-12 支付宝集福卡实现
$ F/ B7 j$ w, a# ~2 S( A2-13 微博抢红包_实现分析
& w- b& T: i; B& v4 E3 W2-14 实现发红包
/ ]8 V+ U/ F- b' m- p& u5 @, M2-15 实现抢红包
: u+ `2 F; Z. Q0 Q$ m0 p2-16 均衡问题和sync.Map解决异常
2 Y+ H3 M+ H$ M/ ]$ ~4 g2-17 改用chan的方式解决并发安全问题3 C2 r A; o% k8 ^3 M# S
2-18 再次压测验证和优化改造
2 Y2 y4 C: m* o [2-19 抽奖大转盘_实现分析) m2 ^3 K2 Q) |9 f3 D- Z+ i
2-20 抽奖大转盘初步实现
/ H5 `3 p8 w$ f$ q) _2-21 sync.Mutex和atomic改造性能对比
% Q7 a; ?2 R" S$ w2-22 六种抽奖活动总结
' J/ M% L) o* y5 F4 `0 X5 M/ ^2-23 并发编程与锁的底层原理. m+ r( C2 H2 P2 B
2-24 高并发和高性能系统中锁的影响与解决办法* Q: _- b# Y: j& M! `' d5 U
2-25 阶段任务' M( K5 l3 A8 P/ f" f' Q
6 ~3 J3 ^6 R2 l _! K) h
第3章 系统设计和架构设计【扩胸运动,有容乃大】
5 {2 W1 S/ {2 K& v% F本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。! K2 q' R0 c5 X8 S4 w/ G, W& v; R
3-1 需求整理和提炼, N2 ]) a# x0 u
3-2 用户操作和业务流程4 P5 C/ \0 n! r! g. k3 s$ s
3-3 数据库设计
- u! E' R. [+ ^: t3-4 缓存设计 试看
0 a5 j4 j% A* A; d5 K- X3-5 系统架构设计
0 N, g& B/ Q; q) T) e3-6 系统设计和架构设计总结) t* z, G: j1 \: c2 W \3 j
3-7 高性能程序设计,缓存为王
4 `! L8 V x6 H0 N9 @1 _- w3-8 系统架构升级之道,关注关键服务依赖6 r& J0 L* j4 h4 O) v0 }3 W9 p
3-9 阶段任务
|8 y. `8 g" b( G$ z- d/ v
+ m# ?# {4 g8 v( G2 z% j j第4章 项目框架与核心代码【踢腿运动,固若磐石】
, O. C9 L+ g# R! _本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。$ ~6 m7 N2 ~3 `
4-1 项目框架搭建& N i% A5 Z }4 k3 I7 n0 J1 l
4-2 数据模型的生成
' e' X G9 p4 W4 A4-3 核心的dao和service类 S- K2 w+ d1 B5 D8 C$ p
4-4 定义dao( H) _0 f* w2 w8 B! M& L- s
4-5 定义service" n6 E. i3 n$ ^+ o; }7 O
4-6 定义数据库和redis配置信息7 E, A& E/ p. y: ^
4-7 创建数据库实例及其要点
4 X7 e$ s( T9 r# x0 J7 q4 n' ?/ k4-8 创建redis实例及其要点
" X1 z) w0 a, k0 Z. l4-9 利用iris建立web站点' B0 X& E8 `2 P) w" v
4-10 项目配置和通用方法
( N$ [& g' i9 P1 y& u) a3 |$ n4-11 web站点初始化构建
: y1 }# N8 l0 z' N; |; b4-12 实现IndexController
' [. B7 W. H; f, s4-13 完善路由和main.go文件
, r9 ~8 e# v5 ?$ z4 S9 U3 d4-14 登录和退出:安全值校验和防篡改
5 Z1 H& n# o* O6 F5 s4 S1 Z7 B/ [! Y- j; N
第5章 后台功能开发【体侧运动,运筹帷幄】
. P# g; k+ @" J/ B一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
! e2 }" V) j( f, i9 y+ i4 G% _; q5-1 后台功能开发介绍& I% }2 t! V, f! X
5-2 页面模板和AdminController6 v9 y4 a5 ~. [
5-3 奖品管理实现(上)
+ Q0 i" E6 B0 i! v3 C- U5-4 奖品管理实现(中)
! S& N) k$ C) j5-5 奖品管理实现(下)
! J# X4 \- Q) B* r, `5-6 优惠券管理实现(上)/ A% d/ N8 L# `$ b3 O3 R! O
5-7 优惠券管理实现(下)( }6 Z8 q4 u' `3 }5 s2 t
5-8 中奖记录管理
3 d% b5 x* _# H7 l5-9 用户管理
2 q7 P, I8 Z7 e" @5-10 IP黑名单管理2 Z9 L2 W" U& |& Y. F# C# |
* V" o. ^! g9 J: }) z- K
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】) C" z9 Q q$ ]. ^5 T; i n
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。+ b5 e, G+ `" H. P3 X U0 F
6-1 抽奖接口开发细节分析9 T5 H, H. Q4 R0 w) h
6-2 用户并发操作的锁
( L/ E; e8 ]0 q6-3 验证用户、IP今日参与次数(上)
- @1 p0 N1 @' \$ R; a6-4 验证用户、IP今日参与次数(下)) [0 |: F/ G ]; c5 d) Y
6-5 用户、IP黑名单的处理
* A. _1 W8 G% h% z8 {& \2 W( c8 R# r6-6 抽奖的实现
" K7 Q/ F* q, [/ U, j6-7 发奖的实现0 p3 L3 n8 p" Y2 n
6-8 中奖记录和返回结果$ @+ [; [2 D* ]0 c' m( V
5 y: k. r# z9 ?# H7 T
第7章 使用redis缓存优化【全身运动,升级版本】$ I* n8 P. C' q+ Z' d9 ^7 }
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。* m/ m2 l4 x- g
7-1 分析_奖品数据全量缓存
% `( P) Q, R7 E: P4 ~, W' e# s7-2 实现_奖品数据全量缓存(上)3 Q& O! v) @! V4 S ^9 N: p7 f
7-3 实现_奖品数据全量缓存(下)$ Y/ v) \3 B2 h1 u8 |; x6 q. o
7-4 分析_单个用户数据部分缓存
; j2 C& L. d. j1 n* I# Q4 T7-5 实现_单个用户数据部分缓存! c. m1 `1 R' x6 Q
7-6 分析_IP黑名单数据缓存/ E2 o1 t. o4 q
7-7 实现_IP黑名单数据缓存
6 r5 @7 D I O7-8 优化IP今日抽奖次数
% p/ ~9 P7 t3 R& e7-9 优化用户今日抽奖次数" K6 O3 c: {4 `" u f) U+ p( a
7-10 用户今日抽奖次数(上)* Q# Z% B4 @- y0 U D
7-11 用户今日抽奖次数(下)
- J$ g7 Y+ ?! c3 J( K8 x7 j8 f7-12 为什么使用奖品池
+ Q5 W# s4 w% x4 {& L) v: }4 m7-13 初步使用奖品池6 Q: l4 Y% p1 a* i
7-14 分析_优惠券的全量缓存# A) \; d* t7 r. U9 s
7-15 实现_优惠券的全量缓存(上)8 k2 V, z( t* Y) r
7-16 实现_优惠券的全量缓存(下)1 Z. U, k* R6 S, O, D2 Q4 a; U' _
7-17 使用redis优化总结8 [9 A% o/ C, v8 r& b0 U
" r9 O3 a# z/ ^% \* b5 o
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】& y& e o/ J P* O. L: L* h& ~2 \
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。$ b8 V r( a! t
8-1 发奖计划设计分析% v# X, V* o% j+ C' F& [. C
8-2 实现发奖计划(上)' i5 ]' Q3 R2 h2 V, M; r) Q$ u0 _
8-3 实现发奖计划(中)9 }0 [. P$ Y! g, I9 K; [
8-4 实现发奖计划(下)$ G1 s5 `* y8 G5 L! }; g" |& Y
8-5 自动填充奖品池分析6 N% u, \' \2 ]7 [7 @2 _* I
8-6 实现奖品池(上)0 b2 B: M0 ~+ D0 E0 j
8-7 实现奖品池(下)4 l3 P. w# a8 U$ L( b" Y
8-8 总结发奖计划和奖品池* V! M$ n5 Q/ D7 T8 [2 m! ^
2 H `9 _* d x/ r第9章 完整性演示以及更多总结【整理运动,整体交付】! ]8 g7 H- C. ]2 R
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...9 c( `6 K, f3 V5 a; e/ C/ _! W3 }2 t
9-1 前端大转盘分析3 n; P1 G6 [8 ]* d/ h
9-2 前端大转盘效果实现1 h* h" t- i% Q
9-3 优化奖品设置分析
4 u; i8 e/ Q6 M- }9-4 优化发放奖品分析
8 ?+ @% t- z+ x! k3 z1 k9-5 再来一次压力测试吧
/ r) g" ^/ V5 A& k; y) o9-6 压力测试' W9 K0 l, `& B( C6 G @2 I
9-7 更多运营策略
4 M8 X z. J, b' q/ {
8 V; a( k+ x4 b3 R6 L, V# e第10章 引入thrift框架【附加运动,扩展服务】$ `9 Y5 w" V- V3 _- L" w& G+ _
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。- L5 d5 e5 f* u" ~
10-1 了解thrift
( }1 S$ y; V9 y: f. T. ~ {* f10-2 定义thrift文件' g, \7 ]8 O& C5 v3 \% D
10-3 生成代码
1 D3 ], e( @+ t3 U) X; e$ H0 {10-4 服务端接口(上)! t; t2 a- Z! q( b8 F
10-5 服务端接口(中)
' B2 ~9 G1 u9 L3 f( A0 J10-6 服务端接口(下)
: k' d! Y' `6 T: O5 w; x* u2 f10-7 客户端接口, ^, D2 C* H7 [- n9 j
10-8 总结
, Z" Z$ Y2 ?% @/ U
! P$ J4 a- u. i5 \- @第11章 课程总结【结束,沉淀】
7 [* k+ i3 v* _( \# S3 u- j对课程进行总结0 C! G% T1 {( }
11-1 问题与思考
+ Q: f P' a {9 i* C. s11-2 课程总结. w$ }& v! z3 ?
, g. @' u4 |- F〖下载地址〗
; S% t5 c! a7 X2 M5 B I! @. L# L
3 b/ s0 [, N6 a/ z. e1 O& X
: X& n6 x; i( e! P( w, g
! J9 Y! e! n( i" A3 ?8 H% N# ^- k( \ |
|