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

  [复制链接]
查看8313 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
4 T) u9 S% R- W8 B; v5 n  i# _" G〖课程介绍〗
* x. I* e- p0 {0 ]抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
- l) u- v  ^4 B- K0 d  R# d
3 i* B( ?9 x# u7 s' v〖课程目录〗' e, k4 G1 [4 U% D5 g3 F3 R
第1章 课程介绍【预备,初识】
5 p* A' U! s1 h; v# z; Z! C课程内容的整体介绍以及学习建议。
- y6 _& y# U0 y% t+ y" |1-1 Go抽奖系统导学 试看3 ?2 Q; b3 ~3 [
. u' J, v* }7 ]4 l
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】) n' U2 A  h) m* b  m" A+ O; `
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...  R* D9 ^  `* E% S* C% E" l9 I, H
2-1 年会抽奖_实现分析
6 r; _! N: p7 F  F0 B2-2 年会抽奖基本功能实现
# F# Y3 g/ P! a* f2-3 编写web单元测试和并发安全问题3 }# @* _! ?+ c! K- V; B. f
2-4 用互斥锁解决并发安全问题+ t& J6 f1 R6 X8 k0 z  ^. L$ _
2-5 彩票_实现分析
' M; f+ X/ C! p) T( R: j$ Q% E2-6 刮刮乐和双色球 试看  l+ @0 Y. r3 Z% i2 [
2-7 微信摇一摇_实现分析9 O) y' q/ \7 ^+ H
2-8 微信摇一摇实现(上)
) [) G' T  m# k. a- @6 `) t1 w+ D8 F2-9 微信摇一摇实现(下)
4 u: J4 s" E  p2 q9 b' q; r- G- h2-10 bug修复和压测
. X9 e6 }, D. X% y9 B# q0 }2-11 支付宝集福卡_实现分析# U, R* h+ y  h1 g
2-12 支付宝集福卡实现
2 z2 A; G  e9 y& B/ x3 ?% p2-13 微博抢红包_实现分析
- y6 E+ ~0 \" M" k* S$ C2-14 实现发红包
% q  Y$ m" R8 V; |. L) t1 u2-15 实现抢红包$ P$ A) D  e6 ^9 J5 m$ w
2-16 均衡问题和sync.Map解决异常
7 l; X# ?2 A7 R* x5 S! ]% B2-17 改用chan的方式解决并发安全问题! \! @0 X$ Y- X) L! c6 q( G
2-18 再次压测验证和优化改造0 H5 o: t) q: l8 `( e' [
2-19 抽奖大转盘_实现分析1 w; I& P6 l& |' Z6 Z2 n
2-20 抽奖大转盘初步实现
* o! A' K3 M! e  J2-21 sync.Mutex和atomic改造性能对比# r: X2 `) F- ]# p5 g6 U
2-22 六种抽奖活动总结
7 h) x  C! i( m" \: t2-23 并发编程与锁的底层原理
" G0 l& U+ C4 }" m+ y3 A1 ^& e2-24 高并发和高性能系统中锁的影响与解决办法/ g4 A' |6 D% M, w" `, d  a, I& G& @9 X
2-25 阶段任务
. U- E( W/ }% x. ~" i6 E% J! F2 H( i3 n; f
第3章 系统设计和架构设计【扩胸运动,有容乃大】
# |$ n: h( ?4 c2 ~- I本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。2 k. \6 g. ^0 S8 h
3-1 需求整理和提炼
. X  h2 ^! N3 q$ }  m3-2 用户操作和业务流程, @' }- l. ]! x
3-3 数据库设计
/ N; S5 D1 r% V# t8 {1 a1 c  c3-4 缓存设计 试看
) T; g6 P, }) c3-5 系统架构设计' H3 x& ^9 e8 n4 U0 x
3-6 系统设计和架构设计总结
3 M2 E+ \" W  B* d3 e3-7 高性能程序设计,缓存为王: j6 X/ Q8 ~8 O
3-8 系统架构升级之道,关注关键服务依赖9 @9 G- N. f3 I, r
3-9 阶段任务
; A+ Q- H3 E: p, i" H
. E7 r3 N/ t  j$ Z2 ^6 J第4章 项目框架与核心代码【踢腿运动,固若磐石】
7 z; z* `0 X3 U本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
* K& F& Z: ]' b2 }7 p! g4-1 项目框架搭建
+ k; D0 p! E; Z/ W  _' i4-2 数据模型的生成5 M8 Z$ |/ I8 ~! Y5 c# ^
4-3 核心的dao和service类6 {( Y% ~* n0 r
4-4 定义dao% s7 H5 u' a  I3 h) N* ]
4-5 定义service" f! I2 X# {& R
4-6 定义数据库和redis配置信息( f' D* J# o& j
4-7 创建数据库实例及其要点9 c% C) O0 \$ n) y4 b# u! y7 A$ K! h
4-8 创建redis实例及其要点/ J; n# Q# ^( u/ i! n6 _/ b: s( h
4-9 利用iris建立web站点
1 S- J& {) D1 V6 s! ^! u7 |' d" c4-10 项目配置和通用方法; n+ C) z$ \4 l
4-11 web站点初始化构建! {, K$ R' B7 Z  a/ \8 ]7 V/ j. V
4-12 实现IndexController
: G! A0 t. K- L, ]. V' e# \6 B4-13 完善路由和main.go文件
; |2 w" e# z" x3 V1 A4-14 登录和退出:安全值校验和防篡改. `$ `; b4 `! Z# U
! u: Y( u7 r4 ^; W# P2 R
第5章 后台功能开发【体侧运动,运筹帷幄】
& A+ {4 B8 g' a# N4 p) E一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
. S" {2 i" R/ O& I6 u. \+ K5-1 后台功能开发介绍
6 G6 C3 |& N& {, m5-2 页面模板和AdminController
# D! z& |. E7 n0 v' l5 E( E6 ^5-3 奖品管理实现(上)) N3 I+ t  g* Z. ^, J) E& V
5-4 奖品管理实现(中)
# B) }9 Z7 r6 H4 j5 n1 L5-5 奖品管理实现(下)/ y$ N" F3 c/ h. z% c$ t# L
5-6 优惠券管理实现(上)/ f  n2 _6 g# g: q" t4 _, ~, Y7 Z
5-7 优惠券管理实现(下)7 w( ^. V5 a8 B4 {' c4 M! ~
5-8 中奖记录管理
6 T/ x0 ], ~7 w' Z' L0 @0 h5-9 用户管理+ E5 @* p+ U, Y! c# g) A
5-10 IP黑名单管理
, H2 |) @( M" c: Z
8 S( ^- }7 i8 Y第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
2 ^8 a) x  j& C9 ~) l# B8 x8 Z本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。9 y" b4 B8 A; L5 f( ~' H
6-1 抽奖接口开发细节分析
# I9 a6 u  f% \( C; B4 Z6-2 用户并发操作的锁1 @& f, S3 w6 g0 C( U; @
6-3 验证用户、IP今日参与次数(上)9 h; ^+ a1 B1 a5 C9 @* \$ t
6-4 验证用户、IP今日参与次数(下)
& w. o/ F0 a- G" R1 H6-5 用户、IP黑名单的处理
4 A+ O( K$ O) L, Q' x' N& g% V& O6-6 抽奖的实现! |5 t, J) D5 _6 }6 d- J7 J
6-7 发奖的实现0 P" ~" d3 t4 f6 c" K1 `4 V* k
6-8 中奖记录和返回结果
* R' c" v2 H  g9 r$ D
: G- ?+ e: u, G. ~第7章 使用redis缓存优化【全身运动,升级版本】; B, h& z5 w) o$ v
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
+ l; T: H. ~1 Y, M" \" u7-1 分析_奖品数据全量缓存
! p/ ~: m# i# C; f7-2 实现_奖品数据全量缓存(上)
+ ^1 B( O0 N/ j% K7-3 实现_奖品数据全量缓存(下)1 O& n* p1 W  l/ p
7-4 分析_单个用户数据部分缓存9 u6 c- T9 y( k3 K5 I6 @6 o
7-5 实现_单个用户数据部分缓存
; t* T! |5 B8 C7 }, T7-6 分析_IP黑名单数据缓存
; y$ F+ z# X% ~7-7 实现_IP黑名单数据缓存) d1 ?% h4 T3 h
7-8 优化IP今日抽奖次数
# q6 Y+ D4 P4 S3 e5 z/ `. M8 q7-9 优化用户今日抽奖次数
& g4 B! l) F1 B4 N/ y7-10 用户今日抽奖次数(上)
. j* e- {% K' L2 Q  r5 U7 u( z8 f7-11 用户今日抽奖次数(下)
9 B& n9 o. w3 N8 f! ?  R# h& a7-12 为什么使用奖品池. `; M/ v- F, z
7-13 初步使用奖品池( h9 F& Q+ y  T
7-14 分析_优惠券的全量缓存9 X, B5 E: i& h# G( z" p; u6 c+ `
7-15 实现_优惠券的全量缓存(上)( L4 F- V* e4 A; O( K/ l$ f
7-16 实现_优惠券的全量缓存(下)
; O& I1 c. {8 o7-17 使用redis优化总结
2 ]; D1 y! J- b0 C4 _: |. Z) X. k" P4 d8 i1 b
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】+ y7 `$ P4 z" H4 p* N, k+ Z' O
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
5 H) @: x) m8 O8 `7 g2 y) M. o8-1 发奖计划设计分析
; V8 B  k: d9 U1 ^- p6 r8-2 实现发奖计划(上)
8 ]) c1 o! A4 L4 y0 d8-3 实现发奖计划(中)& J! k7 I, d4 ~8 Q% h" o
8-4 实现发奖计划(下)
) {( @) P6 a; A7 {9 {! O8-5 自动填充奖品池分析
& H  Q2 J+ `! Q+ m7 l. O; V; ]8-6 实现奖品池(上)8 f7 d& ]5 S& j' Z2 C$ e  Y
8-7 实现奖品池(下)0 ^! l* {; g) j# W% ~7 j
8-8 总结发奖计划和奖品池
, ~( }( F/ t. E& W+ t! ^# H
& T/ {* ]) n5 {& n! o& Q第9章 完整性演示以及更多总结【整理运动,整体交付】0 W0 k8 q0 l" K8 `+ ]- H- {
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
6 U* Y2 G5 M% X/ }3 L- U8 d9-1 前端大转盘分析8 B( \5 Z1 C& q0 S9 R. j
9-2 前端大转盘效果实现
: A7 b" x2 t* c0 }. e9-3 优化奖品设置分析
8 |( t$ ^# m/ X% X1 i9-4 优化发放奖品分析, v( l7 `4 L- U7 I6 G
9-5 再来一次压力测试吧7 \8 P2 }/ I: e1 |7 x7 ~# T/ L
9-6 压力测试- x3 d6 b' y! |- C  `( Y5 V: o
9-7 更多运营策略
( t: g+ F0 n6 {, w7 a- v
; m. b! I6 W0 ]: p第10章 引入thrift框架【附加运动,扩展服务】
+ j5 X  k" @1 Q3 h: C通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。3 h  |% a- G3 n& P# d/ i1 z
10-1 了解thrift
) J' e" Y. ]+ H( J10-2 定义thrift文件
$ b' e8 K2 u7 U" Y; v10-3 生成代码4 J0 C' {" Q! Y  s1 X0 C4 j6 i
10-4 服务端接口(上)% }7 n- \! {) b7 ~1 r2 s( T0 f
10-5 服务端接口(中)
7 }* i4 b0 Y3 q- I10-6 服务端接口(下)5 X: a' l; ]# K
10-7 客户端接口8 Y7 f( F2 g. H9 w6 d8 I
10-8 总结$ @6 `% J' o. R
9 @! B- j5 M4 T2 z
第11章 课程总结【结束,沉淀】) v$ j0 l( S. X) {; S
对课程进行总结% u: Y+ w. b, b7 r
11-1 问题与思考
/ Q. L+ o- K  [/ B" N6 M" \8 w11-2 课程总结, g& {; D9 R, ~2 ~8 |- W, E
+ C' R0 ]# c: O1 R! |4 M
〖下载地址〗3 E0 }9 n# e3 T9 ?3 J
游客,如果您要查看本帖隐藏内容请回复

9 L* Q9 I: a6 c4 ]+ T% U6 O5 ]( ]' i- `, o) f9 [
+ z* p/ i! R5 ?2 q2 U
回复

使用道具 举报

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:332 _. b0 K6 M# E) m( h/ ]
你这个是可以在线看的吗

, {/ R) _7 D0 W可以的% c  s1 G6 l1 E, x' y4 h
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则