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

  [复制链接]
查看19602 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg - f& Y7 g/ s3 @; B4 J! r% [8 M
〖课程介绍〗
: _6 \! I/ L) q& y. n" Z抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
) u( o4 v; ^" u) F, s$ Q& G& c% L6 V' V! V- O
〖课程目录〗
( q- _6 ^7 F) ]/ K* B$ C第1章 课程介绍【预备,初识】) W5 n4 w4 q0 g( L
课程内容的整体介绍以及学习建议。
2 `5 s* H. Z6 _' \. \$ J9 D1-1 Go抽奖系统导学 试看
9 A2 Z. \0 y- V; H* [2 _/ `# S) x$ \0 Q7 p: ]5 p
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】9 f) b% ~' e' v6 J  \
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...6 f, c5 |! M: `! g0 O5 s) K
2-1 年会抽奖_实现分析; f# u9 K- R3 @/ u
2-2 年会抽奖基本功能实现+ Y; Q3 Y$ R4 f* `8 r" W; n4 I3 O, A
2-3 编写web单元测试和并发安全问题( I  t' A: x. X# v5 p
2-4 用互斥锁解决并发安全问题; [; q' i8 {+ p1 W& z! ]: [
2-5 彩票_实现分析
5 @" O, {; ?% x3 ]) x; q2-6 刮刮乐和双色球 试看/ O1 g% F3 d2 H) G/ ^, A
2-7 微信摇一摇_实现分析
$ i/ Z; `1 v6 _/ c/ A" H2 _2-8 微信摇一摇实现(上)
; g8 \' d2 P- m+ h. h. b2-9 微信摇一摇实现(下)
  K% o: `$ Y; f$ Q2-10 bug修复和压测
2 s4 h2 B. {( w7 }0 j2-11 支付宝集福卡_实现分析' f1 V' D" H% o. j5 q1 o/ E  E
2-12 支付宝集福卡实现: r" b( h% s6 ~/ a
2-13 微博抢红包_实现分析5 q. D; q7 F0 [
2-14 实现发红包$ \5 z- w! z% v1 h6 l9 F
2-15 实现抢红包
  R& v; y9 A4 b3 m* `2-16 均衡问题和sync.Map解决异常
/ W' V8 m' S3 q# K2-17 改用chan的方式解决并发安全问题& |' v2 h/ y1 ]  ]) K( p( V
2-18 再次压测验证和优化改造
" t/ D- F) [# a% ^/ W3 k8 l( l, i4 T' u2-19 抽奖大转盘_实现分析
  O/ [' [- l% Q4 i2-20 抽奖大转盘初步实现
, c( g7 v5 m" P8 M* f6 a2-21 sync.Mutex和atomic改造性能对比5 |  i, G0 ]" ]5 n1 r5 {
2-22 六种抽奖活动总结
- V. _7 _6 B+ F, _7 R) z! v2-23 并发编程与锁的底层原理+ F  I0 ]. s1 O
2-24 高并发和高性能系统中锁的影响与解决办法
! u1 f9 S% O8 h8 _9 u2-25 阶段任务+ `' e4 s$ [9 N, y2 G5 b% ^

- K* |/ s5 d7 U8 {* P! b7 M第3章 系统设计和架构设计【扩胸运动,有容乃大】
! C$ ^' k% Z: B( J) Z& w本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
9 f, t, b, J, w4 X9 u9 _% [7 c7 ~4 \0 q3-1 需求整理和提炼
/ B/ F. t  R0 p$ M3-2 用户操作和业务流程- K, D, E) V; g6 f* F
3-3 数据库设计
, u# W/ y3 ^9 j- I7 n" }3-4 缓存设计 试看
6 d' A8 Y$ X( @% }# G3-5 系统架构设计
$ k& y) c, h6 L1 z3 n3-6 系统设计和架构设计总结2 f/ x3 F+ y9 c7 s' U. X
3-7 高性能程序设计,缓存为王- d5 Z1 D1 l! Q1 U, u8 M9 P
3-8 系统架构升级之道,关注关键服务依赖/ g6 x' c1 g: B7 D/ K/ \+ e0 Q* r
3-9 阶段任务+ V7 H' v9 [$ _* z/ L0 z# e5 w
# ]3 I. ~5 ?. H+ ]
第4章 项目框架与核心代码【踢腿运动,固若磐石】: f; J; l# U9 i1 e
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。5 S" ^$ Q. G  W/ e- e7 S
4-1 项目框架搭建
! D# F1 v$ f6 I& z6 o4-2 数据模型的生成
: U& W5 U0 X7 {: F  M" {4-3 核心的dao和service类5 [+ s. u; u& I0 u. D
4-4 定义dao
! e2 _* c1 B, d4-5 定义service
& P2 R7 M" c! w( _: q; v4-6 定义数据库和redis配置信息+ ]. ^+ H" @1 b0 U
4-7 创建数据库实例及其要点1 d3 R' c4 P" J
4-8 创建redis实例及其要点
: {5 r3 I9 D. B7 O4-9 利用iris建立web站点
2 w, L, _3 k! H) Z' z/ g4-10 项目配置和通用方法/ [' W3 F+ p- ^1 P7 S
4-11 web站点初始化构建. B+ N/ B6 r* W6 |" T
4-12 实现IndexController
4 H( ~# C5 ^% Y8 w8 M2 p  Q# e4-13 完善路由和main.go文件
& h% `. ]8 i4 U( A' y4-14 登录和退出:安全值校验和防篡改* B4 i& q' [0 W' M
) m  q6 G, ?4 J
第5章 后台功能开发【体侧运动,运筹帷幄】
$ r3 Q; _$ O4 \一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。! Y/ y' l$ |  d; ^3 p
5-1 后台功能开发介绍+ N  N2 t; T' e- n; v2 t
5-2 页面模板和AdminController
7 i! @/ c& v7 W: a* ~4 g5-3 奖品管理实现(上)# [5 S0 H2 ~. z7 c' u( }
5-4 奖品管理实现(中)# R- c2 {( S  h/ p% `
5-5 奖品管理实现(下), ?2 `2 @$ a* m; l4 B
5-6 优惠券管理实现(上)4 ^+ l1 G% v& X
5-7 优惠券管理实现(下)! C6 X% {  \2 _! N
5-8 中奖记录管理
7 D  C. ~" R) s5 p9 C) U5-9 用户管理
5 ]6 I2 Q" S, a% C1 x; z) j$ t5-10 IP黑名单管理! r/ \  Q, P6 n

% o8 \/ l  P$ z* e% l4 x第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
5 t' i/ y* H" i* G& [& a3 U9 @本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
2 o9 k8 Z: I0 _% A9 k$ S6-1 抽奖接口开发细节分析8 f1 {* f4 e2 l" K" X& h: j' |
6-2 用户并发操作的锁
3 C, F/ L. p# Z) V* C: v4 L6-3 验证用户、IP今日参与次数(上)$ b, s9 q3 s" f2 _) ?! E
6-4 验证用户、IP今日参与次数(下)
8 I+ k/ j  L7 H6-5 用户、IP黑名单的处理% K1 r) C1 {  Q! J0 i) O
6-6 抽奖的实现. Q/ C0 [% j4 Y2 i+ X2 B3 K
6-7 发奖的实现: G7 H  u! K# ^4 {( I8 W
6-8 中奖记录和返回结果
9 {0 |, O; W0 u# j% E% s, A' v: u  V- I3 @  L& _
第7章 使用redis缓存优化【全身运动,升级版本】
7 K3 d9 l$ a1 a7 `; a本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
8 w8 M! N* X; ~: _! ~; `* q7-1 分析_奖品数据全量缓存- X' f, _) D: p6 l) x
7-2 实现_奖品数据全量缓存(上)
/ }4 S' @( K' L; k4 P  T1 \7-3 实现_奖品数据全量缓存(下)% C2 e8 Z! U  F- Q2 j' ]% |5 r0 h* p
7-4 分析_单个用户数据部分缓存, G% O3 Z4 O& z5 z3 Y
7-5 实现_单个用户数据部分缓存) {! N  k7 S9 C% x& c2 M
7-6 分析_IP黑名单数据缓存/ r: z" A7 ~$ C' m
7-7 实现_IP黑名单数据缓存* v( C, ?) N( C: q+ L2 h
7-8 优化IP今日抽奖次数
$ _$ q' R# T: L$ S5 p' C3 D0 p7-9 优化用户今日抽奖次数
: q/ f: W+ p  V+ H% f- l* q  }+ s7-10 用户今日抽奖次数(上)2 Z: z$ z2 V; q/ o* d/ ^
7-11 用户今日抽奖次数(下)
8 }1 s* X% S; v* Y/ e7-12 为什么使用奖品池
$ X3 p- ?7 Z0 F7-13 初步使用奖品池
1 [: u3 w, U& {8 s1 U8 W7-14 分析_优惠券的全量缓存! l. r/ R9 v" w7 W/ w5 U, o. B: B
7-15 实现_优惠券的全量缓存(上)" ~! J, N* m1 D* I/ I' A- T2 t) _
7-16 实现_优惠券的全量缓存(下)) o  n8 Q( _/ Z. C+ h) }, _
7-17 使用redis优化总结
+ ?4 e! A' s2 L9 C  I5 B& g* L# r" t( W; b, m
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】- U! n0 @: K6 ]6 T
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。0 E$ X2 O* r# }6 s# k  q* ]& S8 V
8-1 发奖计划设计分析6 K. \" \; V, M! u
8-2 实现发奖计划(上)
( d5 ]( {8 [5 P. o% [8-3 实现发奖计划(中)3 |1 _8 ]2 j. L) X- P
8-4 实现发奖计划(下)
' ~* r( k4 _$ u# J' K( f8-5 自动填充奖品池分析. X9 m: Y  ]/ _* D3 t
8-6 实现奖品池(上)
& o5 g8 M: R* e7 S  B3 S3 u9 }+ q8-7 实现奖品池(下)% m  G0 ~) s; a0 u
8-8 总结发奖计划和奖品池7 L4 R( ]' C: O; v- ^* }
6 C+ z, M+ T9 J/ d3 a% v) o
第9章 完整性演示以及更多总结【整理运动,整体交付】
3 v" G* J! H4 f8 S% I实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
$ Y. N9 F1 X' l5 x8 p9-1 前端大转盘分析
# d/ ~: D' B% I: c. Q9-2 前端大转盘效果实现
: s! q/ g$ r9 S. }  d% f9-3 优化奖品设置分析
, R0 d, k6 A+ ?9-4 优化发放奖品分析3 T  L* C, H; y* l6 j" M$ g
9-5 再来一次压力测试吧
& U4 q* n8 q" h# ?( t' S9-6 压力测试4 i& [# I. @9 g1 I+ w2 }3 j
9-7 更多运营策略' W) d( [  _, l) f, j
6 y: I9 }2 w+ i# c( \( O. |( u
第10章 引入thrift框架【附加运动,扩展服务】
9 r) k8 p- D! H$ }通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。" ?! [$ P1 i2 f& H1 W  L# x; `/ n4 u" B% w
10-1 了解thrift; R" _# m  A7 \8 K& P
10-2 定义thrift文件' F) q7 ^# o; c, M& ^+ e9 ?
10-3 生成代码
9 O9 E- J4 Z  x9 p10-4 服务端接口(上)6 K0 O9 ~6 D, _( Z1 X9 i
10-5 服务端接口(中)
0 d- d: D" h6 I( u. q  J) O. G0 `10-6 服务端接口(下)' Q  m: E6 ?  N1 e) R4 M! [
10-7 客户端接口
' ?) k; u, B( g: h1 [  t' Z+ b10-8 总结
0 a& V( A& r  O7 V, S0 l5 G1 v3 _  N! R, r' X3 ~. R
第11章 课程总结【结束,沉淀】- B  t- L- w( E" ?
对课程进行总结
. B2 q1 q# D# q5 b11-1 问题与思考
# N8 N7 y3 w- d' U" ]3 I% z) {11-2 课程总结; g- t# H) V8 t

# p9 \' a: ^6 }9 F" G〖下载地址〗2 b8 O2 _4 G4 `1 A( \
游客,如果您要查看本帖隐藏内容请回复

' x. o8 Z& n' U- \& ]" Z1 h! s( h! X7 E: r' y- q) P

! P4 U* v5 C2 U: s) e( \% T8 O  k% s/ N
回复

使用道具 举报

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$ r+ W' V4 s1 @; ]: E: X( W) y
你这个是可以在线看的吗

. m: ?7 |5 Z# t9 z% G1 L' E可以的
& o, M/ \& A) V9 l' b% u
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则