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

  [复制链接]
查看19286 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg 6 D  w' _) N  D; x+ W
〖课程介绍〗
9 w" U4 u. J8 L4 B3 ~% @抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
6 q' n. ~5 H, w" i7 O/ Q
) ^, q7 t1 K7 ~7 }〖课程目录〗8 m' J* W0 t" i4 H
第1章 课程介绍【预备,初识】
  }+ e' l$ T) e, S# c6 d  s课程内容的整体介绍以及学习建议。$ v4 Y) C/ b  k$ Q) k
1-1 Go抽奖系统导学 试看0 Q* K7 G; R9 }0 m
1 a4 w3 x5 u% L# H, G: s8 a  j6 }
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
" b2 k1 _, U6 V3 G. I3 t看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...7 ?1 r* E. I, n; V3 e0 q
2-1 年会抽奖_实现分析, Z" _& T) |4 y2 z
2-2 年会抽奖基本功能实现
: s9 m1 W3 D3 i8 ^# r2-3 编写web单元测试和并发安全问题4 ?1 u" a% M& ~3 h/ N! H
2-4 用互斥锁解决并发安全问题3 Z# m' a6 |9 |; }/ f! P! c
2-5 彩票_实现分析- t- |! u1 M5 f+ Q  t4 z
2-6 刮刮乐和双色球 试看' d6 ]4 g, W( C) ~5 \7 ?, _
2-7 微信摇一摇_实现分析
6 k3 ^: [. O7 ~* W2 i6 Z2-8 微信摇一摇实现(上)/ {3 A4 r+ \& B- R4 |8 G5 W/ g
2-9 微信摇一摇实现(下)) \: \( ?  R9 d3 @9 m, s
2-10 bug修复和压测
% n- ]( \& p: ], A6 V& [2-11 支付宝集福卡_实现分析$ S0 P- g$ ]. ]. ^+ V) q
2-12 支付宝集福卡实现6 V3 J( [, E- X  c# X# e' T
2-13 微博抢红包_实现分析
$ `4 m( R0 O( T2-14 实现发红包% [; k1 E* z( I& Q8 W
2-15 实现抢红包' w: m/ s) B- i" @# {1 S; E
2-16 均衡问题和sync.Map解决异常
& B5 }7 B, O1 p& J2-17 改用chan的方式解决并发安全问题( q1 K; T$ t) b- x+ u  k; P
2-18 再次压测验证和优化改造
- n/ g& d+ P& r3 T: G2-19 抽奖大转盘_实现分析. t. v2 C2 V; ]2 |
2-20 抽奖大转盘初步实现
2 n" }$ |( p3 g% X' m8 P% h* ~2-21 sync.Mutex和atomic改造性能对比
# y8 z1 X+ X7 e5 j# U2-22 六种抽奖活动总结2 c8 F, k& e/ m/ J4 z# Z0 s
2-23 并发编程与锁的底层原理
. _8 o* o* k# g& D/ D: b# i2-24 高并发和高性能系统中锁的影响与解决办法# z' w) l' L0 _7 e( k
2-25 阶段任务+ ]4 C) s8 m+ W( B$ y* P/ J

6 \& M: Q1 Q) t% A第3章 系统设计和架构设计【扩胸运动,有容乃大】- {: C. x5 I2 y4 M  A
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
9 C/ ~+ e8 L( v  P3-1 需求整理和提炼
2 h7 L; r1 c$ \8 ?0 c3-2 用户操作和业务流程
; j, j! U7 N3 n: |* U3-3 数据库设计
4 L5 {/ d- V1 w. J" |  N3-4 缓存设计 试看% U  r0 V- m- q8 c- _  W) o' V
3-5 系统架构设计
5 U1 g3 U& C6 @; l0 k1 V1 z3 ?3-6 系统设计和架构设计总结8 a( R( ?; E  q( w: S, [# U: D) S
3-7 高性能程序设计,缓存为王: j) T  j$ D" {0 c  _* R$ o
3-8 系统架构升级之道,关注关键服务依赖
$ V3 \& L3 ^1 c! p' i. R, t9 z3-9 阶段任务4 I( z' v) b4 e  c" X7 \2 ^4 o9 ]% L

2 C* B+ x6 L4 F! o7 P第4章 项目框架与核心代码【踢腿运动,固若磐石】
( R$ }/ |, _% H, k. d本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
- O$ A7 o' M  H* k5 w' x: u/ c! A4-1 项目框架搭建
( ]. b% t6 ^4 E! I9 q* ]4-2 数据模型的生成' I0 h. ^- n6 p+ u; N6 z
4-3 核心的dao和service类
! v. n; h( Y2 A! i& n' Z, `3 i4-4 定义dao4 f) }6 g- \! m! r
4-5 定义service, d5 z# t/ H1 `6 `; F5 H1 L2 L! k" `
4-6 定义数据库和redis配置信息! ?. I  {, t6 n  O2 x: f# ^
4-7 创建数据库实例及其要点
4 }8 ?2 W( I: q' f5 J7 M4-8 创建redis实例及其要点
+ f  A. C7 I- d; K! G0 U% R: y. f4-9 利用iris建立web站点1 n; u5 U5 X# n5 k* y
4-10 项目配置和通用方法. K$ G0 @# g, ^& G! @5 e
4-11 web站点初始化构建
* X0 b. d- @; L& D4-12 实现IndexController9 Y1 j3 F- Q# E: c
4-13 完善路由和main.go文件2 ~1 p0 @( ~+ Z2 k% K
4-14 登录和退出:安全值校验和防篡改
! Y$ c6 c3 C- d" n1 P
" |* q8 O6 U/ J, R: ?/ r, _- I第5章 后台功能开发【体侧运动,运筹帷幄】( D" j3 p0 L: q& x9 x( Z( I
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
+ N, G' \: E# G( f5-1 后台功能开发介绍4 |) q8 P- W  k, _( Z) D8 ^; r' E7 L
5-2 页面模板和AdminController
( _. A, l0 w# B. o5 \/ B5-3 奖品管理实现(上)1 D3 q; b$ R% b1 A2 |
5-4 奖品管理实现(中), |' m% _( U9 J
5-5 奖品管理实现(下)
7 R3 @8 B8 ?5 |( p7 j6 i5-6 优惠券管理实现(上), h5 [8 i4 D7 `$ C8 \6 I
5-7 优惠券管理实现(下)
; [) j5 u! }; c6 d5-8 中奖记录管理$ Z4 {- f/ u# {9 I* \  M- L
5-9 用户管理& a0 n. G% s9 k; m3 O6 o7 i* |
5-10 IP黑名单管理
* S, ~6 B9 {' ?4 x6 W) v3 X# t4 \9 u4 G8 S$ B$ m
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
9 h. t$ A- r* J2 [; m本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。; S2 t) Z6 ~# k1 R: R. n
6-1 抽奖接口开发细节分析7 u3 b/ O8 r9 q$ J4 x6 [9 k
6-2 用户并发操作的锁
# c2 k. r' k" p# @+ Y' M6-3 验证用户、IP今日参与次数(上)2 W" E1 d2 s$ e; O
6-4 验证用户、IP今日参与次数(下)
3 |4 q" u) H: E6 |; t; ?$ T; ~6-5 用户、IP黑名单的处理
3 Q8 C3 G6 a! h: H# e8 q$ k* B/ O2 M& Z6-6 抽奖的实现) Z& f9 m' Y+ h/ Q# a  g
6-7 发奖的实现) n$ q4 E& n1 U( N5 g/ d
6-8 中奖记录和返回结果
  u, q- g9 Z5 S& T/ W) Y9 Y" k9 I
第7章 使用redis缓存优化【全身运动,升级版本】9 o  \6 ]" W6 q1 p# d9 P; R
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。8 \- r$ n4 y8 x" j/ Q3 W5 A$ _8 c  Z: k
7-1 分析_奖品数据全量缓存
" ?1 B3 o; q4 J% M8 R7-2 实现_奖品数据全量缓存(上)
$ W$ r  z" @  v& K2 E9 r, |6 X7-3 实现_奖品数据全量缓存(下). p6 ?7 B% f5 l$ M
7-4 分析_单个用户数据部分缓存
7 }+ `; N: h6 [  _7-5 实现_单个用户数据部分缓存
- y4 g8 d6 a, l% w6 O1 t7-6 分析_IP黑名单数据缓存4 n. v- o; M* L% p4 c* R
7-7 实现_IP黑名单数据缓存
6 p0 x3 J$ }% L' j9 t' m: W7-8 优化IP今日抽奖次数/ O- k0 c2 [6 j: M; r; m3 Y9 x& ^
7-9 优化用户今日抽奖次数. [" j$ c. }, M" {8 q6 Z4 r
7-10 用户今日抽奖次数(上)' o' |+ b, V5 _4 @3 [
7-11 用户今日抽奖次数(下)- j, J4 V% S* A7 n: x! l
7-12 为什么使用奖品池
9 w8 @8 {9 o" ~7 s9 J* d" c7-13 初步使用奖品池* Y1 P, X+ w6 }: b) B
7-14 分析_优惠券的全量缓存9 ?% {0 D% w9 D1 r
7-15 实现_优惠券的全量缓存(上)( I7 j3 G. S5 z* c
7-16 实现_优惠券的全量缓存(下)
/ u9 c0 A5 F7 x) E8 ]8 h. n9 {: M7-17 使用redis优化总结0 {* k+ s- Y) ?: i. R
8 y1 K8 C1 G2 x; ]* g* w5 ]9 Z( `
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】) S& A# c% ~9 F; K3 q. [- D8 `
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。, C5 l. x% V6 Q1 u- K
8-1 发奖计划设计分析5 V; J" x4 ]8 e" ~' \
8-2 实现发奖计划(上)5 k3 `9 e; r0 z$ i6 [3 ^7 M
8-3 实现发奖计划(中)) Z4 R" z4 D, q5 B# I& [4 X% C
8-4 实现发奖计划(下): Z+ M# ~5 S; X" J0 k
8-5 自动填充奖品池分析
/ M, |/ j3 A4 V6 _8-6 实现奖品池(上)7 Y0 n& k1 E7 c# w+ I8 b4 v; [$ s
8-7 实现奖品池(下)
5 o. _- c7 j7 }4 `2 A* z8 G8-8 总结发奖计划和奖品池" f3 V5 D8 J, d0 g1 Z* G( P: ?
8 `& R9 R) i& w9 F% D/ M1 R" o  Q
第9章 完整性演示以及更多总结【整理运动,整体交付】
* y# q0 `' ]$ \8 a& [" d  g; M实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
. G7 ]& F8 b$ @2 Q1 k3 s: n9-1 前端大转盘分析
6 Q4 ?- r# J# V" p9-2 前端大转盘效果实现
1 y2 x" z! O/ |2 m7 j9-3 优化奖品设置分析" Z, t9 C" R- |8 S3 F* S
9-4 优化发放奖品分析2 T6 ?5 T1 j# R  t' k: [, ~5 j
9-5 再来一次压力测试吧1 R# w9 ~, w  @  E( f$ c0 @- R1 W4 L
9-6 压力测试1 k9 ~. [; }$ g- F4 \# B
9-7 更多运营策略+ a+ W! i% l& j+ X

7 a, C0 k% M$ h  L) s第10章 引入thrift框架【附加运动,扩展服务】
  l& g6 Y1 Y& n9 T8 A* Q+ T3 k通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。* G4 ~/ D+ c  h8 t
10-1 了解thrift
6 Y7 @. p% G- i5 B10-2 定义thrift文件
" `  L. q1 U  q' _10-3 生成代码
* M" ], v% v& U9 C! c6 h- J5 l10-4 服务端接口(上)
! t, }9 Y; d2 I8 D4 U( J2 J; k  k10-5 服务端接口(中)
' }( K  T  K3 S% f( ^, O3 V10-6 服务端接口(下)& [. S! k2 g( m$ }
10-7 客户端接口5 z: w4 O& @6 e) ^# K% O
10-8 总结5 z0 G) |0 Q: }1 t0 I6 P
! ~9 \& d( F8 {! W# D
第11章 课程总结【结束,沉淀】
, w- M% R$ [8 `0 G) |对课程进行总结; j5 H# q" l6 ]7 O  c
11-1 问题与思考
  S" R6 i3 a8 @" E11-2 课程总结
) l" ?, S+ y8 U- x7 q& v3 S2 U* l5 c8 f9 C/ E
〖下载地址〗) [; e  V5 S2 `
游客,如果您要查看本帖隐藏内容请回复
8 j: P0 ]% X' x$ S+ L( D
6 y* S& u- \- W8 W1 O9 ^" d

: d# J+ m/ u0 [% [7 O! P
回复

使用道具 举报

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
8 t# A7 w; A: B/ V' v7 a) G你这个是可以在线看的吗

: O. b+ [9 w: S! ~) I可以的
2 s9 o- M$ p6 _# E) ~/ d% H
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则