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

  [复制链接]
查看22561 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
! K: X8 h; s) f3 b( V4 M〖课程介绍〗
, l! q& Q: p' K: a2 }抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平+ m: O! s. _( {' d9 a
% S9 t: V% h8 J' j1 m1 {* i
〖课程目录〗
* q* J% u. U8 f. V+ W' w- i第1章 课程介绍【预备,初识】
: n- D: x5 s/ S/ f% P4 F3 N课程内容的整体介绍以及学习建议。
4 k- z1 P. }1 i/ G/ f% ?6 |1-1 Go抽奖系统导学 试看
2 V0 a: R/ W8 I/ P8 @' ]7 p1 W5 p. A1 Z, [/ [) U
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】( Y( H: b, S" K" `7 w9 k: [: t
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
6 V& u& X7 A% e2 ~' ]2-1 年会抽奖_实现分析
8 m: X. U8 D* b; H) a; o2-2 年会抽奖基本功能实现
9 F8 I6 f& j) o3 K. {$ e2-3 编写web单元测试和并发安全问题
+ b& e$ B5 Z2 M: c) a/ [" G2-4 用互斥锁解决并发安全问题! C% e9 r  S6 a" q* f
2-5 彩票_实现分析
, M. H( x6 O$ B8 l2-6 刮刮乐和双色球 试看
9 U  _1 z" w! q  v1 I2-7 微信摇一摇_实现分析
% ~7 R8 o9 k  b$ E4 p4 ^+ }9 z% ^2-8 微信摇一摇实现(上)4 J+ h( w/ S5 C% e  n  E5 n
2-9 微信摇一摇实现(下)8 r0 Q2 H0 ~) Z* m! y
2-10 bug修复和压测  q% L2 q' \. a+ Z4 D) b( ?
2-11 支付宝集福卡_实现分析
. i4 p$ t6 P, a2-12 支付宝集福卡实现
* u0 Y- N. E: z7 c* O2-13 微博抢红包_实现分析
1 G4 M* Y) u3 l" j; W  D2-14 实现发红包$ n- }6 Q) i, h# B( d
2-15 实现抢红包
4 ?9 [# x% h7 t, K+ L9 N2-16 均衡问题和sync.Map解决异常, g" W8 f+ ^4 o( h
2-17 改用chan的方式解决并发安全问题
/ ~, a. ]( `9 t' j9 H2-18 再次压测验证和优化改造) W& w! O. U- `# s" v$ v$ c8 D7 X% h% U
2-19 抽奖大转盘_实现分析% \0 A7 E5 o3 U& q1 C
2-20 抽奖大转盘初步实现
- d6 a" ]' ]: ]1 P; D$ `0 o2-21 sync.Mutex和atomic改造性能对比
3 {$ S1 |0 R* x+ t2-22 六种抽奖活动总结) G# {' H; [  [( w  e. h. p
2-23 并发编程与锁的底层原理# A- e% K9 g" S0 q3 F" O  ?
2-24 高并发和高性能系统中锁的影响与解决办法
) k: m3 f- m) q, Z$ x' q& x2-25 阶段任务, D( @% j6 v! ]( L
( x: I7 ^5 p6 }6 J5 b. d2 x/ _
第3章 系统设计和架构设计【扩胸运动,有容乃大】
! |+ Z  G% D" n' W! w本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。' A1 V8 `1 E3 S9 U. I$ o% j
3-1 需求整理和提炼
! @+ [# f2 k5 d+ t$ Q* P3 c3-2 用户操作和业务流程3 B6 r! R# Q, [- S$ [/ P
3-3 数据库设计; m6 H; E( n2 C% S
3-4 缓存设计 试看
- x5 l3 m$ i8 J3 `2 m$ G0 f6 l$ j% H3-5 系统架构设计
* t& x5 {" ?, A+ @+ a3-6 系统设计和架构设计总结& s$ `( a% @- |' E! \3 s/ v+ c
3-7 高性能程序设计,缓存为王
  o4 n7 l: H2 N, K% }6 `3-8 系统架构升级之道,关注关键服务依赖
  A6 D% r& q9 l+ y) X5 G3-9 阶段任务4 h/ r/ ~& A' q6 G  |/ n9 @
9 ?3 O/ H$ Z. k" V1 Z# F0 ~
第4章 项目框架与核心代码【踢腿运动,固若磐石】
) [' X- c0 e  ~1 v, O5 y- b! w本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
0 U- ]/ C9 X  ]; R: O% v4-1 项目框架搭建* g& i7 z# f. G+ o& m4 t
4-2 数据模型的生成9 C9 m1 ~$ y( w) C; y
4-3 核心的dao和service类
# Y6 P$ I/ y8 @2 `9 A4-4 定义dao" J2 a3 P2 o. Z' c" v% H
4-5 定义service
; z3 Q, L4 D4 Y- [) J; B& T3 E) t4-6 定义数据库和redis配置信息
9 F( t* ?& @  m  T4-7 创建数据库实例及其要点
! H; g4 V6 _8 V& ?) Z4-8 创建redis实例及其要点
6 E- j/ K! u8 K  U2 [4 ~+ O- S4-9 利用iris建立web站点$ V( Y: l$ ~. Z
4-10 项目配置和通用方法2 f# e& r* L  z* \/ Z6 Z
4-11 web站点初始化构建
" K* f+ ^) M- l" F+ ?* l4-12 实现IndexController' g) E( [0 L4 C) c' \+ e' p, g
4-13 完善路由和main.go文件
2 N& _; P* z2 @) |4 o3 `4-14 登录和退出:安全值校验和防篡改
4 e4 y! g% x' E* F4 z$ T& A/ t
1 L3 `1 z3 O# L% r! L8 ^. e5 b第5章 后台功能开发【体侧运动,运筹帷幄】) K# l8 W& |  l) {
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
  O# b. L5 q: M/ F5-1 后台功能开发介绍
% p' a4 {+ e+ Y# K4 \5-2 页面模板和AdminController
; W$ q( y, N3 f$ Z9 H8 N" m4 ?5-3 奖品管理实现(上)8 Z+ [5 W* D: w' Q6 U! C" k
5-4 奖品管理实现(中); L: o: w6 |1 G+ z$ Q, b% `
5-5 奖品管理实现(下)
+ i) f! }9 v) u5-6 优惠券管理实现(上)9 i7 f- f1 N0 x3 M
5-7 优惠券管理实现(下)
+ t9 h# b6 G- f+ B$ Y- g! I. I5-8 中奖记录管理& C7 u' u1 V7 M/ p
5-9 用户管理0 M5 O  M- |! S3 S  V' r" H
5-10 IP黑名单管理  \! R  Y/ e, Q1 `- o7 o

- Z: E+ _2 @& z* l; ~6 z% V# g第6章 基于mysql的抽奖功能开发【体转运动,基础版本】8 l) X6 D2 B3 j9 ]% e/ z6 `' s" Q+ \- R
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。. e) N- t* F8 p/ n2 J0 W
6-1 抽奖接口开发细节分析* o+ k% I& ?0 h9 x) t
6-2 用户并发操作的锁
$ Z8 F4 h) E) e# ]8 k5 z0 j( X6-3 验证用户、IP今日参与次数(上)
2 ^, ~/ c6 d1 _$ N2 ?* @6-4 验证用户、IP今日参与次数(下)
+ _" S, \: U4 J& m8 v8 L6-5 用户、IP黑名单的处理$ ~9 e, e7 R  L7 Z4 A7 |6 h; s
6-6 抽奖的实现4 W2 O2 u3 w) a
6-7 发奖的实现
, D$ i0 F* ~& O' z: ]6-8 中奖记录和返回结果
: g! q2 z( {8 t/ ?$ C! c/ v9 g, X+ Z. s5 v) s4 e% U
第7章 使用redis缓存优化【全身运动,升级版本】5 [+ O1 N8 \  A/ }6 E0 y
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
/ ~6 _$ O0 I6 O& {! @" V$ E6 ^7-1 分析_奖品数据全量缓存
( I7 l0 Y! c6 y/ T/ `6 B7-2 实现_奖品数据全量缓存(上)
4 |% U& k; M- D3 U7-3 实现_奖品数据全量缓存(下)
4 q/ n6 l+ M# B0 [0 i4 L7-4 分析_单个用户数据部分缓存! V* k) w, D8 r% H( m$ f
7-5 实现_单个用户数据部分缓存. m" _  A8 j& j) X$ x# h: N0 P
7-6 分析_IP黑名单数据缓存+ }! G' X- _' A$ L
7-7 实现_IP黑名单数据缓存
/ f0 n8 b7 R: g3 h7-8 优化IP今日抽奖次数
8 E% c5 _) d- v5 e# L7-9 优化用户今日抽奖次数% D* @, B7 N. Z: h1 o3 I
7-10 用户今日抽奖次数(上)
5 z4 X! ]6 ^7 n8 R/ m7-11 用户今日抽奖次数(下)
8 r( l6 n( D8 R) C7-12 为什么使用奖品池# g7 N( d+ b% W1 P0 r" S% O
7-13 初步使用奖品池" @- y* x4 o9 \
7-14 分析_优惠券的全量缓存/ o. R( l+ H! c/ p
7-15 实现_优惠券的全量缓存(上)- c1 [( G; D7 b4 l( b' p$ x3 c
7-16 实现_优惠券的全量缓存(下)8 }# a5 T3 z1 ]0 t* X5 K9 `
7-17 使用redis优化总结
* G0 C7 Y7 i0 C/ g& |# z# _# \
& ^- L. |& ]; P. u+ `. Q第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
/ r4 C: i) H4 {6 R2 d本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。: ?- H( r* ]" n: ~& o; L
8-1 发奖计划设计分析) N7 o; H- `7 _; }) o
8-2 实现发奖计划(上)3 M( e7 o. K3 V3 y2 y
8-3 实现发奖计划(中)
4 w- q1 d' U5 P) W$ a; t1 G8-4 实现发奖计划(下)$ l" p; G1 i8 u' j$ ~! h
8-5 自动填充奖品池分析
! s8 q5 k- x: S& o. l8-6 实现奖品池(上)# P; _6 l! c9 D% T9 A+ B1 a
8-7 实现奖品池(下)7 k& D; ]" t) N% g" s
8-8 总结发奖计划和奖品池1 r0 c+ N, o3 B. q; M4 w7 i4 ^' S

