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

  [复制链接]
查看13117 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
' N  Q$ q- w3 U9 q* R4 \0 h〖课程介绍〗5 e. p6 q+ z7 k: a5 n" C
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
' p2 F# E+ ~9 G1 l) j; f# Z
" y/ o4 p, }" G2 n〖课程目录〗" i  Q& R5 J4 H1 y; G5 z- R% C/ G
第1章 课程介绍【预备,初识】
5 W- B0 @( [5 R课程内容的整体介绍以及学习建议。% X7 y- y* Q4 }" w8 `' ^
1-1 Go抽奖系统导学 试看
6 ~# y; f1 K5 f; S' o0 {0 c$ ^# Z2 q, `9 Q2 k! L6 I) O$ s7 Z, E- L
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】. N' \. U6 z: t2 Y! f! I  k
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
  Y4 L# V  h7 Q% O  g2-1 年会抽奖_实现分析
0 I! W. Q) d5 A+ Z! g$ n8 I2-2 年会抽奖基本功能实现
1 J* R. o7 c1 G# F: g, S2-3 编写web单元测试和并发安全问题
! A8 Z* O$ I8 S5 X0 X( D$ [- y2-4 用互斥锁解决并发安全问题
) l/ \! A' |% S/ @6 K, U8 L2-5 彩票_实现分析. v! |6 F) T$ y2 G% w( |
2-6 刮刮乐和双色球 试看  d  }4 g  o7 v4 C" l6 L1 C
2-7 微信摇一摇_实现分析7 f7 k1 O8 }' v- a8 o% L$ J6 q
2-8 微信摇一摇实现(上)
: D7 Q4 v" r# Q& E2-9 微信摇一摇实现(下)7 _  A% K5 H! N- y) V
2-10 bug修复和压测- q/ ?7 D9 r* _. d
2-11 支付宝集福卡_实现分析
' p/ e  V9 K* s% }: Q, ^2-12 支付宝集福卡实现
5 Y% w+ Y: m2 f( J2 |( c2-13 微博抢红包_实现分析6 a5 [+ w8 g& W5 r' x9 `2 J
2-14 实现发红包
+ G4 j8 q  F( M0 {& j7 l$ O/ D  }, _2-15 实现抢红包- X) Z% S8 ?& p/ b" g
2-16 均衡问题和sync.Map解决异常
, s; v+ s( r* S+ e2-17 改用chan的方式解决并发安全问题
1 g, k$ d  X; m9 r4 j( l2-18 再次压测验证和优化改造! T4 J6 J0 E5 I  s
2-19 抽奖大转盘_实现分析6 x+ j% I# W* g4 z# N! p% @
2-20 抽奖大转盘初步实现1 M6 O5 K. x# t. ~: D4 j2 `
2-21 sync.Mutex和atomic改造性能对比
+ W* S7 z! B/ z1 ]$ `% g: W5 A2-22 六种抽奖活动总结8 S+ w( ~5 |1 H
2-23 并发编程与锁的底层原理
) h9 [: x. G, ]% q6 t! h! X2-24 高并发和高性能系统中锁的影响与解决办法
2 c% E# |' s, r8 L( m2-25 阶段任务+ W; n/ n8 b" h1 n; z* e

4 v- a* j" x2 r4 @/ U; M  a第3章 系统设计和架构设计【扩胸运动,有容乃大】
4 Z! U2 D3 q4 _3 V5 K0 ^  s本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
0 W0 F5 e6 x! [1 K3-1 需求整理和提炼2 N9 |; b* K6 `( j9 g5 I$ s0 Z
3-2 用户操作和业务流程/ `, V' [+ k7 R$ p" e
3-3 数据库设计
. f1 M* s. x  N$ [+ A: R: f- C3-4 缓存设计 试看9 m. U: g0 C/ x
3-5 系统架构设计2 O5 A8 y8 \3 ]5 L& O
3-6 系统设计和架构设计总结+ k* |# q+ N; ~
3-7 高性能程序设计,缓存为王
! U2 P$ y& M& Z( v" K3-8 系统架构升级之道,关注关键服务依赖: ~% x, c3 C  \, s+ k2 I1 J+ [
3-9 阶段任务3 P* S- ^! g+ s$ c# L
+ j) F2 w" y- ^# s
第4章 项目框架与核心代码【踢腿运动,固若磐石】
; Y) }: s8 `" i) R3 A本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。6 u4 P  P" f' H- v( {$ u  @
4-1 项目框架搭建
+ X9 G( F; d2 F5 e9 s7 W& B2 W2 U$ x4-2 数据模型的生成% p. ?) B- P5 |: j% e1 g- ^
4-3 核心的dao和service类+ N% s4 h1 n& E3 Z' ~( l
4-4 定义dao
6 I; C  v* a! Z4-5 定义service
' l8 l4 l: q8 ~5 p4-6 定义数据库和redis配置信息& T; E, |% r; T
4-7 创建数据库实例及其要点
" i  z0 V" q' I( M9 a- l, W* r0 ?4-8 创建redis实例及其要点9 o( _+ J* }4 {
4-9 利用iris建立web站点
  E2 v0 F. l6 \$ `. X4-10 项目配置和通用方法
+ D' E+ z% {1 ]6 b2 K7 A4-11 web站点初始化构建
% L) e# S0 i, Q9 p& k4-12 实现IndexController9 k8 u5 S4 R, v+ ~; d, X+ b) i4 |2 P
4-13 完善路由和main.go文件
3 b# c% [5 C% e0 P4-14 登录和退出:安全值校验和防篡改
7 g% \0 H, ?! f; N7 k
- C! ~# M  a0 ?0 S第5章 后台功能开发【体侧运动,运筹帷幄】+ O5 {, p# D* u, @
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
8 N) o8 P4 s" m, Z; V; i: Q7 B' l5-1 后台功能开发介绍
) Y" w$ Z7 {, q8 ^! K4 k, {5-2 页面模板和AdminController
9 q4 I3 \: ]7 v+ m' h3 D% U8 V; q5-3 奖品管理实现(上)
$ l2 d7 E8 D3 k$ W' F5-4 奖品管理实现(中)7 J5 j6 i/ z6 i
5-5 奖品管理实现(下)0 M) \7 D+ @+ S8 h2 T1 `$ x
5-6 优惠券管理实现(上)
, i3 P4 \$ ~8 H, S0 {$ g% @5-7 优惠券管理实现(下)0 P. h  ^" Q, V5 G! w
5-8 中奖记录管理: ]) V9 c7 H4 o
5-9 用户管理
5 m$ ^0 A- o+ b; ~9 }5-10 IP黑名单管理2 b" P  H0 g3 b4 W, Y
! f) ]9 D, V) t2 ?& P
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】, h. M( d4 F9 U$ N
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。$ ~, \$ W" L$ K1 p! v! V4 C
6-1 抽奖接口开发细节分析
. n# H' T  t" ^0 ~& A: @6-2 用户并发操作的锁; h  ]4 V7 c, z+ ~4 S6 t. p
6-3 验证用户、IP今日参与次数(上)
8 k; v3 ]2 M  n! w6 m" S6 d6-4 验证用户、IP今日参与次数(下)' {+ C( f5 A/ K- T
6-5 用户、IP黑名单的处理6 d' P# L( T7 x: s( T5 f, T7 d
6-6 抽奖的实现
! Z1 ]4 E% C, |/ F9 f& y6-7 发奖的实现
, u$ Q/ U/ I: N, o7 R) N9 W6-8 中奖记录和返回结果  O" _  ^% V" z4 p" ]+ x# F! W- _

