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

  [复制链接]
查看16133 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg - @- O2 M; S6 M; f: ^3 T
〖课程介绍〗' G' o' n% x2 }6 ]
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
' B* w- d8 R/ {# O' h
9 T) G* W- T# j, h5 [$ m〖课程目录〗: x5 k, x% e4 k: l1 R. m8 S. Z
第1章 课程介绍【预备,初识】% F3 d! q  U& A9 A
课程内容的整体介绍以及学习建议。/ T' m! y8 J. o, Q
1-1 Go抽奖系统导学 试看
0 i. V; U! h- ^8 ~! J$ B8 F
+ B) Q' l7 C- e* E; I0 E) @1 b& O/ Y第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
# \% c7 \% Z. L9 ~) D2 o% D" u看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
( ]% M" ?5 a% z: z8 t5 }2-1 年会抽奖_实现分析5 u0 p4 r9 k2 J- C9 s
2-2 年会抽奖基本功能实现+ T9 g+ d! e/ u+ \
2-3 编写web单元测试和并发安全问题/ Q; L) M  A* M2 x0 O( ~
2-4 用互斥锁解决并发安全问题8 T( i  P% f0 N% Q" f7 W+ n/ l+ G
2-5 彩票_实现分析
. a# q7 z; \: M! {5 m" N2-6 刮刮乐和双色球 试看
  ?$ @6 ]9 W9 `' L2-7 微信摇一摇_实现分析
2 ?: f5 ?: W7 ~" f1 i$ [* n" f2-8 微信摇一摇实现(上)+ W! ~2 z) L* H% v( [
2-9 微信摇一摇实现(下)
. N" u0 k  i' V* E, ~2-10 bug修复和压测6 |% r: p7 b' f9 K5 R; }+ P
2-11 支付宝集福卡_实现分析7 N2 U; [4 j3 v- _
2-12 支付宝集福卡实现
* Z/ w, n/ \" N6 D2-13 微博抢红包_实现分析
+ L6 i, U5 |. b& j1 ^1 d+ o2-14 实现发红包1 x( _! G( c2 \% j$ d9 @% m
2-15 实现抢红包
  ^/ E# w2 o1 N: _% j) a2-16 均衡问题和sync.Map解决异常
! N& E' d2 _# r" @2-17 改用chan的方式解决并发安全问题/ p; s6 V( w* V
2-18 再次压测验证和优化改造
) Q7 G$ j3 m; c2-19 抽奖大转盘_实现分析
* x% R% Z: C8 k8 ~9 |: f2-20 抽奖大转盘初步实现1 s% l' L5 Y4 y( X( L' Q6 Y* a. v8 v
2-21 sync.Mutex和atomic改造性能对比
+ B" n( V) M1 k* F# H2-22 六种抽奖活动总结6 x# j2 Z$ _( _1 t9 l; F& h
2-23 并发编程与锁的底层原理
/ P4 Y0 Z6 w8 |* j2-24 高并发和高性能系统中锁的影响与解决办法: [9 c8 u; B/ }. x6 v
2-25 阶段任务
: u) C% r5 g3 d9 [' Q" l' R9 Z/ _/ U0 ], q
第3章 系统设计和架构设计【扩胸运动,有容乃大】1 |5 s2 i* q9 j; I
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。) x/ G) N- ]7 X! Y
3-1 需求整理和提炼0 Y- J8 h) ~" C1 D/ C& g7 k
3-2 用户操作和业务流程
+ M; O+ M9 d0 r3-3 数据库设计* K/ d5 E9 L# z* F- K% j
3-4 缓存设计 试看
7 M" C/ `2 G, j1 S- @3-5 系统架构设计
4 y$ K7 C/ t( `: w; n# Q3-6 系统设计和架构设计总结. L/ u: h$ a6 a' X! p
3-7 高性能程序设计,缓存为王
4 m' p! E5 v9 V5 Y  O3-8 系统架构升级之道,关注关键服务依赖
9 M6 i. s& u3 J& E3-9 阶段任务
9 |. x- A0 o1 D+ C. m' a% }5 \; k
/ |, X7 @$ w7 S3 a第4章 项目框架与核心代码【踢腿运动,固若磐石】
" c& G# }2 U' S" }/ b- Y0 y. `6 H: K本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
* G6 ~5 {  T8 D/ {+ {& ?. C5 Z: t7 f4-1 项目框架搭建" x& |' a) F. c* Q7 I
4-2 数据模型的生成
  Q0 G! J$ V; O/ N, @: f) _8 l8 C4-3 核心的dao和service类
" u# |6 p/ Y8 l- Q5 Q4-4 定义dao
7 c6 h. A- Q/ `- I- l6 P$ l4-5 定义service
, R- m7 L0 B" K# _- T: J4-6 定义数据库和redis配置信息
% A9 [, I: {1 c: }4-7 创建数据库实例及其要点
' z" M- z' N" x4-8 创建redis实例及其要点
0 }/ s. N. G& ~4-9 利用iris建立web站点# k! C: z9 k2 |* B- a. e0 K1 U
4-10 项目配置和通用方法
1 {, \5 y9 t# x( m4-11 web站点初始化构建+ O* F+ o3 t  B6 w% Z5 L
4-12 实现IndexController
8 {( r& I( Z! q, i: G: U$ T( z4-13 完善路由和main.go文件% x% E! w7 {4 L9 w3 B8 C
4-14 登录和退出:安全值校验和防篡改3 j* ?% M0 F+ r4 x* E- ~& P0 |7 _/ q
) r+ M' f4 j! V7 L% i) q1 m0 e
第5章 后台功能开发【体侧运动,运筹帷幄】9 l6 k9 a* R# O( z: B8 _& `: q9 \( p/ B
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
0 O2 \" i  a' n! I1 _" u- g* B* O$ s1 V5-1 后台功能开发介绍
3 e; Y6 z. m: j% L8 r7 k; B5-2 页面模板和AdminController7 Z. [, h! @% ]! ]/ {
5-3 奖品管理实现(上). j# i+ U! a7 O6 W& F3 u1 ^
5-4 奖品管理实现(中)
" @! u* G) Z- C+ L5-5 奖品管理实现(下)# b7 N9 {4 A! K; q
5-6 优惠券管理实现(上)
# K8 \5 H- F4 f$ L" s) U/ l5-7 优惠券管理实现(下). z$ \2 N2 `5 w0 g' Y' r
5-8 中奖记录管理1 y/ z+ V2 ^8 u
5-9 用户管理
6 x/ Q" c( r( Q" m% |+ v5-10 IP黑名单管理
- J' V) E1 R5 q% X0 [7 ~
8 e! K! m) O  U0 T% S& C第6章 基于mysql的抽奖功能开发【体转运动,基础版本】8 |* S6 J& @% {2 d0 D
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
, S  s5 m' x# P) A3 B$ b+ w6-1 抽奖接口开发细节分析
" A+ h- w+ ^1 D$ H# Z% }' t  o6-2 用户并发操作的锁
+ J! b" j& z- M- N6 [6-3 验证用户、IP今日参与次数(上)
2 R, H+ `' [* ], I; I6-4 验证用户、IP今日参与次数(下)5 p0 f5 X; Z2 W& r. X" `% h% ?
6-5 用户、IP黑名单的处理
+ q7 a+ t! [$ `7 h. n# A6-6 抽奖的实现  z6 a7 [+ O1 ]7 C0 Z1 t# l
6-7 发奖的实现' Z* ]- U: d4 N) j" T
6-8 中奖记录和返回结果# H6 b) G& A' Q% _
4 ?( r7 w' w9 H, o
第7章 使用redis缓存优化【全身运动,升级版本】
0 m. ]5 R4 c( M  \& c8 ~本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
4 e* v8 z4 ]3 E/ X/ q4 y+ w7-1 分析_奖品数据全量缓存; N, ~; t. T0 R. h
7-2 实现_奖品数据全量缓存(上). Y4 c' H) i; I9 {+ k$ ~
7-3 实现_奖品数据全量缓存(下)
/ k) \5 j# V; b) q7-4 分析_单个用户数据部分缓存2 V$ s4 Q# u( {  b
7-5 实现_单个用户数据部分缓存* ?$ V' q* |; L& @2 Y7 L
7-6 分析_IP黑名单数据缓存
9 p- D$ \+ Q4 d8 n3 P7 D! m0 [0 D1 ]7-7 实现_IP黑名单数据缓存
; `+ l8 L( F1 n. D* w; r. T1 I/ \& B! W7-8 优化IP今日抽奖次数
( ?. {" |  T! O3 h  s7-9 优化用户今日抽奖次数9 ?% t, i( B" @0 V- D3 [
7-10 用户今日抽奖次数(上)3 k: R7 u% o% D! U2 W) M4 ^* @2 {
7-11 用户今日抽奖次数(下)6 J* i/ T+ m* C0 i6 J
7-12 为什么使用奖品池+ j" [/ X3 J. ^/ p1 p
7-13 初步使用奖品池2 v- o2 z8 P" P6 h$ p* X: m: B5 e
7-14 分析_优惠券的全量缓存! v7 h  d0 ~' O9 a, b, X
7-15 实现_优惠券的全量缓存(上)
) z; l0 q$ [# |1 R% B7-16 实现_优惠券的全量缓存(下)
1 R! }& R8 F5 j. B5 B7-17 使用redis优化总结
( I  ~3 G6 u' O
+ ^3 {+ x& B& O; E' @! A. G第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】- q$ N; m9 o* P+ X
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。5 [& @; K/ c( |: N: X9 C2 R
8-1 发奖计划设计分析
& ^; [' A# n4 p8-2 实现发奖计划(上)
4 C) U- [& k% o4 d/ Q: S8-3 实现发奖计划(中)
5 b8 O1 q2 y% d8 T% }8-4 实现发奖计划(下)
/ F( T. ?7 t4 D# S8-5 自动填充奖品池分析5 E2 P4 H2 m& o- o6 L1 Q4 b" o
8-6 实现奖品池(上)
2 ?$ c! g8 C* J6 E& D8-7 实现奖品池(下)
' ^: y! _- B- Z8-8 总结发奖计划和奖品池; _$ ]9 u2 ~5 h
2 Z' ~+ H+ |" t& \
第9章 完整性演示以及更多总结【整理运动,整体交付】
. I2 N1 O+ V9 o/ L& n1 H实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
) v5 r8 s& T4 v4 i/ S& ?. g5 m3 V0 X9-1 前端大转盘分析9 U) D8 u, D2 J& I
9-2 前端大转盘效果实现
3 }+ c* J9 B; U1 r9-3 优化奖品设置分析
: @% i! z" z9 c/ \% V9-4 优化发放奖品分析
/ n0 t: C" n+ o9-5 再来一次压力测试吧: `2 O* a3 R1 X4 \8 t4 Z
9-6 压力测试+ J* b. T. Z7 q3 l9 P
9-7 更多运营策略- t0 ~" Q8 g3 B0 O, j

, x2 o: R# `1 a5 W第10章 引入thrift框架【附加运动,扩展服务】" _1 ?6 s- E- W7 G, v, o
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
! O" X! t& V  h8 c/ O( u: R1 w1 ]10-1 了解thrift
: D9 l  l( E: C, |; g- _10-2 定义thrift文件
: d) V( e* I) ?10-3 生成代码4 P5 Z" Z' c0 B  I
10-4 服务端接口(上)3 Q, t3 i: i% Y% G3 W( J+ L
10-5 服务端接口(中)" |. p- C( ]+ m# _* ~, }
10-6 服务端接口(下)
* O4 e& Q6 {- d5 D; \( U* g0 `10-7 客户端接口, d: H! e5 I! G, v2 d$ e% j" s
10-8 总结
: s, N1 V! v# U. O5 d. b2 W! S" K! w7 m- D, N
第11章 课程总结【结束,沉淀】! e$ d6 k. g7 E* [/ c
对课程进行总结( d" M1 U, g0 O: K
11-1 问题与思考# \8 k: T  [' @& Q0 E! X' A4 T
11-2 课程总结) G. i5 L; A% Z2 }- m
0 i1 a' |, b/ @3 V
〖下载地址〗
1 }7 h; P; j3 W) g* a4 m
游客,如果您要查看本帖隐藏内容请回复

+ s9 G2 I$ {8 b  T- a. \3 R
2 ]. e& K. A  m4 J" i; V' O) J* e4 [# l6 ~
回复

使用道具 举报

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
( W% M' x" p/ n' s6 D你这个是可以在线看的吗

5 `% X1 D' u# {可以的
9 f# Z1 c" i5 K8 s1 V
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则