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

  [复制链接]
查看10759 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
9 M5 \* c6 s- O% r〖课程介绍〗
0 [! c9 V/ C+ z7 n3 q% ]抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
2 A% g. b: F9 }8 m6 e  R9 F7 ]
0 \$ T2 G9 ~4 ^) |' F9 O; O4 m〖课程目录〗2 h$ B1 x( r2 ^9 F# e' `6 k
第1章 课程介绍【预备,初识】
2 j, e8 |( O" O, Y# c/ O+ ^0 W课程内容的整体介绍以及学习建议。
  F6 K" U' r3 h1-1 Go抽奖系统导学 试看5 U+ b* E7 s* |0 y- Z# x  F9 Q$ D
& H& _; w/ `1 F2 ?* f0 E
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
3 d; ]/ D$ B9 h看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...' v* K* U. l2 V& C+ O$ z! @
2-1 年会抽奖_实现分析
: x& B" `( N9 C6 y% s; _/ O2 `2-2 年会抽奖基本功能实现" ^; p! h2 E5 a/ K' {
2-3 编写web单元测试和并发安全问题  w- h6 [( D' d9 F0 c- X, n
2-4 用互斥锁解决并发安全问题
' T7 o7 M+ ]; H) ]  U) }2-5 彩票_实现分析0 B+ J; V5 X3 Z; F7 A1 ^( G& p
2-6 刮刮乐和双色球 试看+ C& I# P2 _- _/ d
2-7 微信摇一摇_实现分析5 y1 M( a9 f  f
2-8 微信摇一摇实现(上)
' |( ?, z# z. G2-9 微信摇一摇实现(下)
; {- _6 y) K8 F- p& k1 q: x) q2-10 bug修复和压测0 E* I0 ]$ [0 d% g  h
2-11 支付宝集福卡_实现分析
4 b' J# a. Z5 @6 H) \7 q" f8 o2-12 支付宝集福卡实现4 A7 B+ D0 O3 U+ l5 s) e
2-13 微博抢红包_实现分析
8 m0 Q2 N& R0 ~& n) Z' P( K2-14 实现发红包! R9 T  M( n: x1 V# L% q
2-15 实现抢红包
& w2 U' _5 v4 F. [& _2-16 均衡问题和sync.Map解决异常
6 g  E& p0 k3 ]0 k% [' X9 V: v2-17 改用chan的方式解决并发安全问题6 F- J$ j3 U$ z7 |
2-18 再次压测验证和优化改造
4 W3 Z' y+ w5 X! ]' d2-19 抽奖大转盘_实现分析' e; s, D6 J, }
2-20 抽奖大转盘初步实现
0 d6 s/ }3 ?$ b. T1 Z2-21 sync.Mutex和atomic改造性能对比( L! G& K) l. J6 L
2-22 六种抽奖活动总结
% ~0 u) \) u( ~$ t2-23 并发编程与锁的底层原理
% H2 Q) T- O6 k9 e; z2 u* S# N! e2-24 高并发和高性能系统中锁的影响与解决办法! K4 s9 v& }: ]3 z3 `& h
2-25 阶段任务/ P# z; u3 k  n
& E. h6 |- W# F; H
第3章 系统设计和架构设计【扩胸运动,有容乃大】6 x& y# @, D: b5 l
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。0 h) p! g+ |  m2 x# ]3 y9 l# g0 h
3-1 需求整理和提炼
2 y' A/ x% u  j+ W8 f3-2 用户操作和业务流程
/ P4 I: p' G+ @# c8 ^+ d; a: E3-3 数据库设计
! ^1 N8 w- Q# N* D9 L5 a% z" ?- ?3-4 缓存设计 试看
) J( n+ e/ v7 z) G7 |+ G0 v0 Z0 b3-5 系统架构设计4 u9 Z/ T: w" O
3-6 系统设计和架构设计总结
0 J) P9 P. W; r* b" ^5 c3-7 高性能程序设计,缓存为王8 K7 @4 x1 {& ]- S
3-8 系统架构升级之道,关注关键服务依赖, z. Y% O# m' Z8 }" ^) X9 L# @- T0 d# A
3-9 阶段任务
. k) I( X4 j9 m/ [/ \  v, Q4 g
3 v' ]# D& i3 ?0 w5 U$ _" U第4章 项目框架与核心代码【踢腿运动,固若磐石】
3 C5 O2 T' E, A0 z" y* F本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
( P: {3 B' W4 f3 ?# R0 C4-1 项目框架搭建
' G+ [0 v; v8 z8 n- a5 u4-2 数据模型的生成8 G! c4 f2 ~' t6 J1 [1 P5 U
4-3 核心的dao和service类/ z6 ^8 Y1 E8 P/ l
4-4 定义dao
. l" [6 `: }, o0 F  U4-5 定义service
5 `$ @* w2 P5 C' v& q- b4-6 定义数据库和redis配置信息
3 e$ a) n& g+ o2 h; k/ a* O4-7 创建数据库实例及其要点
4 A% [! z$ ]7 v4 s$ _4-8 创建redis实例及其要点
) x- X" o4 `9 x8 j" A' `4-9 利用iris建立web站点
2 \# F" s! B. @) O4-10 项目配置和通用方法
; Y9 u. K* F8 u" g9 X# }* N4-11 web站点初始化构建* u; ~7 b- r2 Q$ c2 a$ R
4-12 实现IndexController
0 A" T# _9 I; v7 b& B9 r( n4 a0 w4-13 完善路由和main.go文件9 m* i- [3 s- u- o1 Q# ~
4-14 登录和退出:安全值校验和防篡改
( R' t7 G; N$ G3 R7 B' Q: s- c! O1 {% s5 l, [$ u% [. w# Z
第5章 后台功能开发【体侧运动,运筹帷幄】
+ u) v; o, ]- _5 T一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
( r) o: O4 y, W( w* C; I5-1 后台功能开发介绍" d; @) r& h* a6 f. S" O' S) ^" c
5-2 页面模板和AdminController
: Z, K8 z7 K  ]# [: v' h, o5-3 奖品管理实现(上)9 p+ o; ?7 A5 a) _) `
5-4 奖品管理实现(中)
2 o# e" Q) g2 B3 V' V: h5-5 奖品管理实现(下)
" e! A+ V2 `% C- N( z4 F2 ]9 b5-6 优惠券管理实现(上)
: I7 b+ H: q% U5-7 优惠券管理实现(下)
% X! R. y! b& o8 _1 x7 K5-8 中奖记录管理" @+ H7 z' Y( j. y% \
5-9 用户管理6 v8 n& r4 k7 _
5-10 IP黑名单管理
% p5 E& r" f6 e- |1 \. ]  j- I: i% J7 e& D: s4 ^
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
! h9 P  B) E/ _, V本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
2 N7 f$ C$ [- V9 T. V6-1 抽奖接口开发细节分析0 G% U; Z4 A5 N* r4 K6 }; S
6-2 用户并发操作的锁
' |% y5 w4 R8 ]) k, S9 R6-3 验证用户、IP今日参与次数(上)9 c8 s# K5 ~+ t# F/ ^2 x
6-4 验证用户、IP今日参与次数(下)5 b5 I% u# f7 G- _* R$ n- ?' N5 f' |
6-5 用户、IP黑名单的处理) p8 L( }# K. H3 y" d
6-6 抽奖的实现
  w0 e( I1 A8 j0 r( o& U4 _0 c6-7 发奖的实现+ k$ }6 \1 F9 K
6-8 中奖记录和返回结果
/ \# n2 C( c* t* |. n; N+ h* f" ^6 p( |" v
第7章 使用redis缓存优化【全身运动,升级版本】+ ]3 c) [5 ?8 `  G) |/ N
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。9 b) d9 Z) K- `( E. ?
7-1 分析_奖品数据全量缓存7 Z. F2 J) N  m4 h2 N* Y$ T
7-2 实现_奖品数据全量缓存(上)
$ o. E# F/ j- w: A% X( n/ {7-3 实现_奖品数据全量缓存(下), z+ E0 D8 C8 @
7-4 分析_单个用户数据部分缓存
1 K3 I/ r0 w' N3 W0 _. e. h" @7-5 实现_单个用户数据部分缓存: y" v! d1 i% H, P" l& z" @
7-6 分析_IP黑名单数据缓存
  N/ O" }& G. H' i* `' Z7-7 实现_IP黑名单数据缓存
; ?9 ^# q9 v& J! ?: K) g7-8 优化IP今日抽奖次数" ]9 t; ?/ F; V% }
7-9 优化用户今日抽奖次数
0 r3 L. V) g9 V# l- r7-10 用户今日抽奖次数(上)
6 w( C' {; ^& r5 T- O7-11 用户今日抽奖次数(下)- l9 l! [9 t: S" E% a6 ]! E1 x5 A
7-12 为什么使用奖品池" t; }8 S/ d1 k" J* T
7-13 初步使用奖品池
2 |- c7 v2 S5 p: O6 K7-14 分析_优惠券的全量缓存/ Q$ M/ ^6 B! s, g' o1 i4 ^; @
7-15 实现_优惠券的全量缓存(上)! F8 e" |, C3 W  @5 @0 k
7-16 实现_优惠券的全量缓存(下)
4 u% l; C% b6 j9 P5 M2 [$ K& k/ D7-17 使用redis优化总结
: R  j  r$ Z8 X5 f2 @
2 O- s: r& ?3 [2 C第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】( P1 B0 W8 N0 V" T
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
: X: P3 V+ v4 B/ Q; \4 |$ j8-1 发奖计划设计分析
6 z5 E5 l( i) e: n8 Q# n8-2 实现发奖计划(上)8 |' F# Y* s' z* r
8-3 实现发奖计划(中)( i& B1 @* J. i& E
8-4 实现发奖计划(下)
  Y: F2 r% _# o) j4 \8-5 自动填充奖品池分析: `/ ]3 y3 @! A! Q! H
8-6 实现奖品池(上)( s) g2 o' Q+ T" I7 H3 ?# J5 s
8-7 实现奖品池(下)" D6 P* {; Q& o( @8 Y$ Z  f' @
8-8 总结发奖计划和奖品池
  J  m' ~: @7 J% l/ p! D5 a+ t. T) u0 Z+ @& w
第9章 完整性演示以及更多总结【整理运动,整体交付】
+ P% s; j& v1 D) D实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...( n# }7 Q  ^* W5 ^
9-1 前端大转盘分析9 ?" i  \( s$ A% w1 V+ J, O) K* b, q
9-2 前端大转盘效果实现9 E2 y1 ^* Q$ R: J* Q
9-3 优化奖品设置分析$ i7 A/ E4 E' d1 F0 f/ H
9-4 优化发放奖品分析' E2 ^7 a1 R9 p+ d+ F
9-5 再来一次压力测试吧3 p$ a4 s6 Z" X$ Z
9-6 压力测试, ^: _" @/ j& r6 i& O; h
9-7 更多运营策略
# j4 B1 M2 l+ H/ k1 y$ I- f2 c4 m) P8 t: v% L: T
第10章 引入thrift框架【附加运动,扩展服务】+ ^: K% _. H; F7 K1 ?
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。5 Y/ Y4 ~5 U3 S( ]. V$ P3 @7 j3 [  r
10-1 了解thrift! A( ~; \; y; P3 k3 l
10-2 定义thrift文件
( q. }' \; b( Q, m10-3 生成代码
) `: {8 L# |$ ]; y+ @10-4 服务端接口(上)
" ^3 z3 ], N) g7 r, g, ^- e# r10-5 服务端接口(中)3 I. D$ V* F1 t+ x
10-6 服务端接口(下)
  f8 ~1 W- k: F2 ~; @6 O7 k10-7 客户端接口& l7 b! f& Q: O! f4 L
10-8 总结
  B; O# X. h) L3 a
/ S' O: D* A. O- o. X0 K& t第11章 课程总结【结束,沉淀】
+ \$ _8 B; D# B0 j  L0 e! O对课程进行总结
8 }7 g& `' a( v( R3 H; F7 J. o. V11-1 问题与思考! P2 p8 a& r) @5 W' o+ Q! C
11-2 课程总结% N; i1 e+ o% @3 N$ E
4 c+ f! \0 \4 ~  @' h& s/ ^2 s1 I
〖下载地址〗
& q- w! t# H5 J0 h
游客,如果您要查看本帖隐藏内容请回复

9 J, X0 ~# V. }8 v( d* b, F
# P: ]# Z6 a- w& `
1 l5 Z  W6 Y; q
回复

使用道具 举报

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' x8 Y) ]# u" f! G9 A
你这个是可以在线看的吗
* K* q) l$ W0 _, l% n
可以的
5 c9 c* f8 X: Z  `6 C6 e7 a+ ]
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则