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

  [复制链接]
查看18412 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
6 z' E2 m6 E' o3 v〖课程介绍〗
+ p5 o1 n5 _5 _4 y抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平7 _- w4 J6 x  c  |, E

! j  R; L" J4 h- L* w9 |: d〖课程目录〗
" w& H. J0 F" V* E第1章 课程介绍【预备,初识】
% v. U! |: V/ n, w% c课程内容的整体介绍以及学习建议。
2 W6 ~) j( L6 o. |1-1 Go抽奖系统导学 试看$ Q+ f% R* ?1 A0 U: U
& [2 k9 \/ s: I' {4 I' Z/ P  E
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
9 j; M; B4 L4 i! g( Q* I' C! L1 d看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
& }/ J* W" d4 h( j# q" O! Y2-1 年会抽奖_实现分析& O/ M/ L- k/ l& ?
2-2 年会抽奖基本功能实现
' g/ p! H3 ^' x6 @4 `2-3 编写web单元测试和并发安全问题
6 S% M  h9 S0 q2-4 用互斥锁解决并发安全问题7 e; Y4 r( h4 j% @2 m1 P. T% m! Z
2-5 彩票_实现分析# y3 }! @2 e! \2 V* k% [% T, v
2-6 刮刮乐和双色球 试看& Z6 s3 }  j9 ~" U2 U
2-7 微信摇一摇_实现分析0 |- g% X. Z6 e5 G: U
2-8 微信摇一摇实现(上)
' B1 i" r6 _* K4 X+ B4 a" k2-9 微信摇一摇实现(下)& u  M' M' h* m
2-10 bug修复和压测& o, X% Q( o  G1 c
2-11 支付宝集福卡_实现分析" |9 x0 J$ c) m$ n0 x2 E  L3 p
2-12 支付宝集福卡实现- ~: i9 O: v0 \" J2 @
2-13 微博抢红包_实现分析
7 @) |! B( e8 S; F, K( K. {2-14 实现发红包
. S" a& n) g# e7 C: ?2-15 实现抢红包
7 y( b: |  w) V8 ~+ O0 n2-16 均衡问题和sync.Map解决异常0 [) J3 W1 P' b
2-17 改用chan的方式解决并发安全问题. I$ x! q4 `. S& B, i9 R& F
2-18 再次压测验证和优化改造: O; t- K! ]% ^# w  M
2-19 抽奖大转盘_实现分析
& u1 C% N- e6 L  g6 S' _/ b2-20 抽奖大转盘初步实现
* ]! b* R2 v/ x9 |2 c( S6 I& y2-21 sync.Mutex和atomic改造性能对比
3 W: Q" _* x6 n( y1 r( v! C2-22 六种抽奖活动总结: i# C, n, Q" T# ^. l$ \
2-23 并发编程与锁的底层原理
5 Y; b2 a2 G3 s5 V1 H4 C9 }: ^  A; k: a2-24 高并发和高性能系统中锁的影响与解决办法" t0 ~( E4 E0 W
2-25 阶段任务
  u  w8 Y( Y' C3 S  M
( r3 E' D( N& W# p6 f第3章 系统设计和架构设计【扩胸运动,有容乃大】
- x8 H& u2 H& _; v1 f6 _本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。" E& ?* t' ]; T# H+ H; n- H. y
3-1 需求整理和提炼4 w9 K# x6 d- ?2 [( N+ r' T
3-2 用户操作和业务流程; Z9 }9 t- A6 X9 p" k
3-3 数据库设计
- I. ^5 W8 n3 v2 c3-4 缓存设计 试看
  G; p" w6 V& M! \$ ?# a" j3-5 系统架构设计
* H# Q1 W$ F0 n: i/ {' s3-6 系统设计和架构设计总结4 B- D8 o! g7 L8 y0 g& b. {
3-7 高性能程序设计,缓存为王" S( N3 D2 I" y2 p
3-8 系统架构升级之道,关注关键服务依赖2 \3 _+ W) N; Q
3-9 阶段任务
* G$ R" p! \9 t0 E! f8 X
  m) s, `, t9 H8 {% z第4章 项目框架与核心代码【踢腿运动,固若磐石】; j+ j! @1 l5 v
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。" i4 d6 _" N7 a, ~6 [
4-1 项目框架搭建' C% I, n1 G! P" M% F6 j) Q
4-2 数据模型的生成
3 I1 @* t8 P" h) h4-3 核心的dao和service类
  R( t/ T* v% I: b3 q4-4 定义dao
$ U5 a, p0 f! `+ O& ]4-5 定义service% {& k1 E. p! f5 x
4-6 定义数据库和redis配置信息
1 h8 a- @6 I7 L0 A  }/ b( L0 y$ F4-7 创建数据库实例及其要点
, D7 O; m- z+ a4 y6 ~2 L4 e4-8 创建redis实例及其要点$ `( J- P* @0 y2 m# I9 r+ A2 \
4-9 利用iris建立web站点
) y3 F& ^2 K: M. ^0 i4-10 项目配置和通用方法. K# [# K4 r8 P" l
4-11 web站点初始化构建
: s/ C! K8 T5 e3 c* H4-12 实现IndexController
+ c1 q7 g3 r2 e6 U' F' @4-13 完善路由和main.go文件+ {% p8 B# P; x! s4 E" G9 [6 n( ~5 G
4-14 登录和退出:安全值校验和防篡改# o1 x  V7 ]! b$ p! u
  r. F- e, b+ q) ]9 b3 F6 p+ h
第5章 后台功能开发【体侧运动,运筹帷幄】" }4 E7 i4 Y' Q; [; H
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。# t1 y7 k  q$ Q/ W' Y9 o) |7 I
5-1 后台功能开发介绍
+ \2 W  _/ |( y' {4 Z; j3 e5-2 页面模板和AdminController, v* z* W! @. Z8 [% p  a' V
5-3 奖品管理实现(上)5 ^. e+ F* u8 V. Q. N9 t% J; R: w
5-4 奖品管理实现(中)
, B) x- q) ]& }1 c5-5 奖品管理实现(下)* Z, o6 I+ q+ |5 a' K
5-6 优惠券管理实现(上)1 H/ J% Z% u, o1 `" c
5-7 优惠券管理实现(下)
' ^4 h' Z4 G& R. R5-8 中奖记录管理
' ]% w' i9 t  D4 Z9 f! A8 j5-9 用户管理
; U+ e) W$ E6 o& N& P, C5-10 IP黑名单管理
5 W9 U! [. d5 b2 C% {' Z  d& T- x' K1 E( C, x1 p. @) w; H8 `5 |
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
8 X/ j- O( |- }+ h) _  ~! K本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。/ J+ P  W" A  D) o( O
6-1 抽奖接口开发细节分析
1 _" n( N  \% C; r# \6-2 用户并发操作的锁- s* P% U; d9 H1 Y$ _0 F/ l6 h7 d1 X
6-3 验证用户、IP今日参与次数(上)0 x  h7 C7 }, g. ?  v/ [* d2 V
6-4 验证用户、IP今日参与次数(下)
% J: ^/ d: l1 H9 n  h6-5 用户、IP黑名单的处理
4 m9 X$ W, [. C1 p3 P( }6-6 抽奖的实现
8 P' C" S! F* q2 i5 e6-7 发奖的实现
; x* S- V* u& i# Y: |# w/ {' G6-8 中奖记录和返回结果
3 H$ ^4 o, c. t9 C  y# C7 X
5 _% F6 I5 S5 P4 e6 O- C第7章 使用redis缓存优化【全身运动,升级版本】' y- z, F- |3 w7 V. H
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
$ S# Y2 o( \5 F2 h7 p" ~7 U  E7-1 分析_奖品数据全量缓存
1 n' R" |; S6 L+ R" k4 f( Y7-2 实现_奖品数据全量缓存(上)
7 a4 a/ a: K9 C. _7-3 实现_奖品数据全量缓存(下)" o- ^7 n6 f3 x1 B, C8 t
7-4 分析_单个用户数据部分缓存7 [; U3 Y4 S5 l2 j0 Q0 H& M* [3 S8 ^
7-5 实现_单个用户数据部分缓存
# X2 }" J, Z' j: v9 @5 J' j7-6 分析_IP黑名单数据缓存6 f7 z; L; _4 r: @5 d
7-7 实现_IP黑名单数据缓存6 n! A5 O* E8 y& `% @1 b( \
7-8 优化IP今日抽奖次数
2 X! _. t& i6 ?# b7-9 优化用户今日抽奖次数" {* \+ Z, y! g4 x. Q; ?5 e
7-10 用户今日抽奖次数(上)
; P- `$ E. e( K0 P7-11 用户今日抽奖次数(下)6 i- }/ w0 w- l! V+ N9 w. |! S
7-12 为什么使用奖品池/ p& W& t; v, }! m8 O8 a+ b1 H5 k, W6 M
7-13 初步使用奖品池. {' p! b* W1 r3 G; U
7-14 分析_优惠券的全量缓存& j  Y0 u$ ~7 T4 n0 s) r( }
7-15 实现_优惠券的全量缓存(上)& c9 V# L/ ]% [) x" T
7-16 实现_优惠券的全量缓存(下)- d* q% I8 `) Z/ c1 A9 E
7-17 使用redis优化总结
) `% |9 @$ G/ r
4 H2 K7 x$ w( |6 w9 K1 D1 \- L第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
* Q, Y' Q8 g  W$ l4 H4 V本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。) \% q+ o" k: Q  K; W- A
8-1 发奖计划设计分析5 Y( ^" }& p# ?, I4 H6 R4 X$ O
8-2 实现发奖计划(上)
; D6 o7 o# `' G2 [+ N* s+ H8-3 实现发奖计划(中)+ V. Z$ g$ |9 Q- l
8-4 实现发奖计划(下): ?* x) u7 ~1 z, x( K2 w! b9 E  r( |
8-5 自动填充奖品池分析, X. B, v/ h4 G7 N% z" w7 s, \
8-6 实现奖品池(上)
0 I3 q6 o. p. \' w% l) W3 k8-7 实现奖品池(下)
4 R6 o2 r. _* _: }3 p5 [8-8 总结发奖计划和奖品池
6 ^  Z: E% C1 h3 z/ Z( y$ R, E+ r9 j( r3 K8 {! R
第9章 完整性演示以及更多总结【整理运动,整体交付】
; P4 f9 @$ Q9 _. M# T实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...2 w1 V) D# i1 c$ A
9-1 前端大转盘分析4 a& f. o2 X/ D+ `
9-2 前端大转盘效果实现
  h# }! c: Y7 M! z. g9-3 优化奖品设置分析
5 U4 {; J/ L- X2 f& C9-4 优化发放奖品分析. P/ p* t, D8 R
9-5 再来一次压力测试吧+ U7 P6 w9 @6 i' v
9-6 压力测试
# p; G. J" o3 G; ]' ]9-7 更多运营策略/ j! ?  }2 b" O5 G; I
5 @# d2 W% i% K3 h+ F
第10章 引入thrift框架【附加运动,扩展服务】- d; p# T/ m# z8 m. s0 M8 `
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。; `3 b6 i- \1 y. N  `0 i
10-1 了解thrift
4 k. e9 Y4 u* |8 K+ ]: p- Q) p10-2 定义thrift文件
1 _1 ?9 W9 C6 t& \10-3 生成代码$ i8 Y& e- D/ l! Q
10-4 服务端接口(上)
& f  c$ b" b/ K) A10-5 服务端接口(中)6 r! _( }% C, u# }, R5 K+ G; W
10-6 服务端接口(下)
5 q: u6 B, [5 v/ Y6 U' ~3 y10-7 客户端接口
" c3 @2 J1 c$ ^. C10-8 总结: i! ~+ J6 K/ o

( g) r9 `1 h4 ~) E# b! L1 R第11章 课程总结【结束,沉淀】- v" q. s( R3 d0 o
对课程进行总结
4 s& d+ S. x* T11-1 问题与思考
; _7 t5 j9 N5 H11-2 课程总结! u, P  }  i; H, @8 o9 v$ r

6 b; {2 |4 s! T9 M. {〖下载地址〗9 F5 x+ `. `/ X; n, s. e& C
游客,如果您要查看本帖隐藏内容请回复
- Z. C& t+ i% B" D
% V! ~! v% N- T: d- t; w/ D

  {9 x4 b$ m; n4 N4 `% X
回复

使用道具 举报

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
6 `4 x# B/ Y3 s$ r/ o% X! F你这个是可以在线看的吗

. j. b5 ^  j) F8 w! l可以的! [  U. A( t% i+ G1 s1 X
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则