; ?) @. V, d2 L- H {0 \
〖课程介绍〗
. e/ v/ t/ x' g0 ^抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
* H b7 l1 c7 V) p
+ ~* U- F& |3 M1 x; P" d$ b0 u〖课程目录〗
' Q) N) x8 t; C0 y: C0 Q& }* @8 {% B# ?第1章 课程介绍【预备,初识】
- ^3 x0 l2 p' I+ U8 X课程内容的整体介绍以及学习建议。
6 i$ b, ^! C5 i, j/ g$ W, o* v, I+ N: d1-1 Go抽奖系统导学 试看
( F$ n. o B6 d0 h9 c e: K5 U$ `8 ^6 {
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】% m) ^5 q* ~' K3 Y4 f1 o' X+ `
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
, Y* s2 Q& M, J1 \* k3 E: L2-1 年会抽奖_实现分析
7 Q, t" S5 e' D( n" {: ?2-2 年会抽奖基本功能实现+ z( [2 s8 c7 N/ L
2-3 编写web单元测试和并发安全问题/ ?/ f$ Z t8 t$ G5 }1 j f
2-4 用互斥锁解决并发安全问题
( n" e& @, k; \9 @2 x7 i2-5 彩票_实现分析7 @6 C4 {7 n: V9 H- e
2-6 刮刮乐和双色球 试看
9 S- N7 y0 G ^/ L% \, x2-7 微信摇一摇_实现分析
6 C2 U, L4 O; c- ?2-8 微信摇一摇实现(上)
, J, |* I. ~, f" e. S+ ^2-9 微信摇一摇实现(下)
4 ]0 T9 A1 N" v0 o2-10 bug修复和压测
4 R. D% l: r' U0 ~$ a8 C& z2-11 支付宝集福卡_实现分析
2 ~' F& M( X5 a ~$ E6 L+ D6 z2-12 支付宝集福卡实现
2 g& N# N5 g$ O' c# z3 y2-13 微博抢红包_实现分析
5 l" C% }. A4 ~" \* _6 j2-14 实现发红包: P: a. W3 U- N) ?; } i% @& l
2-15 实现抢红包
- ^& P! ]9 k! x( s2-16 均衡问题和sync.Map解决异常! a: P7 B9 w- ]( A( Z! g
2-17 改用chan的方式解决并发安全问题! c8 j3 @$ ~* M+ T- \8 I7 B; p
2-18 再次压测验证和优化改造
$ m* i! {7 D0 z* V3 v5 x" t/ [% D8 t2-19 抽奖大转盘_实现分析3 \/ P) r) L) s. p( s
2-20 抽奖大转盘初步实现
: b$ |3 R. h) x, K+ y, v2-21 sync.Mutex和atomic改造性能对比
; G% `- G4 u5 ?4 x" t5 c# ?7 g$ R2-22 六种抽奖活动总结
, A/ F O7 G& r0 R# X( C2-23 并发编程与锁的底层原理
& @& t" E! \1 B$ ^2-24 高并发和高性能系统中锁的影响与解决办法5 f' r0 M7 q' \3 F
2-25 阶段任务
' |' Z0 e6 n) P& Q- w5 W- ~ s
; I( e' W0 K; n4 ]7 x第3章 系统设计和架构设计【扩胸运动,有容乃大】( o6 Q9 d/ }( G, M4 T* {2 P9 }( Y
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。1 l, c- }3 ?. I+ I& T
3-1 需求整理和提炼
6 S O; F; t( S' i" N3-2 用户操作和业务流程
1 ?; l0 }5 a3 e( o# Y9 p1 d; {$ y3-3 数据库设计+ W5 M9 ?* _& M1 I( O0 R, Q
3-4 缓存设计 试看
3 m' O, n( t& `6 a) f3-5 系统架构设计
) d6 U: d" ~: z. o5 g3-6 系统设计和架构设计总结
( S3 i% z ~. k& j* B3-7 高性能程序设计,缓存为王
" i" o; I p: @( B% T3-8 系统架构升级之道,关注关键服务依赖/ r/ M8 w2 ]. S. R5 H2 x
3-9 阶段任务+ x2 _; x) T& f6 {4 t8 E
/ d; | D- O. e
第4章 项目框架与核心代码【踢腿运动,固若磐石】
5 `: F# A; U# u5 G+ U本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。3 j, u& W) I5 s& B
4-1 项目框架搭建, O" H2 u7 h* K& }
4-2 数据模型的生成0 N: {5 Z: e: \1 o+ R3 z7 E9 O
4-3 核心的dao和service类 D9 K: Q, q: h# V' K ]5 ~- Y
4-4 定义dao& L# E' @2 W5 a; f6 a
4-5 定义service5 i4 a# x; ^6 T6 K, Q; t6 k
4-6 定义数据库和redis配置信息
W. H0 e' M" T& Z5 l4-7 创建数据库实例及其要点
$ q2 W+ O4 {. Q) q# ]4-8 创建redis实例及其要点7 e H1 E# [3 H+ X* f/ ?
4-9 利用iris建立web站点
- f, {( j M+ z6 _9 ^+ C. M4-10 项目配置和通用方法# z8 S& M0 z6 t. h+ [6 p0 F- {# p
4-11 web站点初始化构建
' W9 I8 j j7 E( l( O4-12 实现IndexController: o7 p# [. |3 p6 x# m# i! z" v! u" p. E
4-13 完善路由和main.go文件6 p! b5 a/ K3 |7 T8 J$ [( G) u
4-14 登录和退出:安全值校验和防篡改
* m, s8 ], i9 t# ^& J% N4 i% s- E# _1 {" r2 W% f
第5章 后台功能开发【体侧运动,运筹帷幄】% f/ c- S7 N, V) R" ]
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
' n+ S. y8 \! R5-1 后台功能开发介绍
! O8 _& _1 ?1 G5-2 页面模板和AdminController
6 O3 H, ]1 Q7 c" a( J5-3 奖品管理实现(上)* I7 n; @* ?6 y; S" d
5-4 奖品管理实现(中)
. o B5 B/ [3 U" M5-5 奖品管理实现(下). R& L* V; K: e+ e1 E; a& Z
5-6 优惠券管理实现(上): O7 `) q. C% }+ M% T- m" R$ g
5-7 优惠券管理实现(下)
/ `% t' |* p/ i G/ Y5-8 中奖记录管理) w5 y$ v7 A$ t: b8 @$ W
5-9 用户管理& ?7 b- J: v% P+ T: j
5-10 IP黑名单管理
5 u F- A! Q9 s* j3 [
, D6 X% O' q! B( R# {' _7 y第6章 基于mysql的抽奖功能开发【体转运动,基础版本】$ f: Q. O& k6 {+ o- r& s
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。; Y6 }8 A' _( r7 m6 W5 J
6-1 抽奖接口开发细节分析+ P7 A; h: g. j
6-2 用户并发操作的锁
$ s9 |# @9 @7 L) J6-3 验证用户、IP今日参与次数(上)
( X4 M" u+ v) W; s9 n6-4 验证用户、IP今日参与次数(下)
* |6 B+ h/ [2 T$ h6-5 用户、IP黑名单的处理
) P1 x. H* A) R5 ]6-6 抽奖的实现
3 s- ]' q0 {# U0 C, U6-7 发奖的实现
8 C4 e3 }, r( S$ T6-8 中奖记录和返回结果4 d' f+ F( a D% \
: |2 u9 ?6 M( o7 v% ~$ p: b/ s第7章 使用redis缓存优化【全身运动,升级版本】
, o2 p% f. `9 z. f& y' G8 b本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。7 {* x7 }* T9 v: x, E5 s
7-1 分析_奖品数据全量缓存
/ C; L1 r1 d+ H/ r4 i* G; o- T$ e7-2 实现_奖品数据全量缓存(上)
/ m! i; `. C# k9 i7-3 实现_奖品数据全量缓存(下)" x9 u9 Q {& M0 {, B7 p0 a, F
7-4 分析_单个用户数据部分缓存3 }# ?( G# }5 i4 f) r, C$ R
7-5 实现_单个用户数据部分缓存
* ~3 H/ s3 [) p f4 }$ C% \7-6 分析_IP黑名单数据缓存% k3 u; h$ `$ [& ]( X7 x
7-7 实现_IP黑名单数据缓存- k( @5 S" ?; V8 K
7-8 优化IP今日抽奖次数- C% c3 w# \3 B5 A% `
7-9 优化用户今日抽奖次数
$ c/ U4 F2 A1 M: Z" Y0 I7-10 用户今日抽奖次数(上)
: r7 \' F1 z# s3 q: q/ Y5 h0 r7-11 用户今日抽奖次数(下)
' t, i( s" D' k/ \# p/ R& |) U7-12 为什么使用奖品池
3 P7 j6 i/ z/ N8 l+ S( z: Z, S7-13 初步使用奖品池
% ^+ t; p6 k# T+ M- |* I( y7-14 分析_优惠券的全量缓存
% y" ~: c. j( F$ m2 Y# y7-15 实现_优惠券的全量缓存(上)
3 L, x9 p5 o) @; N8 o C7-16 实现_优惠券的全量缓存(下)
5 N0 d Z. Y" j# N" x7-17 使用redis优化总结
: q, c. U- \ c/ {& }, S* e8 j1 Q+ O- X& g7 J
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
& v! |- N( Q9 q! ]3 Q本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。0 X& Y- K5 e: K
8-1 发奖计划设计分析
' O: O" e* e4 U7 {1 f/ e; I* [8-2 实现发奖计划(上)
2 q( Z6 C G) z. \6 D/ n: M1 }8-3 实现发奖计划(中)2 |( G0 ? E* z) F1 C; j8 W& f
8-4 实现发奖计划(下)
6 P. @ K' m$ n$ n% X8-5 自动填充奖品池分析
3 \9 B! m+ N+ x* c8-6 实现奖品池(上)
) j8 _( ]3 T, s" L) H6 s8 B8-7 实现奖品池(下)
6 |" E2 }' d" Y& @5 D& }' b& d' ]8-8 总结发奖计划和奖品池1 u( G x. c ~7 n6 B* Z. {6 h
6 l- N& h4 D X9 e9 }) G8 w- v1 F
第9章 完整性演示以及更多总结【整理运动,整体交付】) l" @1 t4 N0 g; ^0 h
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
5 \5 P" A- u# Z" n9-1 前端大转盘分析' V7 T' j6 q* C
9-2 前端大转盘效果实现7 `9 |4 \# h6 Y/ P& F
9-3 优化奖品设置分析' v6 ~) v5 U0 n7 j/ y. h) s
9-4 优化发放奖品分析6 Z+ y! U/ X/ q6 ?& Q8 i
9-5 再来一次压力测试吧
0 B/ ~% J9 C" C) r; O! U9-6 压力测试( W% b" o: ~, L& v7 Q% C2 g# p
9-7 更多运营策略7 E- }- k4 x; x) d1 } Z# Y
+ {# P5 E" G& l6 v/ G第10章 引入thrift框架【附加运动,扩展服务】
! I3 d- N$ k. S) B- \通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。5 Y' F+ v6 R3 a2 |
10-1 了解thrift, i9 v" b% \5 @% o& R) D e
10-2 定义thrift文件
1 k. }% `& ^! ~ B( Z! w7 d. u+ e. V10-3 生成代码( h% _/ {2 u! d" X4 E2 O& y2 v
10-4 服务端接口(上)
* v4 v. b9 c8 s, b7 C10-5 服务端接口(中)
1 x: ?7 G# C( q; _10-6 服务端接口(下)% K: ~* Z' F% {' I
10-7 客户端接口
3 u0 D0 t6 M( l- j# u# k, r% c10-8 总结4 ^3 ~2 _4 @. X
/ h3 Z* i# K2 h. c第11章 课程总结【结束,沉淀】
( n/ U- B4 }* S3 J- C) v% O6 V对课程进行总结
/ w8 p3 x4 ?% R* ~; r9 E11-1 问题与思考' }5 ~, l8 \1 `& l5 z8 z( k# o
11-2 课程总结
& E6 M, _8 X" y% m2 Z& Z4 A+ v* z" r& V0 {: i3 h- U$ c+ o7 y* K
〖下载地址〗/ u8 f5 r4 B" s- t0 q4 p0 e! [; x9 q
2 I& \" W- w$ |; ]# W- N7 x L$ Y) j8 N- A: y2 z8 q
: J4 Y+ `7 H; P. m1 h |
|