Go语言实战抽奖系统(完整版)-2018年

  [复制链接]
查看20913 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
& N3 f$ f. b  u. Y〖课程介绍〗, ?: p( D$ Y; C
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平: k. r% v7 p( X% j9 z

$ a' \9 G. O& A0 P6 i〖课程目录〗
# \) M- E$ S+ q& v% F第1章 课程介绍【预备,初识】- t% z: I0 @3 B% e' x" w& W
课程内容的整体介绍以及学习建议。
( L4 ]. k0 c4 j3 b1 H0 e( E! f! n+ F0 v1-1 Go抽奖系统导学 试看
5 c( T: d/ y5 n# p1 b6 ^
$ I" H  k' M2 M! a" z* _第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】% K" \9 s9 Z! m% y- ^( f# e& @6 H9 H# y
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
& T$ H9 S5 W. r& Q2-1 年会抽奖_实现分析
1 {9 X$ j! J+ Y+ a, Z2-2 年会抽奖基本功能实现
3 \: n* R6 |. _) D5 R6 ^2-3 编写web单元测试和并发安全问题
. D( L1 L- ^- H  ]; m+ }- u2-4 用互斥锁解决并发安全问题
% y- Y9 Q* |  y! |2-5 彩票_实现分析
0 u" B2 o( [2 c/ h) i2-6 刮刮乐和双色球 试看: F7 p" ^2 n% Y1 e5 x
2-7 微信摇一摇_实现分析
! Y8 {3 j2 p  {% u, C2-8 微信摇一摇实现(上)1 I- @! k; l% m1 p8 Y2 A$ k* F
2-9 微信摇一摇实现(下)2 }3 A; @0 R; u: G
2-10 bug修复和压测/ g  N  [% _1 N, s2 }) J/ G/ z
2-11 支付宝集福卡_实现分析
/ a! [/ V" G, g# `7 `9 h" }0 b9 \' E2-12 支付宝集福卡实现& ~# q! f  \2 q
2-13 微博抢红包_实现分析
) n7 c2 U1 V0 j: |# l4 K" h2-14 实现发红包
" D7 i; ]6 g2 u; ~+ q8 V1 X2-15 实现抢红包
" L1 t' M: l9 E2-16 均衡问题和sync.Map解决异常% o6 g* _% [+ Z! d
2-17 改用chan的方式解决并发安全问题0 S5 b& {2 L: s; N5 u
2-18 再次压测验证和优化改造% q& `) C: ?5 m0 I' s/ Z
2-19 抽奖大转盘_实现分析8 m) [& y, G) c7 `. C- [
2-20 抽奖大转盘初步实现) s+ w' Y4 c% d  [+ ]- W* c
2-21 sync.Mutex和atomic改造性能对比
1 J2 Z+ Z* P/ l2-22 六种抽奖活动总结3 Q' E, D6 n/ Z. d; w4 B' p+ O
2-23 并发编程与锁的底层原理
( b. E( j: z( ~' i7 ]2 G2-24 高并发和高性能系统中锁的影响与解决办法
9 b. [: V! |) `* @3 j2-25 阶段任务
! x# M4 z. _! F$ ^! m8 b8 r. A2 X
- ~/ M0 ~2 Z/ p. ^: |第3章 系统设计和架构设计【扩胸运动,有容乃大】
" r5 U6 r( [. y# x8 o2 V0 m) B本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。4 d: t, w/ Y7 Y, E6 }
3-1 需求整理和提炼
* U! I) h: G' p) v4 ?; O3-2 用户操作和业务流程# z* n5 ~6 W( S
3-3 数据库设计- C: o. g% B" H! y( C) e) R3 E
3-4 缓存设计 试看" u+ Z$ i, z' ~) ~* b! W
3-5 系统架构设计4 ~4 W; U# M' w) ^4 y
3-6 系统设计和架构设计总结7 [! n( |: N; M9 ~$ M8 K
3-7 高性能程序设计,缓存为王
* e$ F. m% t  D& F+ N9 i1 \1 j( B/ X3-8 系统架构升级之道,关注关键服务依赖
6 q% t: v+ g& ]1 |4 [+ F! i) T3-9 阶段任务5 v6 C1 p! o$ r* U; o4 z' k
0 C- F  d! [. X6 I, r) g, c+ K8 X
第4章 项目框架与核心代码【踢腿运动,固若磐石】. L7 B+ y$ E2 m/ ~+ s  a
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。8 x& x! B! x1 _+ _2 F4 f5 H5 E% G% P, E
4-1 项目框架搭建
7 C' G8 G- Q7 t& [$ d; B4-2 数据模型的生成
( k- O$ J  W; _7 ^& _# h5 L4-3 核心的dao和service类. W/ n1 [$ U! g8 Q; N4 M2 e3 C
4-4 定义dao
9 C+ a+ A* v4 Y* p. ]4-5 定义service' X8 h+ C4 H2 m
4-6 定义数据库和redis配置信息/ E% Q) ?$ Q$ x: ~! z& w" O1 s
4-7 创建数据库实例及其要点
0 z8 f; v# I; H1 L4-8 创建redis实例及其要点
& x5 x3 ?. T6 E4-9 利用iris建立web站点3 G4 s6 a, {/ i: i  d4 L0 [
4-10 项目配置和通用方法% m& F( B7 P2 g1 H
4-11 web站点初始化构建8 {: E2 B6 ?2 p! W1 I* m4 e' n
4-12 实现IndexController
# l. j& z+ N4 t3 u# e/ X4-13 完善路由和main.go文件, a% Y2 c& F6 d! y4 h: O
4-14 登录和退出:安全值校验和防篡改
6 E. J' K* K& V$ a1 l: O2 o( P+ i* @# [& p
第5章 后台功能开发【体侧运动,运筹帷幄】
% U; W) Z# t) V一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
9 H8 S: ~. X9 K5-1 后台功能开发介绍6 c( B9 K+ I. n5 g; H: \# z
5-2 页面模板和AdminController  K! p( }: y0 C9 N& M& I
5-3 奖品管理实现(上)9 y- i3 E1 q. ]( P7 d7 T
5-4 奖品管理实现(中)& l" f0 d5 r# u: r3 i. l
5-5 奖品管理实现(下)$ }4 y+ Z: r% r$ d
5-6 优惠券管理实现(上)
) y- @5 i# s# E2 z! i5-7 优惠券管理实现(下)
7 n' x  d3 X+ _& H( d* z7 ?5-8 中奖记录管理
/ H( m# K; q$ M1 K* O5-9 用户管理# }! K% a  B6 W+ V* ]
5-10 IP黑名单管理9 S' u. a% X& u4 v

0 z0 y2 q( R) ^, P/ A5 w# N$ x第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
0 I" x- [9 Z' B& ]: y6 o4 Z本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
8 i2 T4 H. P, }& B% z% W6-1 抽奖接口开发细节分析
; A- q. k) l9 @4 w6-2 用户并发操作的锁
# ~9 ]/ z6 P" M  B0 |) C6-3 验证用户、IP今日参与次数(上)* {1 b; i1 P; a
6-4 验证用户、IP今日参与次数(下)
) h/ U& \1 v0 `6 g, G7 Z6-5 用户、IP黑名单的处理
. G' b! O7 `% Z5 l6-6 抽奖的实现4 k& ]) P5 p. Q; g6 `2 s) R" \
6-7 发奖的实现
4 Z3 i! H' I, H; U- o$ r& n6-8 中奖记录和返回结果
2 A9 f0 s& d; [: t+ T
1 F/ V4 r4 l4 ^0 n第7章 使用redis缓存优化【全身运动,升级版本】
' `; S" I, `4 l2 c7 E本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
- a8 w% }5 [- k" f. O7-1 分析_奖品数据全量缓存2 x4 T8 R3 I, }$ _9 T
7-2 实现_奖品数据全量缓存(上)$ H0 c) Q0 p0 N/ v
7-3 实现_奖品数据全量缓存(下)3 C6 {2 {4 t: x* }- v0 p0 H; @# ^% b6 S
7-4 分析_单个用户数据部分缓存
( m7 c/ j: K/ C) w3 k* C7-5 实现_单个用户数据部分缓存
; q  ?9 o, q8 `, K* f* c# u7-6 分析_IP黑名单数据缓存' U  y0 j7 y6 m- G) x' I! W
7-7 实现_IP黑名单数据缓存! R1 v& y8 U5 M0 \7 F* i
7-8 优化IP今日抽奖次数
% v, u% J1 d6 a$ w' i& `0 Z* n# E2 t7-9 优化用户今日抽奖次数
* [- F4 ^/ V& U9 X3 h7-10 用户今日抽奖次数(上)
8 b3 E8 o+ `3 ?7 ?7-11 用户今日抽奖次数(下)
3 U; h) c: O  O7-12 为什么使用奖品池
: V) H: ?: i/ S1 c- x! V* x4 ~7-13 初步使用奖品池3 H0 P  P/ C8 d* _
7-14 分析_优惠券的全量缓存1 h* d$ K; E( F
7-15 实现_优惠券的全量缓存(上), ]+ P1 `0 x* E8 y, N3 k3 c7 h% x7 Y
7-16 实现_优惠券的全量缓存(下)
  h2 ]1 w( C2 P) h9 ]/ z/ k7-17 使用redis优化总结4 g6 {, A, n. \+ u7 _' T

: J* g* Q" x* c" T第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】8 k3 ~; \7 O5 ]. }
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。% Q2 {, ?- S; o' f0 u1 T$ L5 f# W
8-1 发奖计划设计分析
# r7 ?, S/ G4 D5 U9 \: T7 {7 R8-2 实现发奖计划(上)0 h6 ]& F7 R9 e9 F5 q6 F1 V' o1 V" Q
8-3 实现发奖计划(中)
* R2 I$ ^4 @) E& y# q8-4 实现发奖计划(下)
! F! K1 q& B4 x5 W7 F' J8-5 自动填充奖品池分析
# r! P: ?9 Y# D; g- u8-6 实现奖品池(上)
+ T0 l# D* z" u8 O6 Q8 j8-7 实现奖品池(下)0 C: `. X+ |/ Y  \: S8 r
8-8 总结发奖计划和奖品池* }" E% M" r; V

) }( y5 e3 n  c, b" N0 w第9章 完整性演示以及更多总结【整理运动,整体交付】
+ {! K( t1 q2 a实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
+ ^. D4 w8 k, g- w6 a; ^, G9-1 前端大转盘分析/ M4 L% D4 O9 h9 c3 y9 I
9-2 前端大转盘效果实现- C% ?% N: q  g" M6 V0 n
9-3 优化奖品设置分析/ E8 d0 L" i# U" |
9-4 优化发放奖品分析
, f+ D$ s- n: @1 l9-5 再来一次压力测试吧$ O/ U( ^+ E+ ~1 n8 |/ u( E
9-6 压力测试
' e" f" N2 q) m9-7 更多运营策略$ i6 u3 q+ E0 g2 [5 w# B

, a, F- x# t5 k$ l, n' l第10章 引入thrift框架【附加运动,扩展服务】
& D1 ~" K  D& R4 |3 \+ Z4 A( u通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。$ O+ i: ~7 A6 l- g$ K' I
10-1 了解thrift' `9 B- z% J- @. F- q5 @
10-2 定义thrift文件
4 G$ ~. T3 Q, F10-3 生成代码* f+ T3 N* \7 D, l! [% `( ~+ ?. k' K( p
10-4 服务端接口(上)
6 d7 E) k- a# y" e) d% V6 x10-5 服务端接口(中)' X8 ?3 @$ D# \" Q! @# z
10-6 服务端接口(下)
+ V/ |8 q: ^( A10-7 客户端接口
* G# N' c! l: _) y10-8 总结# w( Q( Q' F' R; [7 H( Y$ z* U
- n3 s8 Z, A: [" {7 t
第11章 课程总结【结束,沉淀】
  r1 L0 r( G2 C7 _- p对课程进行总结
0 c; [& I0 o$ n. Z11-1 问题与思考! g) G* ]! L3 `
11-2 课程总结
' w2 P3 n" y1 p+ {( K: r6 M
/ f/ I  D" u5 A. \! M% P! u〖下载地址〗+ V  d) g: Y$ k* L7 {
游客,如果您要查看本帖隐藏内容请回复

) d& O% V& `! V, V/ \, ?' b
, w* x. J3 b% g0 T6 ^, I: ?6 X8 {/ b) v9 ]4 h
回复

使用道具 举报

admin123 | 2019-6-27 09:21:59 | 显示全部楼层
gogogogogo
回复

使用道具 举报

junjun2712 | 2019-6-28 19:19:34 | 显示全部楼层
hao dong xi !!!!!
回复

使用道具 举报

test20190703 | 2019-7-3 09:35:54 | 显示全部楼层
回复

使用道具 举报

萌码象 | 2019-7-3 10:19:29 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

pehut | 2019-7-5 01:33:50 | 显示全部楼层
你这个是可以在线看的吗
回复

使用道具 举报

6523440@qq.com | 2019-7-5 10:34:38 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

fengzi | 2019-7-6 00:04:31 | 显示全部楼层
pehut 发表于 2019-7-5 01:33
9 b* e; |8 U* ~! ]  }5 y你这个是可以在线看的吗

1 X; L) I8 \6 n7 O; {# ~可以的: U7 v9 ]4 p+ q" P; W$ C& m
回复

使用道具 举报

guoke0826 | 2019-7-12 12:30:07 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

xxz | 2019-7-13 08:30:27 来自手机 | 显示全部楼层
支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则