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

  [复制链接]
查看27764 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg 3 x1 |) x5 E) E
〖课程介绍〗' H/ K5 \) U8 V& }8 z2 K- S8 `' d; q
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平: v3 w1 K5 S, @- `

/ v8 S1 }* I* o7 {% b9 ]: ^〖课程目录〗4 e' r" G9 a/ t) Y" P. }& w9 j0 ~# p
第1章 课程介绍【预备,初识】
2 O/ o" A2 P: P# m9 F& C. _课程内容的整体介绍以及学习建议。
) W2 Y& m) w7 v2 q3 ?8 J1-1 Go抽奖系统导学 试看
3 ]& G9 \. e4 x0 x9 X, l0 z5 o+ Q2 N2 c0 \8 C( M- j" H
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】# _+ v' L" Z) ~* c( @# q& b7 y. j
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...' k" M4 `7 Z& a% m
2-1 年会抽奖_实现分析
' k$ d: P8 n5 G& W5 B" `2-2 年会抽奖基本功能实现& W  N+ a% |: Y( d" \3 V* Q7 C7 u) k
2-3 编写web单元测试和并发安全问题
7 @8 X, d* u/ H$ N5 g1 g6 ~2-4 用互斥锁解决并发安全问题* [  l% X. @; n. v* C  j8 Y' ]4 E9 l' G
2-5 彩票_实现分析" b6 Q8 X! T; U5 A+ o
2-6 刮刮乐和双色球 试看
3 ]! I% k3 @1 U) K2-7 微信摇一摇_实现分析
5 I% l3 s4 d  e% P/ A+ d' X2-8 微信摇一摇实现(上)" K) k0 O& q  ^7 s
2-9 微信摇一摇实现(下)9 y! f( u" A& [8 [9 x+ [
2-10 bug修复和压测
5 E- n0 z1 d4 r) D0 \+ Z2-11 支付宝集福卡_实现分析
2 z" o: o& a: S8 e( q7 e5 T3 c# Y2-12 支付宝集福卡实现3 g7 W; T8 _. X. ?$ p
2-13 微博抢红包_实现分析
$ J8 v* _* j& x) S5 d# a( j2-14 实现发红包
% v, N# `& a4 x. W$ h; S2-15 实现抢红包& F! }( c* X# C- @/ O! L9 c& p
2-16 均衡问题和sync.Map解决异常
0 U) n5 n: t6 ]2-17 改用chan的方式解决并发安全问题
, p( k1 T, _* P3 y! N! i2-18 再次压测验证和优化改造
" ]' |9 W7 m' j* j$ h- P, g* R2-19 抽奖大转盘_实现分析5 d$ k2 S* _* p
2-20 抽奖大转盘初步实现! f. ]1 o/ p5 X6 B
2-21 sync.Mutex和atomic改造性能对比. Q; D8 c" C' Q7 B6 p1 E; M7 q1 U
2-22 六种抽奖活动总结! [' \5 {0 K& }1 H# C
2-23 并发编程与锁的底层原理  w, T' \. ]) a
2-24 高并发和高性能系统中锁的影响与解决办法6 t: {* H7 {3 W2 _( V7 m, _
2-25 阶段任务  h# O6 b1 m# j& d7 r5 q% M3 a0 @

# _* Z; R6 `3 w! F第3章 系统设计和架构设计【扩胸运动,有容乃大】% c) _/ Z' y* J( a' [9 ]
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。: o' @4 R# N' Q
3-1 需求整理和提炼- f) W: l9 b7 \* P; Z5 ~4 B, E
3-2 用户操作和业务流程) C( z( J6 P- s  e; X$ `
3-3 数据库设计2 ?4 j0 f  x' U3 m
3-4 缓存设计 试看7 [8 f2 O- U+ l* f9 T+ k, A1 I
3-5 系统架构设计
2 k, {( H$ z6 A( N3-6 系统设计和架构设计总结4 K0 n9 C! a1 U& Y8 o
3-7 高性能程序设计,缓存为王2 M6 f* y$ g9 u8 E
3-8 系统架构升级之道,关注关键服务依赖
: W) P) D/ }5 J( w& E: n3-9 阶段任务- m7 q! \) l- m, y% C
! _% }( k0 q* R" o/ A# m3 F
第4章 项目框架与核心代码【踢腿运动,固若磐石】% d: D- q, D  V- ~+ _- S' I8 k
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
1 p$ ?, K$ P& Y/ q, ?. |- ]2 X- j4-1 项目框架搭建
7 g5 u6 }3 Y( Y/ ^7 c& ~- z4-2 数据模型的生成
2 x! Q% {4 `: Q. ^$ A4 P  F9 N/ @4-3 核心的dao和service类& I5 H+ o7 E7 C- Z
4-4 定义dao
2 F; _( Y# H9 |4-5 定义service' \  ?  z# F, V4 g) D: P
4-6 定义数据库和redis配置信息
, p: y3 N* Z1 l1 K: Z/ l: f4-7 创建数据库实例及其要点
7 `4 ?$ W, R! I: t' r4 w4-8 创建redis实例及其要点
; Y  \- d6 i6 W, q: x6 [4-9 利用iris建立web站点
! {  V6 k" T" c" k0 {% F+ T* \4-10 项目配置和通用方法- Z5 d9 Y- H$ \" F. X" w3 ^$ J
4-11 web站点初始化构建
6 @5 K1 w& o8 p9 I# \( R6 S4-12 实现IndexController" C6 f& G0 F% U: ?, V7 K
4-13 完善路由和main.go文件
2 z7 R+ P: B; g6 O4-14 登录和退出:安全值校验和防篡改
! Y9 n% X  B1 m9 f: ~* Q1 W
, J/ i1 X1 F2 {8 m. U: G第5章 后台功能开发【体侧运动,运筹帷幄】
& B6 |% R$ ]7 Q, K一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
. G: ^- `4 E6 A4 m5 S6 o: ?3 f5-1 后台功能开发介绍, f4 i/ {, ?- d+ l% p
5-2 页面模板和AdminController
7 R! e' @5 s* F! [, s5-3 奖品管理实现(上)- Z) c; }; |' m- s
5-4 奖品管理实现(中)
- f/ w4 P! j0 I4 h) N& c# \5-5 奖品管理实现(下)
0 F4 C7 h1 f1 g% G$ j  S5-6 优惠券管理实现(上)
' D: n  ~  T5 n1 X5 O5-7 优惠券管理实现(下)
6 I( E6 h4 ^1 M  k8 P5-8 中奖记录管理
, h- q* o3 P) x  E5-9 用户管理6 S( f5 [5 r7 U% a8 C5 [/ V
5-10 IP黑名单管理
: h: X+ X4 f# S# H! j" Q; W
9 {! O4 J) z" G1 U1 H( I4 K第6章 基于mysql的抽奖功能开发【体转运动,基础版本】1 }: h6 Q: W* e. ?( S
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。. l. D$ E# f, M( ^+ s) l+ ~
6-1 抽奖接口开发细节分析4 V8 e/ ?; ]/ V# |
6-2 用户并发操作的锁
4 Y) }. e) N5 m3 b6-3 验证用户、IP今日参与次数(上)
+ W3 n3 N$ B, z  r9 h$ q& L6 t. G6-4 验证用户、IP今日参与次数(下)
- k" |! B- b0 ^4 y: i6-5 用户、IP黑名单的处理
% e; P, I/ ^3 R3 }6-6 抽奖的实现
0 h9 K" I, `& P; s, f( Y! V6-7 发奖的实现
1 z  R& r8 G8 s# A1 ?+ f6-8 中奖记录和返回结果
1 i+ D  N) m: N9 E6 u+ K' o& P( P9 O) U- R' q/ |  t
第7章 使用redis缓存优化【全身运动,升级版本】
( t7 \7 G9 f1 |1 P0 S本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。+ F4 Q' L( |. Q/ o1 S+ ~
7-1 分析_奖品数据全量缓存
% k4 [! `( b, Q! }7-2 实现_奖品数据全量缓存(上)) D: `: W6 r& |; k. ~& r$ V: v
7-3 实现_奖品数据全量缓存(下)
1 G, k) o9 A, Z& h# m7-4 分析_单个用户数据部分缓存
* _; H, c$ N- Z  Y3 T7-5 实现_单个用户数据部分缓存' Y( U- H8 d9 t* V  {8 A8 {
7-6 分析_IP黑名单数据缓存8 }' e0 J" @7 p0 G# h) y& ~) X
7-7 实现_IP黑名单数据缓存
1 v+ b/ G! U& V: d# r7 q7-8 优化IP今日抽奖次数1 y7 ~" |* o$ ~0 l* I0 H/ A
7-9 优化用户今日抽奖次数
# W5 y  Y. ?* w8 D# r7-10 用户今日抽奖次数(上)
7 Z5 u0 M% k; {/ v7-11 用户今日抽奖次数(下)
3 @# B' d2 p. r3 o' N7-12 为什么使用奖品池
7 t' N/ \* A( M6 n7-13 初步使用奖品池
: J6 m9 _* V- E1 r+ w3 G: D- k5 X7-14 分析_优惠券的全量缓存. X' x- |: Z- }/ g; G8 c
7-15 实现_优惠券的全量缓存(上)4 ]" X8 `4 P& d
7-16 实现_优惠券的全量缓存(下)
2 y7 a! t. x6 g* w1 s2 t9 {7-17 使用redis优化总结
2 D9 U; w4 j4 ?- M% g- I8 ~4 T1 S! d( w1 T
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
/ `! M( a# M- X& V" U本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
9 M9 t. a4 x4 T, q1 \8-1 发奖计划设计分析5 ]" \; v4 b7 g6 B) k- D
8-2 实现发奖计划(上)9 U* C4 u/ ]; B6 k2 M; b
8-3 实现发奖计划(中)
0 Y' `( e3 Y  M! O3 _8-4 实现发奖计划(下)+ A# O2 H' p5 J1 Y: F2 e& s
8-5 自动填充奖品池分析. T7 n3 g1 J& ~1 ^3 r
8-6 实现奖品池(上)
3 T6 a" D6 l. f9 r1 {0 x8-7 实现奖品池(下)+ X/ H% c4 g! _4 e3 @% w
8-8 总结发奖计划和奖品池! m1 O$ K4 K9 g' H$ a& ]" k

0 n# e7 Q8 d4 {$ u$ a. m第9章 完整性演示以及更多总结【整理运动,整体交付】& V% y/ B. V6 ~8 w
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...5 e/ h  k6 M: C7 A* c8 T
9-1 前端大转盘分析) N: u; }  G. Q/ ^
9-2 前端大转盘效果实现
. T9 C, e' i1 K- l- X. Y9-3 优化奖品设置分析
0 p! a3 o& K' [4 G* O9-4 优化发放奖品分析! A# T& c9 S* \$ n
9-5 再来一次压力测试吧
- k% G! V( k! J' Q; ?9 _; @9-6 压力测试
7 v% K2 F# s5 W2 u$ |6 t7 ^/ m9-7 更多运营策略' n1 R3 l! j& N

( s* y; G  `3 g4 q  G2 _第10章 引入thrift框架【附加运动,扩展服务】
3 C$ ^% o6 [5 Z$ ]4 x, p6 ~0 u) w9 @' S通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
- v4 t, U2 j/ @$ R! [+ d10-1 了解thrift
  j7 ^5 V$ t9 G* E' V' G10-2 定义thrift文件0 i+ X. m  @! v+ W6 a, Q# ~6 d9 _- ~
10-3 生成代码
/ g& k  ~# j3 b4 J6 M10-4 服务端接口(上)
# _+ g  h, d% v4 N$ S5 T+ M4 \! y' M10-5 服务端接口(中)
9 q4 g& h- G. W" y4 \10-6 服务端接口(下)
# R' U1 h# [4 b0 s/ ]* l10-7 客户端接口
" R+ x; A: z1 y; r' _! T10-8 总结# D3 `5 ?' b' T- ]# j

7 E1 }$ z; L9 K7 [" k. T第11章 课程总结【结束,沉淀】9 R! ~! q/ v$ F4 U! }3 r( K9 h
对课程进行总结
8 k( y7 t0 z* J; T' B11-1 问题与思考
0 c- @9 ^* ~+ z11-2 课程总结1 p) Y8 n( E3 b

( A# K. h! p# v7 |7 R# S〖下载地址〗8 R" k  ], M7 D! _  |2 {3 S+ P
游客,如果您要查看本帖隐藏内容请回复

7 V: x# a% |1 }6 u3 C: H7 S) t+ H. `! ~7 f3 F. q! U* T

% w9 v" N' G; a# e! D. O
回复

使用道具 举报

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  K2 K7 U! W/ V
你这个是可以在线看的吗

2 M+ k, \3 U" `9 K. k可以的; D; l$ p$ I# ^$ c1 w
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则