4 r$ i8 E9 [9 u, p, A第7章 使用redis缓存优化【全身运动,升级版本】5 Y# W+ `% `8 g' }& x" M
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
& p% Y2 y2 b7 Y& D) M7-1 分析_奖品数据全量缓存$ Q5 b% p" ]/ ?; i5 ]% {
7-2 实现_奖品数据全量缓存(上)
2 p  N- {$ Y7 {+ }- t, e: c, ?8 z7-3 实现_奖品数据全量缓存(下)7 O' r; ?+ X7 b& t: D+ _  c+ b! f) c
7-4 分析_单个用户数据部分缓存0 Q2 \1 j( ?+ b- @
7-5 实现_单个用户数据部分缓存1 k+ `% f7 c$ v9 G
7-6 分析_IP黑名单数据缓存
. K2 ^+ h& M( {/ n' Q$ g7-7 实现_IP黑名单数据缓存
& I; A: S2 N( G- J6 e& g1 Z( g( M7-8 优化IP今日抽奖次数
- X, Z( \6 }9 ^& P& A4 z4 Z. C7 l$ L7-9 优化用户今日抽奖次数
9 T  ^9 f: H1 W) B, R! |. a7-10 用户今日抽奖次数(上)
6 K9 V: L$ h3 n; m7-11 用户今日抽奖次数(下)7 h; i* l8 v! _) o
7-12 为什么使用奖品池
9 a8 P: R+ `. {0 W" m. t# w7-13 初步使用奖品池) }1 B, q/ f# Z# O3 x! X( A, W$ e9 [$ f
7-14 分析_优惠券的全量缓存+ M+ F. I: g+ z, e% V
7-15 实现_优惠券的全量缓存(上)+ I6 Y) k4 V8 }% H: p* g. _6 Y
7-16 实现_优惠券的全量缓存(下)7 Z1 j* b2 h; Z7 L; c
7-17 使用redis优化总结
( T" a4 f9 _/ Q8 G" K$ _5 l! p# u
( w% \& X, Q& E第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】1 n4 c7 e. ?) m7 [. `: x  I
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
/ o# v* A) H$ }$ P6 W8-1 发奖计划设计分析$ Q4 b2 a6 A0 \4 O) P& N' t! k
8-2 实现发奖计划(上)
  N8 S/ o9 r( M8-3 实现发奖计划(中)& `6 u8 G. p* X4 ?' l  Y/ M
8-4 实现发奖计划(下)
- ]( t  E' u( r3 k( L) [, _8-5 自动填充奖品池分析0 F# q$ T) B# `8 Y  i' v2 X5 e" B
8-6 实现奖品池(上)
1 O. N; G+ W4 h9 u8-7 实现奖品池(下)
! G8 Y& o/ X; |8-8 总结发奖计划和奖品池8 U6 Q6 z5 r: W+ Q" Q

5 t9 ]" a3 y5 r, J; U8 E; v. `第9章 完整性演示以及更多总结【整理运动,整体交付】- K/ a/ g. d+ M8 }6 v! e  Z4 M
实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 .../ K3 {& |' P" f0 R. R
9-1 前端大转盘分析
8 T* Q0 @+ s* A1 j9 y9 A) \/ `9 u$ d9-2 前端大转盘效果实现5 F5 N& ~# }  i2 l; _
9-3 优化奖品设置分析
$ A, n& B( o1 W  F: a9-4 优化发放奖品分析
0 A, {7 q& L0 G& n8 v3 x0 P# [9 l9-5 再来一次压力测试吧
0 g7 b# m' ]" u! a" n$ N9-6 压力测试/ H7 z- m7 N! y- e
9-7 更多运营策略
  H# A* X& }$ [9 {- G
( {9 Z# M+ A+ \& ^1 @/ U第10章 引入thrift框架【附加运动,扩展服务】
9 U" U2 a& _2 `% [) u通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。" [* M3 Q  j; s* h0 E* I1 q6 o
10-1 了解thrift
3 t2 ~6 N" T# }9 ?+ s6 M10-2 定义thrift文件
1 ]# e( a* m7 J; q* H6 r9 |, K10-3 生成代码
# i+ @0 l5 [, y1 q5 r10-4 服务端接口(上)
- v/ W- M; Y, ^/ K10-5 服务端接口(中)9 ^* [( ]6 K- s+ F/ d
10-6 服务端接口(下)
7 P6 N8 N: T1 ^; X  q10-7 客户端接口: \& s7 T- _9 N  ^
10-8 总结
0 e8 t4 N8 \  i! d, U
) T4 I! Y$ I% V* S- H第11章 课程总结【结束,沉淀】* x4 V  J2 g* W5 n
对课程进行总结
4 r5 l7 \8 L" \/ A+ ^11-1 问题与思考) s* g! C( x2 ?8 J
11-2 课程总结' f& ^1 ^( b) P3 Q& v8 k

; K3 g. j+ c+ ^7 m6 l) G) z〖下载地址〗( f4 t7 o3 D6 X8 c" L( r  Y
游客,如果您要查看本帖隐藏内容请回复

$ f( J) O. j7 f& D0 m& S$ V; G& a* c5 C; N: ~( Y: f
  w* g# k7 m: p/ }- E+ h
回复

使用道具 举报

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- d3 V# I3 a* _% [
你这个是可以在线看的吗

: X; C! \' u( n) ~, I可以的! z: [; E) }8 q/ y0 B
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则