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

  [复制链接]
查看25091 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
- M+ A* P4 I: W! I) }" b〖课程介绍〗# k' z2 E7 ?1 C% r( |; {
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
0 a3 a4 e  j4 C& N, l0 S, D
" n) C+ P, C/ k〖课程目录〗
, a( V' h2 g: T/ u1 D( q7 \第1章 课程介绍【预备,初识】
3 P7 F' q+ g9 W7 W4 x课程内容的整体介绍以及学习建议。
6 B7 p% x% Y/ X/ K& g1-1 Go抽奖系统导学 试看. p4 e- l$ p1 D* S  C6 e- c

0 H1 U- S1 d7 s' q第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】: [( P0 L7 \" q% G5 ^2 U8 n0 n0 K# n
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...7 a4 G$ {& I; C. R8 m
2-1 年会抽奖_实现分析  W0 H6 m/ q# a8 Y( C
2-2 年会抽奖基本功能实现. G+ i/ u  r" n$ m& d
2-3 编写web单元测试和并发安全问题
9 s: b( x9 u4 ]7 s3 x9 A8 f2 e2-4 用互斥锁解决并发安全问题
0 }( T7 }+ {/ L8 Q8 b2-5 彩票_实现分析* I  ?' v6 ]; h$ a9 A7 ~6 Y
2-6 刮刮乐和双色球 试看& H* |# p3 H3 U  ^0 Z( a2 {5 U. ~
2-7 微信摇一摇_实现分析
) R# m; T+ F% v5 @2-8 微信摇一摇实现(上)
" ]$ Z2 I1 _  w' n/ z2-9 微信摇一摇实现(下)
' s5 P' }0 Q0 d8 I! o2-10 bug修复和压测: j; B( ]" t7 k2 m1 {  q
2-11 支付宝集福卡_实现分析2 u. Y8 Q- I, q) x* _8 z
2-12 支付宝集福卡实现9 }3 B+ K$ q0 Y2 Y" \' f
2-13 微博抢红包_实现分析
* R# r* U# x1 `( k' n" h) x2-14 实现发红包
; Y1 q$ U+ l( w# b2-15 实现抢红包) X: F# F5 h& b1 N; B1 E2 U% I+ R
2-16 均衡问题和sync.Map解决异常, N7 L2 p2 t( g& O) X$ a% g
2-17 改用chan的方式解决并发安全问题
$ {# k3 n# f# K7 y2-18 再次压测验证和优化改造+ Z0 `* H2 \3 h+ }  f1 b
2-19 抽奖大转盘_实现分析) I) W8 a: d$ [$ z0 S
2-20 抽奖大转盘初步实现: n# \& {% q4 Z* Z7 s- k
2-21 sync.Mutex和atomic改造性能对比
* i$ l! v, u! L5 S. |9 K6 ]' C2-22 六种抽奖活动总结* K/ |1 D, a1 g
2-23 并发编程与锁的底层原理
9 q: A, i; r' Y1 g; N, x2-24 高并发和高性能系统中锁的影响与解决办法
, J2 \6 ~. I5 |: b: f6 S, d0 V2-25 阶段任务
2 V( E, {2 a$ e: e  `5 H) n2 n1 p% p" N, k8 `
第3章 系统设计和架构设计【扩胸运动,有容乃大】6 C" L: N. b0 k; ^
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
" o( ~6 `: J/ L9 A; H/ ?3-1 需求整理和提炼) Y3 U7 N( v4 V% b( ]# e
3-2 用户操作和业务流程7 v9 B3 W  ^9 p1 z- [
3-3 数据库设计
) r! e% f* A7 @7 I8 i3-4 缓存设计 试看( R( V: b! |. J5 Y+ X  l
3-5 系统架构设计
/ U$ [6 }/ [; N; F3-6 系统设计和架构设计总结
5 `' {: W" x  m5 {; [1 _3-7 高性能程序设计,缓存为王3 ^; f3 b% z' y
3-8 系统架构升级之道,关注关键服务依赖* B  l$ y6 m. p: b
3-9 阶段任务
$ [9 D' [8 z" i( V8 R: _
9 z& ]+ |1 |# q3 `" |0 S; h" N" }第4章 项目框架与核心代码【踢腿运动,固若磐石】
2 M5 }* Y/ V( \' X" h  K本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。1 l/ t7 U; L/ v) [+ `+ i
4-1 项目框架搭建
  H. M6 n8 U. Q+ [  o4-2 数据模型的生成' z2 ]+ V. b3 W2 r( G
4-3 核心的dao和service类
( l. w0 R* f! _6 G: f1 V( E4-4 定义dao
& ]& q% l! z/ R* z; m4-5 定义service
; L( N- B5 z6 k1 k3 l0 T3 J4-6 定义数据库和redis配置信息+ X6 u5 X, x8 y% N
4-7 创建数据库实例及其要点8 ~1 U$ d2 j( D: I# s
4-8 创建redis实例及其要点
$ k; _3 g+ O2 H# O5 h4-9 利用iris建立web站点
# i) v9 H4 R% w8 q0 T/ _, O! T4-10 项目配置和通用方法+ j! \+ v# M" t9 ~& Y7 c
4-11 web站点初始化构建( t  Y& w4 V4 ]2 u2 W- q+ Q) z
4-12 实现IndexController
. Q- M3 A; w7 ~- K! s) _3 m4-13 完善路由和main.go文件
, S7 g  P+ k) W2 b1 W, ~. g4-14 登录和退出:安全值校验和防篡改
) ?: j3 ~$ y* V* E) ~* U( v: [- O) ~7 J2 c. @" n
第5章 后台功能开发【体侧运动,运筹帷幄】! y( n$ h7 M9 r: n+ a6 J
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。$ D) d4 R7 L5 S$ [
5-1 后台功能开发介绍9 b4 r% i3 K: h
5-2 页面模板和AdminController+ q* b6 B" H8 w$ y" h6 n0 `: ]
5-3 奖品管理实现(上)7 T5 J( W! B* Q# F1 a# c$ Z
5-4 奖品管理实现(中)5 k. P6 V/ r4 n' l, U- Y+ g1 Y6 q
5-5 奖品管理实现(下)$ U4 @3 h2 X) W, `( C2 [
5-6 优惠券管理实现(上); q0 |6 X# X, i2 [' ^# a# P1 a
5-7 优惠券管理实现(下)
, D. S" V8 Q/ |0 K5-8 中奖记录管理
2 }2 \: ~& d* x3 [5-9 用户管理
: i( V! i' }; y1 b: r  H* B5-10 IP黑名单管理* ^- r# ?  [: y. ~3 {9 q$ j8 p

5 M' x5 \, j- w7 h第6章 基于mysql的抽奖功能开发【体转运动,基础版本】- ]7 q5 A. u1 Z( m# ~8 q
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
: W& p: k8 s+ ^6-1 抽奖接口开发细节分析) B7 e/ ^2 T& h
6-2 用户并发操作的锁
% t* o1 f: Y' h+ t2 F3 P" q) h$ H  y6-3 验证用户、IP今日参与次数(上)1 v# S. y  O, t, ?& Q) y: C
6-4 验证用户、IP今日参与次数(下): y0 X4 W6 B- f& M* ^+ Q1 c
6-5 用户、IP黑名单的处理  M( m0 F) f5 _) r
6-6 抽奖的实现5 ^% {4 @5 [, O0 X3 _
6-7 发奖的实现3 A; u( x; ]  h  `3 A- v
6-8 中奖记录和返回结果" v( P  R+ Y* X. |! W! y/ j

/ o7 \$ u# c2 c6 I1 t$ ]6 `3 f第7章 使用redis缓存优化【全身运动,升级版本】& l! T" U& t2 M
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
- M2 ]1 o' _7 @* ^, D7 |  E6 Z7-1 分析_奖品数据全量缓存+ Z. s, c% H/ z9 M, ]
7-2 实现_奖品数据全量缓存(上)% a! x3 o) S3 m- m& u
7-3 实现_奖品数据全量缓存(下)
( p; V, ?" |  z- a& T# o; M7-4 分析_单个用户数据部分缓存
' H/ v% s1 _' u' B7-5 实现_单个用户数据部分缓存
" R9 h& Z1 u- l) g8 Z2 |, V& k7-6 分析_IP黑名单数据缓存5 e; L7 `: R1 ~
7-7 实现_IP黑名单数据缓存; y* J( |" @2 r  U1 t
7-8 优化IP今日抽奖次数6 y% D* S& u0 D
7-9 优化用户今日抽奖次数
4 \7 r1 t" R  U  ~8 \6 Z7-10 用户今日抽奖次数(上)
+ y/ W8 B% }" W7 O9 g7-11 用户今日抽奖次数(下)
: g1 l& v; W' C# s% K! C) O9 L% F1 h7-12 为什么使用奖品池* P- B6 Z+ e# ^) v( u& Z* p/ t
7-13 初步使用奖品池
. Q/ M. r( [( s- N$ _( H7-14 分析_优惠券的全量缓存/ \7 }  h: d0 z$ C& L4 U
7-15 实现_优惠券的全量缓存(上)3 e9 e- L- D. Y0 x. V) q- V/ M2 `1 N
7-16 实现_优惠券的全量缓存(下). u8 T, @, I- H9 S; ]+ p) y
7-17 使用redis优化总结0 E4 _0 m1 I3 ~; t4 P

+ e4 X8 o( A6 A  G3 v& `5 I第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】( K: h' ~2 i+ O  g! k* p8 W6 d
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
/ ]+ z# [2 `. \* q2 j/ x8-1 发奖计划设计分析  a- L2 C5 k) F6 T1 M2 X* u" U+ @
8-2 实现发奖计划(上)- [0 [' M( x# F( D2 X% B1 F% s. M8 K
8-3 实现发奖计划(中)
3 w% S' }9 Z+ x" ^$ i* o: w9 W8-4 实现发奖计划(下)3 A$ _2 \$ F) p" a6 R
8-5 自动填充奖品池分析
  {% ?$ Z' `6 @+ W6 B. I6 ?0 |8-6 实现奖品池(上)
$ c% [1 M. L4 }* ]8-7 实现奖品池(下)+ C! v# b5 j# Y: D9 u
8-8 总结发奖计划和奖品池
2 k, Q' U6 B  p% ?7 e
0 ]" D9 w! G; r第9章 完整性演示以及更多总结【整理运动,整体交付】
0 N/ d; y$ g3 [/ y3 L, o实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
/ R! \. y4 \4 n* G- A9-1 前端大转盘分析" E8 A  p- a( g
9-2 前端大转盘效果实现
; R5 o; ~- U  h! o9 x0 z, ~9-3 优化奖品设置分析, B7 K" w9 x# Y* u+ D
9-4 优化发放奖品分析# e# `& L/ n3 C1 D9 ?' P" L; d6 |: \
9-5 再来一次压力测试吧
1 `; O6 c" G$ w9-6 压力测试' _5 Y2 c! h1 d$ F& y) s$ U: Z- i3 N( M, a
9-7 更多运营策略
5 ]+ Y# c1 I5 j6 D8 Q
3 a2 k4 ?/ p) ]第10章 引入thrift框架【附加运动,扩展服务】
; R2 t7 u5 R7 c+ i4 j5 U通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
+ y7 P4 F- i2 {7 H& `! F$ A- S10-1 了解thrift
& w: Z2 l1 h- M" b+ t; k! A! }) `& f6 ?, P10-2 定义thrift文件) W) e+ t9 A' a
10-3 生成代码
* F" y& c6 i5 u; P) \10-4 服务端接口(上); `, w3 M5 O& \4 L3 O2 t
10-5 服务端接口(中)
9 _, Z( ~4 P9 K6 ]' h/ E; R10-6 服务端接口(下)
4 w& R) F9 z, t" }% c+ y( ~10-7 客户端接口
1 P0 b. l7 F8 x9 d4 b10-8 总结# F1 ?( a: l! t, ~* l- ]
/ L3 m7 Y7 y! v# z1 a& Y
第11章 课程总结【结束,沉淀】
- o. K# H& S! e& J1 g对课程进行总结
/ M4 U6 A% n: Y9 ?# V2 E11-1 问题与思考
5 Q; y2 A6 y. V$ {  ^2 R4 v4 f11-2 课程总结
9 H  {5 Q1 v& J) i0 q+ v1 k* c0 a2 J8 o
〖下载地址〗! j6 {) n" \# C
游客,如果您要查看本帖隐藏内容请回复
- {- l$ J# j6 E
# a' i+ d, b8 y1 f
/ j! U$ ?  m. E4 n' R6 D9 K
回复

使用道具 举报

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( t& |9 O1 e6 b+ ~
你这个是可以在线看的吗

7 A- G! f* L  Y* t( c7 g9 V可以的# u5 G1 R8 |4 k/ r
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则