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

  [复制链接]
查看8381 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
$ a! K: d# F  _( @' W6 P8 ~( d〖课程介绍〗
. X# C- e! X0 W% L: `抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
/ t% X4 w) h% V, ?1 {, t3 v5 @
8 J; P3 m' f# u/ [〖课程目录〗. s3 b: [4 k% ^, Q& A( b" |
第1章 课程介绍【预备,初识】: Z" Z2 S: j% H+ z5 d
课程内容的整体介绍以及学习建议。2 o. x3 N* J/ F0 |% t5 u
1-1 Go抽奖系统导学 试看
2 p* M2 x0 ^! `# t+ c
$ L( |/ Y- v$ ~: M8 Q/ ?: U) r! {第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
) K& T( V3 K. t& s$ q8 ^) N& t看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...1 e4 I5 j1 i' P' F
2-1 年会抽奖_实现分析5 o6 A6 j- g1 @; a3 V5 B$ V0 N5 A0 e
2-2 年会抽奖基本功能实现
" E: u: {9 ~9 `2-3 编写web单元测试和并发安全问题
$ R! E& v  ^1 _1 L2-4 用互斥锁解决并发安全问题' B, r6 i; v# `; P, X0 r+ h
2-5 彩票_实现分析; a) H" i+ O9 P. v
2-6 刮刮乐和双色球 试看
6 Q9 y. j0 i/ K1 H! o8 h5 Y2-7 微信摇一摇_实现分析
' p2 ~5 M' T. f9 H( |! }2-8 微信摇一摇实现(上)& Q1 D5 y, [4 F+ T8 u
2-9 微信摇一摇实现(下): b+ S; I! {' j8 v) w9 _  X
2-10 bug修复和压测/ K) d8 c* l& Y! F3 N$ A% g
2-11 支付宝集福卡_实现分析
# ^2 Q4 H. X* M* u( T, ^* J1 \2-12 支付宝集福卡实现9 D2 }4 X- p4 d# X7 k( p6 ?7 g2 W7 s4 |/ e
2-13 微博抢红包_实现分析3 [+ `  I8 w  {, R6 G& _" b
2-14 实现发红包
' p4 r7 z( k6 ]. E7 P2-15 实现抢红包
7 X: u6 g0 t5 f9 ~1 m. c1 @2-16 均衡问题和sync.Map解决异常1 ^5 Y4 u* D- B. V# `
2-17 改用chan的方式解决并发安全问题$ P, ]$ M# Z0 O( h0 G2 s
2-18 再次压测验证和优化改造  o7 f. x( y# f2 {( Q
2-19 抽奖大转盘_实现分析& b* U- B1 R( W. _. c7 N
2-20 抽奖大转盘初步实现/ [: `; z2 q) B# ^6 N7 T
2-21 sync.Mutex和atomic改造性能对比
0 L) f: N0 @1 x; `0 @3 J$ F2-22 六种抽奖活动总结+ y5 ?' v8 i# t  S3 k
2-23 并发编程与锁的底层原理
! r( M* I4 @( Q& F2-24 高并发和高性能系统中锁的影响与解决办法
' S5 F* ]* T* |5 ~% w2-25 阶段任务9 o" l$ t+ \7 m& e& {8 @! P

2 T( O! S- I9 _  w第3章 系统设计和架构设计【扩胸运动,有容乃大】
2 f$ j' l! z) {本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
4 B  y2 Y8 X$ }% b, E. n6 ]- v3-1 需求整理和提炼9 d/ U2 C# I! {% P
3-2 用户操作和业务流程
9 H0 }. t1 O0 a$ e3-3 数据库设计
$ s) E' |# s1 y+ i, E3-4 缓存设计 试看
* ]' K: \! N9 i- o# s' D3-5 系统架构设计' L" }4 b% X5 m* R
3-6 系统设计和架构设计总结
+ L2 ?' Z) v* {0 _6 r2 H. e3-7 高性能程序设计,缓存为王1 a  M1 w7 h7 \5 a2 R) ]+ j+ j) t. Z
3-8 系统架构升级之道,关注关键服务依赖
; {5 n% s1 `5 p, w; h1 _$ F3-9 阶段任务
1 T# F0 G3 M: ]* [2 \( x. E, {
) Z; a3 b: u1 |8 j) ]; F第4章 项目框架与核心代码【踢腿运动,固若磐石】
" H/ v/ k% x. V( x- |& s本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
% ]/ `" s1 k+ F4-1 项目框架搭建
3 W) T& H3 L* a2 |. ~$ \% W4-2 数据模型的生成
) j: y, s& h3 ~; N4-3 核心的dao和service类
/ S/ {& ]" Z8 F) L4-4 定义dao
& V: k7 q) U, {2 O; W4-5 定义service
" c/ f8 l9 ]2 Q# e/ H4-6 定义数据库和redis配置信息5 }: T: U$ `+ c- v6 ]3 T
4-7 创建数据库实例及其要点
$ c" a% o# W% G1 J# O8 I6 i! M4-8 创建redis实例及其要点
( y6 Y* A$ M* |: S* j! b& M4-9 利用iris建立web站点+ m) Y' s# e2 h) N! r. [) B5 s. [+ v
4-10 项目配置和通用方法; C+ G6 Z" H% M( ~
4-11 web站点初始化构建0 d3 e. `; Z' p% C2 @
4-12 实现IndexController, E: h' ?* U" W* d- Z0 |5 Q
4-13 完善路由和main.go文件
( G. \/ h+ [' q! p/ g* p  s4-14 登录和退出:安全值校验和防篡改" W. Y7 e4 @' [. J& \1 k

3 t: a' I& y% h! ~( _第5章 后台功能开发【体侧运动,运筹帷幄】
: R9 f" n. C( r  C一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。) b7 f  l+ ~& S1 Y0 j# d& f
5-1 后台功能开发介绍
# G8 [: E; B3 S; R: v' U5-2 页面模板和AdminController
: J$ K% n2 U, u' g6 E+ P5-3 奖品管理实现(上)  G: c  @+ L: {3 w1 X) J+ _
5-4 奖品管理实现(中)
% }  Z' A6 P+ U- u4 w0 t3 C# D4 q6 N& L5-5 奖品管理实现(下)
: k- b( o% @# v3 X6 b5-6 优惠券管理实现(上)5 c% j! p! F6 [& \$ Q7 n6 ]+ A7 `0 Y
5-7 优惠券管理实现(下); H. K8 b9 O$ X1 J; p2 \/ D  Y
5-8 中奖记录管理6 a" s4 _/ K4 z6 i6 l& p
5-9 用户管理  F. U" O& J5 K
5-10 IP黑名单管理! w1 b) _0 j& a2 e0 [* h

' C8 ~* ^6 ]4 U+ M第6章 基于mysql的抽奖功能开发【体转运动,基础版本】# D: q& G$ X/ W  k% f. h
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
( y: r$ M, \! c8 W2 p6-1 抽奖接口开发细节分析
( d3 @$ e2 x+ r: w. q9 k( u, ~$ [! ^6-2 用户并发操作的锁
' M! X4 L% G; K9 _6 ~9 }/ J6-3 验证用户、IP今日参与次数(上)4 @3 G7 h* R' @+ Z- v0 |- s/ a
6-4 验证用户、IP今日参与次数(下)
" |  X& b$ a7 E6-5 用户、IP黑名单的处理0 g- W8 N2 y# K. b6 [
6-6 抽奖的实现
3 b/ p8 r8 N% U) q9 l! n% [0 h6-7 发奖的实现
) d7 `' Q  K  |) }; T  p! A6-8 中奖记录和返回结果
8 u1 m: Q. X+ E" Q' q' R# X2 x, T( S: `0 l$ s. r+ s4 U: N
第7章 使用redis缓存优化【全身运动,升级版本】% k9 H  F% @; Q) _( ^
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。7 R- t* ^* @9 A3 R7 j
7-1 分析_奖品数据全量缓存1 M0 R$ E4 K; |' E
7-2 实现_奖品数据全量缓存(上)' T2 x: @- X. R( v8 z  `
7-3 实现_奖品数据全量缓存(下)
- X  @+ i! P6 u3 n' }* @2 R7-4 分析_单个用户数据部分缓存
, E8 `' d$ l2 C7-5 实现_单个用户数据部分缓存+ t2 e# Z+ \5 S% c
7-6 分析_IP黑名单数据缓存
7 S$ I" g2 P8 A7-7 实现_IP黑名单数据缓存" F& n# t# p2 B
7-8 优化IP今日抽奖次数
" k( G3 A9 C% Z. e. r7-9 优化用户今日抽奖次数
8 _1 J& X- x1 a. Y# W( p2 p7-10 用户今日抽奖次数(上)
8 c# e. ~: Z. f( C4 M7-11 用户今日抽奖次数(下)' ^$ S& M; h/ I' g# ]: ?
7-12 为什么使用奖品池
$ @( D' e$ n0 W$ x# b3 y9 b) V  L7-13 初步使用奖品池
6 U5 O# u! n& B. ]6 y; X9 _7 l7-14 分析_优惠券的全量缓存( @4 P6 h5 @5 t+ J5 L
7-15 实现_优惠券的全量缓存(上)4 [: _# p4 X* J0 ]3 @3 r: Z
7-16 实现_优惠券的全量缓存(下). _) F: ~$ h9 }. e+ A
7-17 使用redis优化总结& S) S8 G3 Y2 B5 |

* ^7 J- D7 [3 T第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】" R& E5 q5 m0 Y: M
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
, C: k! @0 ?8 [$ v: p8-1 发奖计划设计分析! W3 Q5 }" |& v" c  J
8-2 实现发奖计划(上)
4 j  [8 M5 y! ~$ n8-3 实现发奖计划(中)' q! n/ a. j: w: W4 j
8-4 实现发奖计划(下)
5 F. Z- }5 H; d' d2 @8-5 自动填充奖品池分析) K& |4 d- W2 z, @/ _
8-6 实现奖品池(上)+ @! B2 c9 d3 N  o( }* g: @
8-7 实现奖品池(下)
! V8 @& w0 P/ B2 l# O' f8-8 总结发奖计划和奖品池
, y) b' i# v1 c2 m: U* F0 N5 _0 e# U! s, {
第9章 完整性演示以及更多总结【整理运动,整体交付】
4 _  U  Y1 z' C' p% H" ~实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...' V' R9 a! _4 ^8 ~) v: K4 I6 e1 U7 x
9-1 前端大转盘分析8 A( L5 ?+ v6 k  x
9-2 前端大转盘效果实现( y9 R& v5 y6 k3 P% Z8 a) ?) r
9-3 优化奖品设置分析
- n2 Y! R1 M# Q  s7 N+ R9-4 优化发放奖品分析
; d+ H2 Q3 c$ V& A# k/ q9-5 再来一次压力测试吧
4 f  q: t' t6 Z: ]3 q+ c9-6 压力测试
6 R! v1 q$ _) L3 s8 C  F9-7 更多运营策略' U4 F! ^9 D* ]1 F; T1 z: p
3 T# i0 ^% s9 p9 D  ~+ e: b  ?7 s
第10章 引入thrift框架【附加运动,扩展服务】+ N( V/ x  j* ]" d  @2 ~
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
8 k% F# g9 B6 D0 ^1 j10-1 了解thrift1 R2 {3 ]: m* i
10-2 定义thrift文件
1 Z  l; F# {' ?4 D: U  o10-3 生成代码4 e1 s4 {  I1 M) t7 k. w
10-4 服务端接口(上)
5 c) J6 K8 H7 r* x& h) p10-5 服务端接口(中)6 v: N; \2 e( W6 o1 ?: k3 {
10-6 服务端接口(下)
" u& k5 s; L  o- A6 c) w8 P10-7 客户端接口
! M+ k0 ?8 b/ L6 N6 G: }( f. K3 \10-8 总结% ?2 J& L. T# g0 E. u
" `  w3 T7 V6 h7 m
第11章 课程总结【结束,沉淀】
+ r0 O) A6 e% h8 X: ]对课程进行总结5 e) F6 Q% [' k' b' |, [
11-1 问题与思考& N! S, b- ~1 c6 X2 i! c/ y& }* b
11-2 课程总结
% `7 K- r' }6 y$ C! V1 K* E3 r' k0 x) ]% ~1 k
〖下载地址〗
+ w+ L/ J0 e; D4 c% Z/ R2 C
游客,如果您要查看本帖隐藏内容请回复
4 p' i, t) ?+ B* g* P, H0 I
  f5 h: h5 t' ^, d$ D0 F' }

4 v5 ]' N9 E9 ]* 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! H& Q6 ]9 u) \$ I1 ~* ^2 h' m
你这个是可以在线看的吗
8 N* W, s9 Q3 _; _9 O
可以的! Y+ r( z* t! O8 ~" G5 i/ M
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则