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

  [复制链接]
查看22504 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg 0 S* H# _' l4 H& |
〖课程介绍〗$ t) w8 H8 r5 f* H# U
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平& t0 ^6 T8 [4 e# l
9 }" r  a; i+ k! N- X
〖课程目录〗& q" v6 |  a3 t' y* U* S7 [: |
第1章 课程介绍【预备,初识】
9 m& [" N/ [; y5 u8 _课程内容的整体介绍以及学习建议。: }" ]5 l" p" P7 U- Z
1-1 Go抽奖系统导学 试看
; t5 k; d* J2 y
' Q7 B6 n9 I: k第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
6 o. o1 [. l( Y9 C: h5 G看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...( b# c, ]% T4 n. {8 s
2-1 年会抽奖_实现分析
9 P( r5 b! u/ Y: T$ ?2-2 年会抽奖基本功能实现" E/ \3 I8 _) D& `
2-3 编写web单元测试和并发安全问题8 d, H4 O6 o7 h; I; |3 o" [6 ~
2-4 用互斥锁解决并发安全问题6 D' p* D7 ^- l0 V% G1 O+ n
2-5 彩票_实现分析
' H' @$ B7 K9 i, `/ l, P$ _. ~2-6 刮刮乐和双色球 试看( U- }/ d/ x5 U& s! Y4 F" U: W
2-7 微信摇一摇_实现分析1 z. l2 ?2 _6 y+ Y
2-8 微信摇一摇实现(上)
# X5 G; C- }" i2-9 微信摇一摇实现(下)
6 x% _1 F, D" z, z. B# c" E2-10 bug修复和压测, z9 f2 c& J/ i: G; T$ x, z: ~1 {
2-11 支付宝集福卡_实现分析
$ q2 C9 b# K; [$ g2-12 支付宝集福卡实现
. }) K4 e5 t% Q1 j: a1 t2-13 微博抢红包_实现分析5 l3 O- F- Z/ t1 ]
2-14 实现发红包" H  g$ l8 \6 G& J
2-15 实现抢红包
) h( t, {+ J6 M2-16 均衡问题和sync.Map解决异常
! w6 Y0 A; ~' k# X: T, ?2-17 改用chan的方式解决并发安全问题
  |9 \& S4 V% o$ b4 w5 u* h2-18 再次压测验证和优化改造5 _) A( v- T8 }- C3 {* K
2-19 抽奖大转盘_实现分析% z( N1 Y6 g/ P: h8 x8 Q' o
2-20 抽奖大转盘初步实现& Q: |7 x8 ~' l9 b
2-21 sync.Mutex和atomic改造性能对比
, X/ |; u. m3 d" Z2-22 六种抽奖活动总结5 W3 O3 Q0 c& C" [  D
2-23 并发编程与锁的底层原理& J" ]! o! S* R$ C; C
2-24 高并发和高性能系统中锁的影响与解决办法8 D" s* ?5 s' z" L, F* _
2-25 阶段任务/ M/ Z+ r' J! D1 _( e
8 _; d" h* F& m0 [7 ]
第3章 系统设计和架构设计【扩胸运动,有容乃大】: V4 D7 p4 p# h4 w; A2 p
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。' l. T- H1 D# K
3-1 需求整理和提炼& h; S6 P8 ^+ J5 m( N
3-2 用户操作和业务流程
0 J# z2 W, r0 z1 c5 k) E3-3 数据库设计
" o7 [: s( S; s% ^& z% a3-4 缓存设计 试看
7 A7 l7 h; n' n) o( N3-5 系统架构设计
) s7 p3 a( `0 n6 |6 F3-6 系统设计和架构设计总结
- l$ S( `5 Z/ G  d3-7 高性能程序设计,缓存为王
' m( w7 s# H, |+ J+ {4 N3-8 系统架构升级之道,关注关键服务依赖# [- O9 J5 I8 A& j, i
3-9 阶段任务
2 A0 F" P: _; J# a+ e. U" f  ?" v- }, d6 `5 K
第4章 项目框架与核心代码【踢腿运动,固若磐石】8 K$ k" f- Z( N$ ]
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
( P0 D1 Z, |" h. k6 i/ ^" [0 a' T) ^4-1 项目框架搭建
0 j) i. J- U0 c: B4 K+ |8 O) C: a4-2 数据模型的生成
. j' L* K' h" A0 ~$ I4-3 核心的dao和service类; W6 z4 {6 ?) O; J% \
4-4 定义dao
& d; |# U: y$ H$ H. G% Q8 w4-5 定义service
  S3 ]0 n  g- _- B% c4-6 定义数据库和redis配置信息, b& ?# @9 x$ f. f% ^
4-7 创建数据库实例及其要点
% {" N; x  D* E2 c4-8 创建redis实例及其要点
/ z7 |+ ^% X- m3 [. l4-9 利用iris建立web站点1 Y. @, l0 S/ h5 w1 e% O5 o
4-10 项目配置和通用方法+ _- X" s! h3 F+ J' i+ A
4-11 web站点初始化构建
* q( a  M* Y7 W3 s4-12 实现IndexController
7 g# d  J7 n3 U! B( |4-13 完善路由和main.go文件1 Q( L. [1 G# G3 b
4-14 登录和退出:安全值校验和防篡改) G: A  d! Y0 M9 C/ ?' I
6 d( m8 _. I5 }" N, l
第5章 后台功能开发【体侧运动,运筹帷幄】2 g: b. {' }" d/ R: d8 [% I+ m
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
$ X5 @+ k9 F9 e. N) `% s5 n5-1 后台功能开发介绍
/ W  X2 v$ I% p& C3 {5-2 页面模板和AdminController
# J# p" {9 t+ g4 x. _* u/ T: l6 \5-3 奖品管理实现(上)" s( P8 ?4 Q: f4 s. x
5-4 奖品管理实现(中)
( m+ c1 {; Q. S* f- ^& I5-5 奖品管理实现(下)8 P2 ~! o0 X4 P
5-6 优惠券管理实现(上)2 U' k9 v  z8 g' e- |, M" k
5-7 优惠券管理实现(下)
7 }7 m+ a) ]. y# |4 \' o; G5-8 中奖记录管理% N  r( t" |- Y6 D
5-9 用户管理
' \" h4 X/ y) c5-10 IP黑名单管理3 G! T" K- h" T/ z' X

- _" F: @) A3 R8 a4 I+ X& c3 j第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
$ n; z  a% u6 _/ s- j" W本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
6 M; b7 V$ j6 {% k6-1 抽奖接口开发细节分析) G# n8 s/ f4 d* @' W; b2 R
6-2 用户并发操作的锁
* S3 x# \' ~1 X/ p. G9 Z+ F  {" ]1 ]6-3 验证用户、IP今日参与次数(上); w; |$ u9 X. \# ~$ U
6-4 验证用户、IP今日参与次数(下)
: m  P" \" K4 h. g: B0 F6-5 用户、IP黑名单的处理+ \3 _8 d1 z/ l6 G( v
6-6 抽奖的实现
# b- _( a% U  j- E$ {; r; E$ h0 k! T  B6-7 发奖的实现
0 Y0 a. T/ C5 C0 y) \% L, l1 R6-8 中奖记录和返回结果* l5 i: _3 S. p1 h
4 B5 V: g( ^' d  k
第7章 使用redis缓存优化【全身运动,升级版本】
5 i: O( X4 U( r9 \) c- w3 `5 ^本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。% H; w8 f; C+ n, ~9 Z
7-1 分析_奖品数据全量缓存' y: k6 @* k5 w6 m
7-2 实现_奖品数据全量缓存(上)
2 l7 E# @9 k$ @  y7-3 实现_奖品数据全量缓存(下)4 g6 e% o& x0 K/ R( Z# `  V' A
7-4 分析_单个用户数据部分缓存
1 r1 d4 J( F, n# ^7-5 实现_单个用户数据部分缓存" a" p- m+ f) ~" u" j+ c6 W# n
7-6 分析_IP黑名单数据缓存2 L8 c6 ]& n' g$ o
7-7 实现_IP黑名单数据缓存  b% Q; N) |, M, o
7-8 优化IP今日抽奖次数( q3 O, b  p7 B- i  b1 h- N
7-9 优化用户今日抽奖次数
* t- o- H+ Y! p! J0 C7-10 用户今日抽奖次数(上)% M! q4 W! v! A# z) p5 i. y
7-11 用户今日抽奖次数(下)
8 H* V, P3 _8 P8 P7-12 为什么使用奖品池
/ K: Q+ _: C% A5 C3 J% e7-13 初步使用奖品池, Y6 W" [% L; _6 `# @
7-14 分析_优惠券的全量缓存. C7 [  O& Y6 k7 a
7-15 实现_优惠券的全量缓存(上)
) G$ L4 D/ A. F# {. h- J7-16 实现_优惠券的全量缓存(下)
! `9 C) d7 D; U0 m# B* k# a1 R7-17 使用redis优化总结/ y+ k* a" V4 B

0 D  N% K* u; G  L# W5 \第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
% t; l' h& o/ i4 R/ T  ?: W本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
! U* H4 B4 W3 x+ ]& v1 N8-1 发奖计划设计分析
3 o, ~$ R" V" k8-2 实现发奖计划(上)
6 K9 Y9 U5 `& J7 T7 K) M8-3 实现发奖计划(中); b; `4 ]& u- C  N% Z& H! P
8-4 实现发奖计划(下)3 W$ X0 p8 a* R2 E$ e6 H# X+ ]
8-5 自动填充奖品池分析
0 G! g# a& A6 |6 x8-6 实现奖品池(上). g2 S6 f! S7 u: R
8-7 实现奖品池(下)+ T  z0 a$ X% A! R9 T- f# I
8-8 总结发奖计划和奖品池
1 W+ n4 D' |* D* @9 K: ]6 d4 J- y5 ~+ W
第9章 完整性演示以及更多总结【整理运动,整体交付】
6 M/ i% h: P  X# I9 O" q' {4 n; C4 P实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...1 _/ K2 X; I( B4 A1 h
9-1 前端大转盘分析
5 M4 N1 W* a  G* L8 Z8 L# a( q7 Y9-2 前端大转盘效果实现
9 h0 O' p# H' L6 L2 I0 Y' w9-3 优化奖品设置分析
: _4 c) P& ]# u: u  ]9-4 优化发放奖品分析
6 o3 _" L( ]* m9-5 再来一次压力测试吧
4 ^9 H6 P7 \+ _7 [- ^9-6 压力测试
* P1 M9 w; w( A0 Z" Q& d9-7 更多运营策略2 u( ~+ i% O! a8 h) J

: t% k1 a* }' Y9 ^第10章 引入thrift框架【附加运动,扩展服务】
6 k/ ~4 L% ^" G5 P2 z通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
. u% B  [# X) z1 ^10-1 了解thrift
: I& j% F5 V% i. o/ p  @5 y10-2 定义thrift文件
! L9 f% Z" }1 ?! o3 E7 b10-3 生成代码) W, _1 F; X6 @0 Q$ ~* ~
10-4 服务端接口(上)
" a/ }* u  c5 j0 h/ V7 M10-5 服务端接口(中)& m/ a5 l% j: |0 k9 F
10-6 服务端接口(下)
' l' j1 Y# n  x9 R& [1 R" h/ @10-7 客户端接口9 v' O6 B  c, f; N: q. J1 R
10-8 总结# X/ g; X( ?7 U* K# Q
$ q3 a" D: z, G, ?4 Q
第11章 课程总结【结束,沉淀】: _, y/ r$ X! _5 T- w  i% Z9 v0 S
对课程进行总结) }8 V- u: G$ M* x; h
11-1 问题与思考) B, K. j) m4 H- A! T2 z( I
11-2 课程总结5 L' ?6 j3 ?, U0 _
8 \" e' C# }% F0 E8 g# `& x/ }
〖下载地址〗
' {0 ~- y4 c- O, h
游客,如果您要查看本帖隐藏内容请回复

; _, @% F) L5 H" Q/ O' z2 Q' j( ~9 M% p! A4 K1 O/ V3 B8 p: ?; S, n( U0 U

7 B% x4 ?# {5 t0 j" ?7 v
回复

使用道具 举报

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
+ |0 x$ [- X0 E* G你这个是可以在线看的吗

8 G* Q, Y0 S+ s; l可以的6 U  D; ~, z/ |
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则