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

  [复制链接]
查看12437 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
7 G6 n2 U5 ]" b〖课程介绍〗
% y7 k$ X9 D7 |3 P抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
3 h: B: i! z* M/ ?3 V6 y$ D
6 F1 \$ ]& k5 z$ R$ L" E  F+ R6 D〖课程目录〗
+ Q, e: }- w) H# A7 ]$ j+ e( z第1章 课程介绍【预备,初识】
6 D$ t. D  t% W  k+ c课程内容的整体介绍以及学习建议。
0 }( h  o$ C5 f; Z+ m5 A- \1-1 Go抽奖系统导学 试看: u1 b, r2 o7 B% I0 R! b7 T" J: G
* A# u, V9 a" }1 }' ^7 P
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】/ r. o+ F7 B5 q7 `/ s; a" E
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
4 r& Y5 r* q& R# v1 ]1 z; Q2-1 年会抽奖_实现分析2 e* ?4 T2 Z% V* H- n1 O5 r
2-2 年会抽奖基本功能实现
( c) i' T( U/ {# d+ t1 U2-3 编写web单元测试和并发安全问题
/ i3 O$ v( q: ^) H: E% q" l2-4 用互斥锁解决并发安全问题; M$ ?6 i2 F& I! e' o# w/ s
2-5 彩票_实现分析$ `1 s/ b# d# ]) U$ ]% e1 [/ {
2-6 刮刮乐和双色球 试看$ c* f$ a3 @% h, s! u* g5 T
2-7 微信摇一摇_实现分析  Q0 ]' t8 a/ `
2-8 微信摇一摇实现(上)
5 J0 @; y: |9 h$ Y' T* |- b4 W2-9 微信摇一摇实现(下)+ W# T0 _% ?% Y8 Z& |& c
2-10 bug修复和压测
9 \5 {9 M: S; H( v$ n$ p5 D2-11 支付宝集福卡_实现分析( Y1 h1 H$ d0 E4 q& D/ T
2-12 支付宝集福卡实现
; j- C0 b: n) x$ n; T( w2-13 微博抢红包_实现分析2 U/ Q7 J  u+ a
2-14 实现发红包4 Q/ C( h! G1 X7 Q; P
2-15 实现抢红包* E  b4 R; \. G1 F( o
2-16 均衡问题和sync.Map解决异常- T8 p6 O8 S- f* x4 q" C+ q% \
2-17 改用chan的方式解决并发安全问题# ~4 P7 D+ c0 u4 P3 a
2-18 再次压测验证和优化改造
4 I- \- e$ Y4 l2 k" I% O# ]2-19 抽奖大转盘_实现分析
6 a) [/ ~3 ^9 W2-20 抽奖大转盘初步实现; n# N) ^8 }( _% g
2-21 sync.Mutex和atomic改造性能对比- W7 G: A. d$ \8 |0 Q7 B$ G
2-22 六种抽奖活动总结6 }0 k0 v1 ?6 s& p1 Q
2-23 并发编程与锁的底层原理2 A+ |* l, [) ^  C1 {' ~! E
2-24 高并发和高性能系统中锁的影响与解决办法( d7 j0 Y  P" p! e+ ~
2-25 阶段任务% t  C1 c$ Z% I" ^$ L8 X$ G- l: N/ H6 ~

9 {2 o5 G5 V! ^' Z  k% J第3章 系统设计和架构设计【扩胸运动,有容乃大】
' k5 C7 y2 S2 T' |* J本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。. o( T5 a# z2 W& p# N! X0 }1 T/ I" I
3-1 需求整理和提炼0 Y; m5 H" Y6 y* ^7 D9 ~* _" n
3-2 用户操作和业务流程
6 q7 g. i$ H9 ^5 x; d) l. k) Y! H3-3 数据库设计5 o, a( d- `) E! O8 X: w
3-4 缓存设计 试看0 g; n7 U$ m$ V: r2 c
3-5 系统架构设计
& Q8 Z! h( j9 W7 \0 B4 d- T, U3-6 系统设计和架构设计总结' j1 r5 C* t" P3 ~( ~" o* |4 f
3-7 高性能程序设计,缓存为王2 y, T9 D  U5 p9 t$ s& K
3-8 系统架构升级之道,关注关键服务依赖
' }4 X: r) @$ v9 x' ~3-9 阶段任务
1 t. S. a+ c, N- ~( Z* k1 v+ A
! M2 [  d: q$ ~第4章 项目框架与核心代码【踢腿运动,固若磐石】
& E1 d  D8 W: {6 R  s3 I+ m本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
4 y9 f) B2 @# \7 J5 \4-1 项目框架搭建
9 S- G5 R1 e, Q& a4-2 数据模型的生成
/ _, c/ A: \, y; y4-3 核心的dao和service类
2 Z0 l& j+ S5 c( D9 n5 R' l- y; R4-4 定义dao: o9 x) M$ X# Z" E# G1 N' S
4-5 定义service
& J( y' N8 Q: A$ d. t* }: `6 m# v! Q4-6 定义数据库和redis配置信息
# p9 W3 P1 \; }, H% V; Y  s/ f. P4-7 创建数据库实例及其要点/ g' Y: e. v0 F6 D$ M7 J& g3 Z
4-8 创建redis实例及其要点( i2 c6 B. Y- @# W7 a) J( D8 b/ O# V8 X
4-9 利用iris建立web站点" W6 R; h% i+ M6 C
4-10 项目配置和通用方法
* c: A5 M8 \9 {* q& G4-11 web站点初始化构建
  t& @" X! m0 ]: h, {& P4-12 实现IndexController* {) ^8 V7 `# O" q
4-13 完善路由和main.go文件: I+ f% ?7 G  D7 k5 D
4-14 登录和退出:安全值校验和防篡改
% ^8 k. q' T& {8 {' z0 k% K
! C  p8 o( Z8 U8 }第5章 后台功能开发【体侧运动,运筹帷幄】
# A$ ~5 `* S% L6 u2 W* P1 I4 b一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
0 p! O, m# J- @5-1 后台功能开发介绍  J! R6 F5 `. s" g7 ?, J& \! |
5-2 页面模板和AdminController
0 c* p6 E- z5 C! Q# n" j6 T8 e5-3 奖品管理实现(上)
# D( x! C1 F$ u  ]/ i, j5-4 奖品管理实现(中)" i% ]" ^/ }: L" r
5-5 奖品管理实现(下)
+ o/ ]# `5 X* d. [* T# i9 I2 M6 b5-6 优惠券管理实现(上)# H5 h- b/ y! u2 a1 F
5-7 优惠券管理实现(下)+ x8 `) U5 ~) v8 P: F8 o8 Q6 q
5-8 中奖记录管理
% I- g& O& s# a+ C2 S2 {5-9 用户管理4 H  q6 n1 C, c; L& l+ B! O
5-10 IP黑名单管理
; L+ z/ K* A2 D; u7 B' F) j, M8 z+ k/ L9 G: U7 v2 l
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
8 y3 A6 `$ x, u  w: J( K" G1 p' E本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。
: U5 j( J+ d& ]) O" W; R6-1 抽奖接口开发细节分析
2 ?) ~8 F; s/ N, Z6-2 用户并发操作的锁
1 d$ d5 l) T' ^" ~6-3 验证用户、IP今日参与次数(上)2 o% R: T" O" O2 O( e0 e2 `. \
6-4 验证用户、IP今日参与次数(下)# F1 L; W- f; H3 M" V6 e8 s
6-5 用户、IP黑名单的处理
5 m8 j7 u2 L0 G2 K* T1 e' X( U" y: W) }( S6-6 抽奖的实现
, |$ J+ T, W# k, @2 F* j6-7 发奖的实现6 S1 h% s# W! s5 x4 d, e3 d. A
6-8 中奖记录和返回结果2 {3 v) w4 L( |3 n/ m2 o
6 H4 {- _. J* r# s" d+ t8 z& P
第7章 使用redis缓存优化【全身运动,升级版本】- E. F& i. C9 q7 P" t; P& u
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。( h' y8 Q' F: u# m, E. [$ g
7-1 分析_奖品数据全量缓存
, ?: E" k5 O7 O9 Z+ m7-2 实现_奖品数据全量缓存(上)) A! f/ ]8 u; L  ?
7-3 实现_奖品数据全量缓存(下)2 S* v1 q; b5 k7 x8 s
7-4 分析_单个用户数据部分缓存
; \7 k. i+ F# ^2 f* Y3 H5 j7-5 实现_单个用户数据部分缓存/ S2 p+ O7 [% t
7-6 分析_IP黑名单数据缓存
7 A5 H( {; I0 e7-7 实现_IP黑名单数据缓存
2 h  k/ u0 N$ z# p( T" g! O7-8 优化IP今日抽奖次数
+ Z4 T" ^4 c* K/ a! q7-9 优化用户今日抽奖次数
/ ^1 E1 S! h, d7-10 用户今日抽奖次数(上); W& l( d0 y# H
7-11 用户今日抽奖次数(下)0 U! Y+ X- o0 N) h7 J5 i* u
7-12 为什么使用奖品池
# q  [: s/ P% e7 ?2 w0 S% Q7-13 初步使用奖品池
8 n2 E" m3 e1 H) R, {7-14 分析_优惠券的全量缓存+ Z" ?. G+ L7 Y
7-15 实现_优惠券的全量缓存(上)8 P1 l! U- z! `
7-16 实现_优惠券的全量缓存(下)
+ _. j: w9 l9 S) r# X6 k7-17 使用redis优化总结
2 P3 s8 q, o+ R4 O! N* W% y, V5 ~; I  g/ ^3 F
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
9 ?2 G5 X' A' q: q本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。6 ?' t. y9 ?/ }$ c" @
8-1 发奖计划设计分析
# }8 B3 F! t+ I% c' m. U8-2 实现发奖计划(上), k% M7 K- [/ p$ ?0 l
8-3 实现发奖计划(中)
$ g5 g. M$ \( N8-4 实现发奖计划(下)
/ S( b' t/ {* @0 M! A8-5 自动填充奖品池分析: e; o. M: T9 T9 h  @
8-6 实现奖品池(上)
. a, T2 F* g/ r$ s4 X8-7 实现奖品池(下)- ~: x. ~% G$ f( u
8-8 总结发奖计划和奖品池
& e3 J0 p4 z, K+ Y" U# O! I) b, N" T5 ^% e+ U' O! U
第9章 完整性演示以及更多总结【整理运动,整体交付】
" V# z5 ^$ b/ P; e1 a实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
. B" E: ^* t+ Z9 z) U8 U9-1 前端大转盘分析6 F4 A3 K5 e' T+ x& a- e
9-2 前端大转盘效果实现# Y: a4 U* A9 L/ Z
9-3 优化奖品设置分析- W, |* R- n) c" g1 d+ c* H2 j
9-4 优化发放奖品分析/ \! Y+ @& Z0 O% }8 e! N8 V6 S' |
9-5 再来一次压力测试吧& F, L, ?' s7 n) K2 v, F0 g8 w1 X
9-6 压力测试
' P2 X: H5 [$ i) }9-7 更多运营策略5 H+ G* q2 Q& D. b
& O% c5 X- }& e" |# W0 V4 U' N
第10章 引入thrift框架【附加运动,扩展服务】: l! c2 t" e8 }' o2 _! A( U7 o
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。7 ]" u* [" f6 J1 U+ m5 b8 e' m" S
10-1 了解thrift5 D+ r' b% w' @0 W' r, H. k
10-2 定义thrift文件
- \, \) `) ~7 y" X/ u* I10-3 生成代码
: ]/ R& M' i% o! O+ K10-4 服务端接口(上)- y1 r% |! T# x# v
10-5 服务端接口(中)- u1 |) c6 n: _  e- s
10-6 服务端接口(下)# C8 u# Y* N& |$ M  B' e' Q
10-7 客户端接口7 K1 L* ?- Q" @) \1 M+ E7 ?
10-8 总结
1 d# [5 ?4 s, l
" u: L9 J$ ], P, p& R第11章 课程总结【结束,沉淀】
  _6 j4 S% ?4 j) m# J' ~! z+ j对课程进行总结
/ ^4 w( m. ^/ M5 A9 x6 X11-1 问题与思考" g5 [8 L; I# q2 P2 g* h9 Y3 |+ [
11-2 课程总结% J1 T2 ~/ H: e; B' G! D/ z
6 O- L2 ?0 b" P4 ?. H. [
〖下载地址〗
( o2 Y( G0 h/ I" A  u2 @0 `
游客,如果您要查看本帖隐藏内容请回复
: k. l9 v  c, l: p2 d9 s

' |' f, K# K' p  G9 P; K' d, M( j
回复

使用道具 举报

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:335 [" A" D' T) e9 f' f  `: E
你这个是可以在线看的吗

0 T: I" d7 E7 n4 @可以的2 n: o! j$ F( X
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则