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

  [复制链接]
查看14105 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
4 `7 @7 D6 u( E〖课程介绍〗
9 l9 L" t/ Y. ^0 Z8 `! n抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
$ d3 N* m$ }3 z# n. E' k0 f9 }  e% _! j1 \* @
〖课程目录〗* d& i  I1 {6 p
第1章 课程介绍【预备,初识】& R4 u0 L9 z+ \$ p9 F7 c
课程内容的整体介绍以及学习建议。% A3 |& M' a  @8 m5 _
1-1 Go抽奖系统导学 试看1 \9 J( e. ?! w2 w! ]

' C3 n% D, H! t第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】0 |' p# B' @$ [: w6 l
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...& l( |& {1 y/ S. x3 c: h
2-1 年会抽奖_实现分析
; J1 e7 A- ?' l$ Y! ~2-2 年会抽奖基本功能实现" {' v( T2 a! }
2-3 编写web单元测试和并发安全问题/ o" W- @. K3 a) P: `
2-4 用互斥锁解决并发安全问题# ~$ Z1 V% J% J( i/ }4 q- N* R" N) T) W
2-5 彩票_实现分析$ d6 q1 z+ W6 v
2-6 刮刮乐和双色球 试看
1 n3 G* }/ V) v1 g# w9 e4 j2-7 微信摇一摇_实现分析
* Q% q9 q8 d# v: V& y2-8 微信摇一摇实现(上)
+ z2 F) x7 n. H! d" ^% r! u  v, ~2-9 微信摇一摇实现(下)
7 ~3 P9 |0 P1 x+ L1 m0 W2-10 bug修复和压测7 a& @0 H9 n0 P" s) v# t- [% z. S5 P. E
2-11 支付宝集福卡_实现分析% T" I9 m( E* `3 q3 C& E1 U/ l
2-12 支付宝集福卡实现
, A0 T7 q4 W3 U2-13 微博抢红包_实现分析" ^& R) a" ]% H1 T2 f$ T
2-14 实现发红包
) P; H" S* c, K# s6 m5 p2-15 实现抢红包& ?' I: j. k3 [6 o) {; h) m
2-16 均衡问题和sync.Map解决异常
: A' x4 ?- N0 X6 V2-17 改用chan的方式解决并发安全问题
7 m0 p/ ]* `; N+ p' T8 l2 B2-18 再次压测验证和优化改造
# ^- ^& L4 f0 b9 u( P( v" {) S2-19 抽奖大转盘_实现分析5 z: T8 ?; n3 `+ g3 }
2-20 抽奖大转盘初步实现
4 p) v+ N% |' O% |2-21 sync.Mutex和atomic改造性能对比
+ h0 X7 W8 u+ s& p2-22 六种抽奖活动总结
" w" v) K; A2 c! S. W' r2-23 并发编程与锁的底层原理! k( ]" P2 ^* b2 @
2-24 高并发和高性能系统中锁的影响与解决办法3 a% r- T" a0 @( x) M
2-25 阶段任务# k1 c8 @1 X9 c" }6 F( L1 v! q' f' ^2 o
0 ^- R5 w) D, ^, K4 z: y  {0 p, X
第3章 系统设计和架构设计【扩胸运动,有容乃大】
0 S& \1 h' M4 M$ `( r本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
: a4 Z+ y; ^$ E. I( U# M3-1 需求整理和提炼1 _, f9 A/ \- z0 }
3-2 用户操作和业务流程
7 W  Q9 `' e( V5 j, z1 m  C/ y3-3 数据库设计8 S3 s4 e* D' n) k% i- H; o6 L2 I: ?9 F
3-4 缓存设计 试看
  l/ o$ q2 C# v/ [2 ]8 Z* F: m. \; Z3-5 系统架构设计
* q4 {6 T) n6 g0 W. r' b% Z# t* z2 P3-6 系统设计和架构设计总结
. [$ ?( z8 Q. E3-7 高性能程序设计,缓存为王9 S0 _# u, G# T  W
3-8 系统架构升级之道,关注关键服务依赖
  X, G$ k! _8 Z3-9 阶段任务! D) T0 |1 F6 V. z: N( J0 G7 q

+ ]' {- u. T% r0 M0 T4 ^第4章 项目框架与核心代码【踢腿运动,固若磐石】8 p' ^& v! i7 k9 r; D# z$ N" K! y5 r
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
- @1 @3 g* j! \- O- ~4-1 项目框架搭建% C' h. F& Y$ n
4-2 数据模型的生成+ L6 M3 T6 i! S/ E
4-3 核心的dao和service类1 t( F- ^9 f7 {2 F% J) @- S
4-4 定义dao
9 J$ A2 V  ?1 r! y) y0 o! @6 L4-5 定义service
3 @4 V; V6 \8 l/ n' I3 ^4-6 定义数据库和redis配置信息: B5 g& m! r. f. H. {
4-7 创建数据库实例及其要点
, r1 J4 ~9 @: e0 G4-8 创建redis实例及其要点9 G; h& J% ^$ r; ?7 B
4-9 利用iris建立web站点
( _+ S4 _/ H1 a8 ^( f2 O* J$ w4 F4-10 项目配置和通用方法
9 C$ I2 w" _( P1 m% d4-11 web站点初始化构建
2 b" v- V7 ?! B$ a4-12 实现IndexController2 J. C) l" |& T" O6 W6 K2 W
4-13 完善路由和main.go文件
' E$ p# u7 g9 b& G! g4 y4-14 登录和退出:安全值校验和防篡改9 G9 B# ]$ w1 ]+ }  _4 K; j5 S
1 W6 `- c9 l7 T. I5 ~9 Z( f/ V
第5章 后台功能开发【体侧运动,运筹帷幄】! g) H$ ^2 ^' T
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。( n. [! c1 s  {$ [5 B! g
5-1 后台功能开发介绍# I% ?+ j- H; W' [; O
5-2 页面模板和AdminController6 w5 f  R1 H& O1 L/ n2 E5 }
5-3 奖品管理实现(上)( |, o: G! d- M8 B$ j7 W+ @' X
5-4 奖品管理实现(中)4 o' `, [5 k& q+ I
5-5 奖品管理实现(下)
/ t  `7 ^4 D: V5-6 优惠券管理实现(上)
5 u& ~1 `1 T. ]4 z6 q5-7 优惠券管理实现(下)
# C$ \) P9 |) ^+ g$ D5-8 中奖记录管理
) F, s) r. A* R5-9 用户管理
0 B" ?' X: i: s, w( J7 w" W5-10 IP黑名单管理
& U: B: F7 X% E; b& ~2 f1 y5 ^3 F' ^" Q9 ]
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】7 ?2 L& A5 E* d+ p
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
& t0 e  `6 W' b6 D! B6-1 抽奖接口开发细节分析
/ Q# s5 {4 P: H! T# V) a7 t7 }6-2 用户并发操作的锁0 m% b; _) ?/ k
6-3 验证用户、IP今日参与次数(上)8 D7 @$ t9 K9 N5 [4 @) J
6-4 验证用户、IP今日参与次数(下)
9 h1 T8 \) C9 d7 I; h7 G7 E6 d' Q6-5 用户、IP黑名单的处理
8 ?& E7 R$ m2 L6-6 抽奖的实现
4 m* |$ G8 g3 x% T$ i6-7 发奖的实现
* n) ?8 h5 F$ H' P$ L( b6-8 中奖记录和返回结果9 h4 b8 _; P& k( y) _  n, r
# ]" _* x# p; `6 d: y7 f3 p
第7章 使用redis缓存优化【全身运动,升级版本】
: l" g0 q/ U4 E本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
7 c' }3 j  P) o8 G% w7-1 分析_奖品数据全量缓存
5 ]  k' [+ Z: {5 j4 a: v3 I0 u; j7-2 实现_奖品数据全量缓存(上)
# d! `6 _1 R. K  y7-3 实现_奖品数据全量缓存(下)2 S6 V" W3 G! Z* H4 t
7-4 分析_单个用户数据部分缓存
3 c: B/ L1 A& X% _6 H7-5 实现_单个用户数据部分缓存/ V9 k. q$ W, D/ o$ c; I9 ?
7-6 分析_IP黑名单数据缓存; {) o& p$ B* J, J
7-7 实现_IP黑名单数据缓存5 [* M# n) M; \; q* _6 n3 Y8 S1 s7 W
7-8 优化IP今日抽奖次数/ C- w) L, ~) K- h* X
7-9 优化用户今日抽奖次数- z4 C! F% H" C+ l- q0 t
7-10 用户今日抽奖次数(上)
, [, ^! k# K& \6 Z( i7-11 用户今日抽奖次数(下)5 c; w# ~% ?1 [" [3 i. E
7-12 为什么使用奖品池
% b( Q1 N. [* H4 p1 W7-13 初步使用奖品池
" k8 |+ u7 d3 Z/ H, v7-14 分析_优惠券的全量缓存+ {, A, Q/ C3 Y* f
7-15 实现_优惠券的全量缓存(上)4 t; E# P2 m2 P' ?3 J0 p0 Q
7-16 实现_优惠券的全量缓存(下)
2 ]2 _$ ^9 R. x2 j7-17 使用redis优化总结
! U/ e$ A# @0 R1 K8 a( l: v' R( ?7 X9 t- h- f
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】! G" w0 k. ?7 a
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。& I8 ~/ {, o  R* z: h; J( u$ z
8-1 发奖计划设计分析" M$ a1 l* [( i  ^
8-2 实现发奖计划(上)
  t3 K8 M+ z; x* }, m8-3 实现发奖计划(中)2 I( e& F) A- _! e
8-4 实现发奖计划(下)
3 `, T6 f: W5 u- v' g6 S8-5 自动填充奖品池分析
. g$ x4 S- ?; \$ L: K; z8-6 实现奖品池(上)
% }2 |" O/ |; H/ m" v% g  N1 x8-7 实现奖品池(下)  x" R7 D$ D3 J( g3 Q  i
8-8 总结发奖计划和奖品池5 d; {( m, C5 v- N- ?+ S

  ^$ R' p# f" P) s( V7 L" t& B第9章 完整性演示以及更多总结【整理运动,整体交付】
1 A% ?2 E; J; J. Z) d实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 .... p" I( w( C$ {* Y* w
9-1 前端大转盘分析
/ r! X5 @( E- |: G* [$ X+ S. u" ^9-2 前端大转盘效果实现) d% W" `% l4 Z, ?
9-3 优化奖品设置分析
- s" p! @, k' B/ L# s* |# s9-4 优化发放奖品分析' \" T, q5 T* U$ e6 U6 F: |
9-5 再来一次压力测试吧$ q5 {' M& t+ }+ G- g
9-6 压力测试7 M& H% n- m0 d( j  }$ v* C8 r
9-7 更多运营策略0 ~" V; _: x8 S+ ^$ A

6 ?( L3 r8 h, R" x9 G7 ?第10章 引入thrift框架【附加运动,扩展服务】/ E4 `) E5 k& o0 Z! G# B
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。2 q* |' \5 Y% [8 n9 F& k: t" a
10-1 了解thrift
6 Q# h0 `* J% A1 S8 t7 s" ]) \10-2 定义thrift文件6 @9 @( F" i2 E4 S/ T
10-3 生成代码) Y: S# o9 l1 T$ d) i6 P1 W
10-4 服务端接口(上)& L$ ~. B7 K. Z: q
10-5 服务端接口(中)
7 P+ h8 Q3 ?9 S5 y7 r10-6 服务端接口(下)
' r3 D6 \. L, y" r/ n1 D10-7 客户端接口
) w$ q% f: G1 O9 X- x( c( O) k10-8 总结1 Z% X# i) q3 g
/ t" F3 T  p  @* n9 O
第11章 课程总结【结束,沉淀】
& ~) q0 s3 `, C1 f1 {对课程进行总结
  n9 @: c( V3 s1 N( ?11-1 问题与思考
* S! e0 j- t* E8 u1 a/ N& j5 l; w11-2 课程总结
3 `, t+ U  Q* n4 E3 B* V+ b( }6 S( n  C1 ~  w; R9 C, n
〖下载地址〗( @6 O4 R0 s6 b$ ~% f
游客,如果您要查看本帖隐藏内容请回复
9 V( ^1 d+ C/ w  z6 Y

8 P* {% U. {% s) v, e2 W
* M' n2 @, @; u+ I; 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& D% _: P8 }6 [
你这个是可以在线看的吗

& i( ], e5 J$ N可以的5 W$ o4 J2 ]* q6 M
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则