3 F# s9 q* i1 E' I! T4 I第9章 完整性演示以及更多总结【整理运动,整体交付】+ b2 g+ U5 R/ _& H( `+ i, E
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
- F. M4 ^; F' z! X3 m9-1 前端大转盘分析
/ J3 {0 S* ]! c7 v8 I9-2 前端大转盘效果实现
3 C# h  K+ _* E  m* @; d9-3 优化奖品设置分析
; s0 P0 w# G* U9-4 优化发放奖品分析
7 B' p- C9 R+ b9-5 再来一次压力测试吧/ P7 j2 L, J' @  n$ C
9-6 压力测试
) l4 e; Y8 z: d! d2 h# m0 w9-7 更多运营策略' H) g& o7 O* B$ \1 L6 H" _
" p+ _8 M, i' ?- }# s7 J7 P
第10章 引入thrift框架【附加运动,扩展服务】9 T" x$ s/ U( {) @
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
/ s9 \4 P# E$ ?- J3 I7 u. _( L10-1 了解thrift+ X5 A+ v% M& R/ [5 a( E
10-2 定义thrift文件
, g1 g* f+ M6 b  P$ K10-3 生成代码
0 f0 V, X3 i0 F4 k10-4 服务端接口(上)
% V- L" g2 s' }/ O& R/ o# J6 Z9 d$ E10-5 服务端接口(中)
+ `' S) y1 F, W10-6 服务端接口(下); m2 a( a0 d- G1 W2 T% D/ M
10-7 客户端接口
: T' ^7 v8 A+ s2 Y; ^. G10-8 总结
3 r" Y4 d% |( P: ~$ t% g# }
; v# J, d2 x+ Q6 G8 n' @第11章 课程总结【结束,沉淀】/ z! B. C, z+ g  W
对课程进行总结) ?" {- Q7 g& e6 V
11-1 问题与思考
- w+ e1 D/ T6 n) k0 p11-2 课程总结9 s  d( D) o  I# a" ^# P

3 V6 _1 ^  B7 a: x5 h8 `〖下载地址〗
9 O; |4 T% n" P
游客,如果您要查看本帖隐藏内容请回复

0 n. b2 ^( x7 j- C9 i+ a6 N
8 r; M  O% H0 R2 V9 Q! B6 c
9 S) Y) v7 ~3 b5 W
回复

使用道具 举报

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; m( }4 K. z( K9 N* D8 H1 Y3 d, f
你这个是可以在线看的吗

0 M& N1 Q; g9 A+ q5 p0 A% d4 N可以的/ x! j5 f$ h* z  \" C" j5 m' R2 T
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则