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

  [复制链接]
查看19472 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
' X& e# a# l0 ~〖课程介绍〗$ N- b) p( U! R. g4 o% Q% X
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平' {! ^/ O% r! G3 U

" Z; G% w( q- I+ E' a5 `. V; R〖课程目录〗% `( k1 j7 c$ H" p- @
第1章 课程介绍【预备,初识】
8 n9 X' q) z, `9 n0 A( n课程内容的整体介绍以及学习建议。$ \5 S9 ?/ J  {: l; Q* V7 T
1-1 Go抽奖系统导学 试看
4 F8 n% x. B; [9 R* D0 U+ y
4 B/ L; T  R- j1 O2 w& u第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
' g  @$ Z3 Y: h0 ]看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...( ~# r6 p( G7 [5 r
2-1 年会抽奖_实现分析* Z/ m* F: U+ c/ Q
2-2 年会抽奖基本功能实现
0 \4 ]$ k% ?# h3 D# l# @4 O2-3 编写web单元测试和并发安全问题
( J- h3 b3 ^1 L  O4 k2-4 用互斥锁解决并发安全问题2 ?1 I! o- ?; X; h
2-5 彩票_实现分析
# K' P& e! d9 g1 K" @! O8 k2-6 刮刮乐和双色球 试看% R" K& W, T1 N- x
2-7 微信摇一摇_实现分析9 c+ i) F+ A2 X4 o
2-8 微信摇一摇实现(上)7 J: z+ ~; V% u* G' G: y: M
2-9 微信摇一摇实现(下)+ H8 R) a, G' j0 t! K
2-10 bug修复和压测: K4 ^6 T  `5 e7 v$ V
2-11 支付宝集福卡_实现分析
4 a0 @# I, L  J, w: L1 g8 r2-12 支付宝集福卡实现
6 O/ ?( l/ _) f& ]2-13 微博抢红包_实现分析! X8 d5 I0 I0 @: q
2-14 实现发红包
4 o. ]7 N9 S9 I; _: W2-15 实现抢红包. H) z) l- |) R
2-16 均衡问题和sync.Map解决异常6 \2 Q; B1 ~- W: a4 U
2-17 改用chan的方式解决并发安全问题% P2 D# b* U- G( b6 N
2-18 再次压测验证和优化改造
- x/ Q) m" \" d  S/ p5 v0 T8 r2-19 抽奖大转盘_实现分析
+ M( i: L8 F( B% O$ V" g7 X7 Z- z! D2-20 抽奖大转盘初步实现
4 @) P6 T) a  p+ F$ R2-21 sync.Mutex和atomic改造性能对比
) A$ z9 }( v! m! }! B  j2-22 六种抽奖活动总结
2 m1 B: }& ]! z9 E2-23 并发编程与锁的底层原理' j, H2 p' l% w4 H6 O; s) ]7 x& l2 S
2-24 高并发和高性能系统中锁的影响与解决办法; b1 I; ~, {. {& u9 ]. K5 ]
2-25 阶段任务
% X# u$ d7 G; M0 x0 B
! H! ~4 C3 w3 z; T第3章 系统设计和架构设计【扩胸运动,有容乃大】/ I. [! l: Z; }
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
0 Y& N3 t1 ~$ s* V( }3-1 需求整理和提炼
7 a) G# a2 J" @4 Z' v5 u3-2 用户操作和业务流程
( l5 B. o# X5 d. |2 D  v3-3 数据库设计
! G9 ~0 u+ s* x/ i' T: n3-4 缓存设计 试看
- o9 N; t1 k% j* W7 A3-5 系统架构设计
" }3 `+ E7 F) I, O' x3-6 系统设计和架构设计总结
: X4 I) g( v1 c# F3-7 高性能程序设计,缓存为王
2 k9 o+ u& f5 A0 `3-8 系统架构升级之道,关注关键服务依赖
7 U" h$ v. X, y7 {2 I3-9 阶段任务
2 C; r5 ^4 Z; K& l2 }+ i
1 q8 F; _, M( i" e5 V" B/ g第4章 项目框架与核心代码【踢腿运动,固若磐石】- ]/ P# m6 F2 X( x" ~) w
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
% I8 I, x. q. {0 h0 h4-1 项目框架搭建
# Z# p# o* B9 ]7 U( c8 G! ]5 H4-2 数据模型的生成
( J# j. v5 J  I+ B1 n/ D1 `/ `, e4-3 核心的dao和service类0 r0 ]& E$ r8 C* f6 {
4-4 定义dao3 K* x3 q- y0 F' K( \. {
4-5 定义service
  ]" O( m+ h7 t% j0 n# O) c4-6 定义数据库和redis配置信息- f) K# ]( [9 p6 ~
4-7 创建数据库实例及其要点
/ V" l" O+ B4 z0 ^+ K4-8 创建redis实例及其要点
! |' E5 H+ Y% g4-9 利用iris建立web站点
2 Q) {9 j+ \8 I: S4-10 项目配置和通用方法
! Z5 f) y7 A$ {  F! G  T0 P  n, o: N4-11 web站点初始化构建
. Z% k, A' y8 f) Z, w) J4-12 实现IndexController/ C( m% `3 K, y: f% F8 F2 f
4-13 完善路由和main.go文件
3 O8 f! \, v5 {' ^: _7 W+ @7 a6 b7 q4-14 登录和退出:安全值校验和防篡改! U3 o/ N5 J# k2 {8 o# y% I1 A

: u5 i4 g0 o# l2 S9 E第5章 后台功能开发【体侧运动,运筹帷幄】
+ r4 b' Z2 y: ^一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。) ?1 \. j9 ?* ?1 Z. o; `
5-1 后台功能开发介绍( V4 c& x5 E) ?) A3 s+ \
5-2 页面模板和AdminController! a- {: N3 f- w6 m$ d  Z# n* o9 W4 ~
5-3 奖品管理实现(上)! H7 M4 u" `( j# {1 v" r
5-4 奖品管理实现(中)
& d7 i: ?, U9 V5-5 奖品管理实现(下)) l: R% k) X) _6 Q8 o
5-6 优惠券管理实现(上)2 Q; `6 G- d; u" @$ `& R: b
5-7 优惠券管理实现(下)+ V$ l4 u( I6 t
5-8 中奖记录管理
8 D  }+ W+ W% Y* O! t5-9 用户管理
" ?% d! j; ]5 y7 D5-10 IP黑名单管理  n! V  T- F9 W; b6 j$ R  M) K$ N

