9 C8 k- t: @' @) O4 S〖课程介绍〗) O1 e4 j: P2 [( s$ ], E+ t
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
) i% t/ ]% p( x I1 _5 k7 F. s1 b X% @* E2 K
〖课程目录〗
9 x- t) h0 Z) I0 ?/ U4 j第1章 课程介绍【预备,初识】, t( G* r' ?" V* o
课程内容的整体介绍以及学习建议。
) `0 k4 ~" t% u% o! ?) a1-1 Go抽奖系统导学 试看* d7 D. C5 m: m! }
4 Y& V% a) ^2 E9 ?+ |$ J第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】% U3 h; r% k: w% j
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
5 B3 u, T9 z! ^8 k7 s% ?2-1 年会抽奖_实现分析) w5 s, p) [: C; h$ e+ ^
2-2 年会抽奖基本功能实现
* X" n3 P8 p. x& n9 X2-3 编写web单元测试和并发安全问题1 ]% q7 q) D9 j \1 L
2-4 用互斥锁解决并发安全问题& k0 f2 D1 e/ i. D$ D
2-5 彩票_实现分析* @1 @ p5 x1 @9 S% ~
2-6 刮刮乐和双色球 试看7 _4 b* B) m3 E1 C: r% M, a
2-7 微信摇一摇_实现分析2 r- D# ^" P& V9 R4 D, u9 O& E
2-8 微信摇一摇实现(上)
+ U/ y) F2 S2 z0 T- g& R8 y2-9 微信摇一摇实现(下)9 \ O, f. ^. Y. ?
2-10 bug修复和压测 B3 K: @$ M& ]
2-11 支付宝集福卡_实现分析$ G0 \3 |: L7 [8 s% }, p
2-12 支付宝集福卡实现
9 s, f' s9 _) g O+ X2-13 微博抢红包_实现分析8 l1 a0 E" }/ E
2-14 实现发红包( z" F( l2 R _. O! O
2-15 实现抢红包5 q$ J+ F1 y4 m! z
2-16 均衡问题和sync.Map解决异常6 i. T5 e# {) m& I
2-17 改用chan的方式解决并发安全问题
1 d, ~1 x2 p/ J2-18 再次压测验证和优化改造' y9 J7 X4 W6 L" [+ d2 y3 _$ I: U4 H. N
2-19 抽奖大转盘_实现分析
1 a5 Z4 q7 B! L, p4 |- {% ?( M2-20 抽奖大转盘初步实现: C p( Y3 n) Z% c# _2 A% `" B3 u. o# g+ W
2-21 sync.Mutex和atomic改造性能对比; C L+ N, V$ V6 e
2-22 六种抽奖活动总结
2 p$ ^5 d5 A+ V h: u& i2-23 并发编程与锁的底层原理! K+ ~$ }" U3 O7 [0 o
2-24 高并发和高性能系统中锁的影响与解决办法+ V/ ] D: {- Y* J4 q$ N$ B
2-25 阶段任务) s* c$ [9 Y/ M
5 }$ P5 c+ d" a d4 Q
第3章 系统设计和架构设计【扩胸运动,有容乃大】
- G7 S. X6 V! g3 a本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。- f# J' W$ j4 h5 x: q' W8 c
3-1 需求整理和提炼& P+ x Q! S! v8 d# e0 z6 a2 d; H
3-2 用户操作和业务流程
- d2 p; \/ @* A' C7 y3-3 数据库设计8 Y z# U, D& q
3-4 缓存设计 试看
/ W, }+ }; l! p9 _" h3-5 系统架构设计5 @: k0 G, ^ L: m9 M
3-6 系统设计和架构设计总结% I0 I$ W+ T: P8 K3 C$ R( W
3-7 高性能程序设计,缓存为王
7 S& m/ G$ E: ?. B1 w& N! b3-8 系统架构升级之道,关注关键服务依赖
/ T* B6 z8 H, r+ K6 G3-9 阶段任务3 `8 }8 Y# J# b. e" s' v1 N
4 `' w# {- v% w. ^$ N$ U
第4章 项目框架与核心代码【踢腿运动,固若磐石】9 W' W% ^1 S" r1 T3 A$ x% M
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。& `* l F* O' H5 C7 ]* ?
4-1 项目框架搭建7 j. p m/ d7 q4 m) k
4-2 数据模型的生成0 G* _* o' @; E1 m9 W8 F" x1 f
4-3 核心的dao和service类
: I; C" u' s5 F; @, |4-4 定义dao, O+ M7 n5 d2 C! d4 i& i7 P9 v3 L$ u
4-5 定义service
% t* d+ |$ l3 I4-6 定义数据库和redis配置信息4 Q1 Q# n" N4 }2 Z# B
4-7 创建数据库实例及其要点9 J& ~" t6 \8 e( @0 R& L
4-8 创建redis实例及其要点' `7 i- j4 Q2 ?+ f! I1 f
4-9 利用iris建立web站点
6 d7 f9 O9 y/ m) O8 N4-10 项目配置和通用方法 c+ ~+ |0 \, j5 J4 q
4-11 web站点初始化构建
8 z* N# _( h6 ?% `9 Y2 b2 W4-12 实现IndexController
2 B4 E8 d+ H- {, N; G4-13 完善路由和main.go文件7 m/ C0 u" G0 U* d. K6 e: J2 x
4-14 登录和退出:安全值校验和防篡改
7 |( o& |5 Z1 D+ U- U/ Z9 i" p* a q) D$ ?6 P$ W }
第5章 后台功能开发【体侧运动,运筹帷幄】
6 |# ^3 j1 K w+ T! F0 [9 B一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。' u5 w4 n( y/ L0 r, H
5-1 后台功能开发介绍2 g3 [" U9 H1 }8 t2 c
5-2 页面模板和AdminController2 m9 `5 t' [9 ^' R" X2 V, _
5-3 奖品管理实现(上)3 g. T* z9 M- [. v$ T+ j9 Y
5-4 奖品管理实现(中)9 w& V/ ?4 S! W2 s/ [( C0 p9 N. s
5-5 奖品管理实现(下)8 v7 b3 f: I" w& W6 y$ l/ J
5-6 优惠券管理实现(上)
1 d4 [3 B! c) Y" |* L0 H5-7 优惠券管理实现(下)' T+ i4 p: D ?. P
5-8 中奖记录管理 z2 b4 v% D3 ~# _& `+ |& ~
5-9 用户管理1 o1 C: @9 h1 r% k
5-10 IP黑名单管理
' A; s8 e- R8 R) }# K8 G1 N
* n& B* y, ]! `' P* o第6章 基于mysql的抽奖功能开发【体转运动,基础版本】2 a! M& z% Z& Z. r' A# S" s2 y. A' Y
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。* e1 |- _4 b; Z2 V
6-1 抽奖接口开发细节分析
% U+ x4 D* ^/ ^( A6-2 用户并发操作的锁" f r8 {$ G* K3 C3 o- w
6-3 验证用户、IP今日参与次数(上)1 E! C& h% i3 L5 j3 N) x# B4 b
6-4 验证用户、IP今日参与次数(下)
( V8 o$ f6 u9 s, e: K6 ?" b6-5 用户、IP黑名单的处理0 g% s2 u/ |# r5 B0 f7 G( p
6-6 抽奖的实现
: z1 b3 _7 B, _( T( ~3 F4 Z3 M. t' h6-7 发奖的实现
+ m6 ~0 J* h8 w* C6-8 中奖记录和返回结果) d! v0 ^4 x0 `: w# `
) |1 V( F8 X3 H5 H4 _% Q+ F
第7章 使用redis缓存优化【全身运动,升级版本】
8 H7 M7 p. R) x/ h! L- [本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
8 r5 p6 |' V; P5 c5 I6 c- L! T6 @7-1 分析_奖品数据全量缓存
& ^7 b2 d' `- |7-2 实现_奖品数据全量缓存(上)( W& D! Y+ c: y+ ]$ d) Q
7-3 实现_奖品数据全量缓存(下)4 v( j# s& t6 y; N2 r- x. n
7-4 分析_单个用户数据部分缓存
7 J) T! ?: _. f/ {7-5 实现_单个用户数据部分缓存/ [1 K( S$ }: n7 x% u" y- H3 r
7-6 分析_IP黑名单数据缓存5 ]% F3 g* j- P" [; h
7-7 实现_IP黑名单数据缓存( y8 h& p% T) R: M& q6 t# C0 m7 k
7-8 优化IP今日抽奖次数
3 [4 q5 {. X6 \$ _& t- V7-9 优化用户今日抽奖次数' Y: `5 w5 O2 G& W w' n6 X2 t
7-10 用户今日抽奖次数(上)5 ~. }9 ]! G' p# n
7-11 用户今日抽奖次数(下)6 \4 [* z) K, F1 w9 X0 ^
7-12 为什么使用奖品池
' u* v Y3 ]' f/ F$ L+ [; c. j& i8 b7-13 初步使用奖品池2 A, r: E7 U Z4 L; X
7-14 分析_优惠券的全量缓存1 ~' s4 K( Q. i8 ~! |) R" R
7-15 实现_优惠券的全量缓存(上)
/ R3 s9 R, J3 _7 ]! m E7 t8 |4 q7-16 实现_优惠券的全量缓存(下)% t( p5 E9 A6 R& j4 m4 b, w
7-17 使用redis优化总结
* S* L( c% f/ `5 o' }- N$ F
u- n& Q6 c: x9 c x" f9 j第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
+ k U- S0 @1 C9 Y+ t0 i! l1 N1 c本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。0 x: _: J/ O. `8 o7 U Y
8-1 发奖计划设计分析* ~6 \- V6 q( r
8-2 实现发奖计划(上)$ p' ^$ L+ }( C7 I* F3 I
8-3 实现发奖计划(中)
+ C1 F) B+ L) Z& S9 t8-4 实现发奖计划(下)
- K, y* d: D- V+ Z$ J8-5 自动填充奖品池分析+ R: @+ m' I% G4 U2 a0 V$ f
8-6 实现奖品池(上)
% V! R6 I3 \8 P4 R1 B) K, z8-7 实现奖品池(下)
2 o+ D8 t7 z$ Z5 `( s) _) d8-8 总结发奖计划和奖品池$ k4 ?6 C% R+ }6 @, }$ e8 `/ \1 S
% |4 {5 j) V5 b! R; B: ^
第9章 完整性演示以及更多总结【整理运动,整体交付】
) ?1 H( ~3 t/ L" {( K1 G实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...9 a _4 D2 t1 S; i/ G- v A6 f9 V
9-1 前端大转盘分析; X# P7 I# {4 S+ I
9-2 前端大转盘效果实现
# m4 U8 D! h( b9 {9-3 优化奖品设置分析2 @: y, Y5 |: v! D8 P" V; p2 s2 E
9-4 优化发放奖品分析
! L9 y/ P( ]2 g$ Z9-5 再来一次压力测试吧
9 j) X+ u$ e$ a) V6 ]( A+ P' y! L9-6 压力测试
% D q7 d: |3 x, G3 c. \9-7 更多运营策略
& ]2 {$ D- s# q
( f5 a# J! @& v: a/ T: b第10章 引入thrift框架【附加运动,扩展服务】 y8 |' }. D w, A. t
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。; F& ?( t, x" t
10-1 了解thrift
( X3 V I8 ]' J0 u: ]- s; Z10-2 定义thrift文件
0 n' b" i1 S3 M" |10-3 生成代码+ F* Q* l, k* M$ i6 A8 A
10-4 服务端接口(上)
( }2 z; l) Y' J/ y w" m6 ]10-5 服务端接口(中); V, r4 {2 c$ D% n% r
10-6 服务端接口(下)
7 W. _* V7 R1 o* u7 a. Y10-7 客户端接口
# ]3 [' W5 S: z/ N( }2 t8 U10-8 总结
$ N# M# h, C0 B* U9 O( A; r6 y9 q C9 j! W8 o5 s4 i. Z
第11章 课程总结【结束,沉淀】
& \- o) x, V U8 Y# x& R对课程进行总结+ J$ q1 R- n* ?/ E
11-1 问题与思考1 I6 }( O9 W' i" T, A( F' o" U
11-2 课程总结
# y2 P5 Y" S+ W G& T7 { w% C& a# H: y$ \7 i
〖下载地址〗
7 Q. i1 w* e: U- N1 @
$ V: r$ v4 E% e$ }- i7 [
$ H" _: J4 Q+ v+ N! A# G9 E. M% w
$ c v1 {! e( {, E( R* @ |
|