/ R! U* e$ p" p  G第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
4 g' l9 t0 l! G. L7 z5 u4 M6 l: I0 y本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。- c8 z* p: e# ~7 g4 D
6-1 抽奖接口开发细节分析2 P! s. a' J& [5 c
6-2 用户并发操作的锁7 ^  D9 y, M: W
6-3 验证用户、IP今日参与次数(上)/ X) n2 Q9 o. l
6-4 验证用户、IP今日参与次数(下)
- S' \0 S0 k/ f1 L  s# U* Z) ~6-5 用户、IP黑名单的处理+ T( h* K) L: a& @+ y- O" ?% {
6-6 抽奖的实现
* R0 m8 Y; u, z5 E& J6-7 发奖的实现; ^/ f( \' a* P' z" K) @
6-8 中奖记录和返回结果
$ o' [! X6 _2 ^  M  P2 ^- p8 Y
第7章 使用redis缓存优化【全身运动,升级版本】" R6 K  }1 T$ W$ I$ }% M& O( x
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
% u' b" N! v9 ^  G6 _7-1 分析_奖品数据全量缓存
( t9 `1 j. F4 o  [5 D7-2 实现_奖品数据全量缓存(上)
7 v" n0 z# w; k3 P' c7-3 实现_奖品数据全量缓存(下)) \- y! X6 ~3 q) ?/ W
7-4 分析_单个用户数据部分缓存
0 J6 P" C, Y2 s; e7 B# Q+ r# c7-5 实现_单个用户数据部分缓存
% p  Q  G0 _2 V# z! o6 W7-6 分析_IP黑名单数据缓存, W' Y1 N$ c3 {& N8 k2 ]& z" w
7-7 实现_IP黑名单数据缓存
) D3 _& I4 [2 t5 R5 i6 G9 Q7-8 优化IP今日抽奖次数
+ b& u' m! n. j; m/ a7-9 优化用户今日抽奖次数" p* K+ J# Q) z7 W' T
7-10 用户今日抽奖次数(上)
, C' B; D3 Y4 R2 A7-11 用户今日抽奖次数(下)
3 L$ L/ I- S: l5 m. e1 n2 y7-12 为什么使用奖品池8 K  q0 [( o! d
7-13 初步使用奖品池
! @/ k" K8 {" Q0 F7-14 分析_优惠券的全量缓存
1 d6 r4 D5 o# s$ E$ E5 E% {8 j* V7-15 实现_优惠券的全量缓存(上)
4 |3 ?: P$ F4 `# L+ j3 {7-16 实现_优惠券的全量缓存(下)
' y7 ^/ e% F/ g+ _7-17 使用redis优化总结. W2 }7 o8 |3 W
7 C/ N# R! A7 E7 d! [$ @0 Q
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
/ c! c1 k$ W3 L7 u8 J3 x本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。  O. N3 F- M: e/ B* x
8-1 发奖计划设计分析1 V' Z* O( F0 m- F
8-2 实现发奖计划(上)' x- M$ O3 O: F9 I% e) P
8-3 实现发奖计划(中)
( V" K; X2 A" C" N  q8-4 实现发奖计划(下)
; ~; N0 d. h. o; S8-5 自动填充奖品池分析0 k) Q; a% F0 ~0 s5 k. d
8-6 实现奖品池(上)
" c, a. P: i. F6 [" ?: M" `8-7 实现奖品池(下)
' K1 @  @6 r; q- G& \% J/ ^1 F8-8 总结发奖计划和奖品池
" W  p# I3 `, M4 f6 s8 {
4 v+ I1 N. _& h, K; \第9章 完整性演示以及更多总结【整理运动,整体交付】
! r# ]8 I( J$ n实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ..." b$ l; z5 H/ C/ a* s+ q
9-1 前端大转盘分析
* K- d0 x# ]8 J, Y; ~1 B7 k9 [& {9-2 前端大转盘效果实现
6 v  T, ?- v2 A) |% c9 Q- f; I* J9-3 优化奖品设置分析2 y, O9 {8 `$ f( |1 ]/ \6 \
9-4 优化发放奖品分析
1 I; K9 K  \9 e3 D7 q1 l2 o' c9-5 再来一次压力测试吧3 j6 ]3 H) g$ Q* k- d9 L
9-6 压力测试6 [* {% Y/ a9 K" B2 N
9-7 更多运营策略$ S! O" a7 m) Y; y! s: {
# H7 {  r& B' g) K2 C* u
第10章 引入thrift框架【附加运动,扩展服务】8 A" A; o3 {% |
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
$ Z7 t2 L: ]& s5 \  h$ }$ m10-1 了解thrift
3 P: l! A3 L* F8 R( }* y0 s6 o10-2 定义thrift文件3 }4 r3 Q0 j! {8 S1 z! T' |3 T& Q
10-3 生成代码& r: E9 v# g* B6 W1 ^
10-4 服务端接口(上)
$ K' X" z; O1 s6 P7 {/ \: E10-5 服务端接口(中)
! L+ P+ N5 P4 ~% T6 a: l6 r/ y10-6 服务端接口(下)
% t$ n) c6 |8 v% m3 e& Y& @- L10-7 客户端接口0 J7 q  p9 L% Y6 A
10-8 总结. ], c" T& v  B& l) z4 v

+ w$ M" t/ W9 w$ k! e: U. Y* G& N第11章 课程总结【结束,沉淀】
7 N2 C7 ~6 `4 F' d; z3 L对课程进行总结
; [/ E0 {/ S+ h- f9 n9 A" H11-1 问题与思考" s1 a/ u/ G! y1 c3 y
11-2 课程总结
6 d1 Q" N  b( T3 {7 k' V7 r, a& q  |  v; v
〖下载地址〗
- N% B# s- S% o# m) c- C
游客,如果您要查看本帖隐藏内容请回复

& H, j9 s' i1 @
! m4 p0 s# ^; u1 {4 C; r
6 b- f, l4 p9 G' A
回复

使用道具 举报

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
( N) K& _: X( q! c" C4 r3 D: J9 w你这个是可以在线看的吗

2 ~) Z/ R0 _0 P* x6 p/ }可以的
1 n- J" z6 |" s2 D: n, p5 ~# u
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则