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

  [复制链接]
查看14842 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
1 m# E0 B9 p, n〖课程介绍〗1 U- d0 Q0 P1 b$ m
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
+ W2 }. g8 m9 u; p; ?( T. w3 J
; b- I5 _! X% u3 X3 o, V2 ~  M  Z5 H〖课程目录〗5 v& e2 b: C; ]! |. M' |% b
第1章 课程介绍【预备,初识】
* ]! r5 H5 \: H! D3 Z课程内容的整体介绍以及学习建议。
+ t, s" ^( Z# U% x3 b. O1-1 Go抽奖系统导学 试看
& {, G+ o! _7 u3 A. u4 N+ }4 e
1 L: C4 Q6 t/ O8 n; h9 @第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】
, y* z2 Q1 D6 D4 P7 j7 L1 f看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...( {: L0 I2 v0 T
2-1 年会抽奖_实现分析
8 J* S3 [. j0 p3 U" w& `' l0 t2-2 年会抽奖基本功能实现) a2 M$ t' G& G7 N5 ?; T
2-3 编写web单元测试和并发安全问题4 W9 u( R% \4 Y3 X- J9 |$ [( G
2-4 用互斥锁解决并发安全问题4 X5 t; i+ r4 S* v1 m+ v
2-5 彩票_实现分析
, f; U  s" H/ x4 }5 t9 P! l2-6 刮刮乐和双色球 试看  n6 K& N3 F8 s' r0 N
2-7 微信摇一摇_实现分析
* [+ p+ F. r, [3 V2-8 微信摇一摇实现(上)/ t( j, ?' X! K& G9 e8 M8 {8 n+ @3 i
2-9 微信摇一摇实现(下)
/ L( w: J8 d' ^3 Y9 ?2-10 bug修复和压测( o5 y# s7 y. H: N# Q- M/ T! u: E
2-11 支付宝集福卡_实现分析
4 K5 b8 g8 l) p( {) I& S& y2-12 支付宝集福卡实现
! l7 }: o8 I, }2-13 微博抢红包_实现分析
1 v; U1 O  [& q  ^& I2 B6 Q9 }( ~2-14 实现发红包) Z  ?! ~9 D; T0 T! m0 u
2-15 实现抢红包. r9 ?$ h5 @6 T' p
2-16 均衡问题和sync.Map解决异常2 k2 @" M1 J* ?7 y" v/ F4 C
2-17 改用chan的方式解决并发安全问题
5 Z5 b1 `) M- _# Z2-18 再次压测验证和优化改造
/ t! V. X- K" u4 ?7 G2-19 抽奖大转盘_实现分析
( l0 D7 \& V1 A+ t+ z: m! f2-20 抽奖大转盘初步实现
+ p; ~" u* |" `. l( X' ~2-21 sync.Mutex和atomic改造性能对比+ x4 l$ }3 x3 m8 f( A" ~
2-22 六种抽奖活动总结" `" o# h: @+ W, H: _
2-23 并发编程与锁的底层原理
! f3 A! Y! t* t2-24 高并发和高性能系统中锁的影响与解决办法) K0 n+ b: ]9 d( B% R
2-25 阶段任务
, ?1 S9 I# k# [+ |5 G; c* e( Y$ }& r# _! q+ x: w& ]
第3章 系统设计和架构设计【扩胸运动,有容乃大】
7 I: h* f4 D+ L; w本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。8 z( |/ r- o# O0 ]4 k2 ]- V( F5 B) g
3-1 需求整理和提炼
' a, f- S4 w- \2 O- l9 H* Z3-2 用户操作和业务流程6 i) }( r' Y: H) I
3-3 数据库设计
9 @! y' u, ]( F) R3-4 缓存设计 试看
& @- y  t) V5 R1 G" h5 E% o8 q3-5 系统架构设计1 }. S" e3 j( ]; x* i" {4 I% I
3-6 系统设计和架构设计总结% g! {9 E' \4 n" o
3-7 高性能程序设计,缓存为王
. G% E3 y/ a# p" W1 N8 F, c3-8 系统架构升级之道,关注关键服务依赖; q( Z1 @# E4 N1 q* a. U! _
3-9 阶段任务
7 {) m5 E# ?2 s9 T8 g9 W; I+ f5 E0 J' Z
第4章 项目框架与核心代码【踢腿运动,固若磐石】
+ N' S6 A0 j: w! G# l: _- P本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。% k5 p6 \3 ~' E' G$ b; |, d
4-1 项目框架搭建  g2 N( t0 y2 z! ?0 s; {, X) I8 v
4-2 数据模型的生成
2 Z5 _1 m5 y; @4-3 核心的dao和service类
, O" p0 @  C/ V  l; X$ k4-4 定义dao
  ~; u2 G2 l' }4 }% e4-5 定义service+ v* U# }: n+ t: b, R. c# p3 p
4-6 定义数据库和redis配置信息3 Q' U; x- C* K! E- r" W+ w
4-7 创建数据库实例及其要点
% a+ m+ k6 O2 c9 a3 e& ~) k4-8 创建redis实例及其要点
6 y; g" s! P' E( l& W/ W4-9 利用iris建立web站点3 {0 n; F5 E6 Q& |
4-10 项目配置和通用方法
4 ]' p/ q* ]0 e$ L' Z! O  G4-11 web站点初始化构建
/ I8 w2 j2 {" y3 Z: _& ~4-12 实现IndexController+ Y: U7 N- e! O/ ^+ a# f# M
4-13 完善路由和main.go文件. P* v( W5 q3 O/ {+ S
4-14 登录和退出:安全值校验和防篡改: H& z+ @8 O4 K) ~( _1 q

+ s% V$ B( L& [5 A2 A+ ]) o1 `第5章 后台功能开发【体侧运动,运筹帷幄】$ [. U8 h. l3 l$ q8 z
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
0 J! \3 O' x: K8 I5-1 后台功能开发介绍
) Q9 m$ i1 l1 k4 Y5-2 页面模板和AdminController% h: B& B9 `# i& r" e+ [
5-3 奖品管理实现(上)
- J2 p2 K- r! h* V1 k, Z: o9 X5-4 奖品管理实现(中)
! {' l1 ?/ L7 E5 A% o/ t5-5 奖品管理实现(下)
2 [3 A6 Y! Q$ {- b5-6 优惠券管理实现(上). d: e; O% B  F) F& J. [+ F
5-7 优惠券管理实现(下)8 t$ E, Y# b2 t# i. X
5-8 中奖记录管理" H* u. t& q* P6 l* z1 p
5-9 用户管理4 z$ Y0 y6 r/ O& [6 F( A
5-10 IP黑名单管理! C$ V7 M% V- v% P7 e2 ~
7 {0 v5 j% |# Y  P7 q  p
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
) ~9 Y" l, ?3 d2 h. z: U本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。& M9 X9 }: G" H, v" Z2 B" n3 m. l* ]
6-1 抽奖接口开发细节分析" I) s  {4 ?1 p9 F$ M# ~
6-2 用户并发操作的锁
! q( c& H5 z% }! D9 S. z6-3 验证用户、IP今日参与次数(上); W* u/ a; ]. ^& t& S8 v
6-4 验证用户、IP今日参与次数(下)% y) Y3 [0 |4 C! R5 ^
6-5 用户、IP黑名单的处理+ F9 s0 }: E( R  S: d. D8 g4 X) F' f
6-6 抽奖的实现
( p9 b6 c3 m, ~  I. E: ^) l3 U( K6-7 发奖的实现
$ J& P5 g" K) ?* J& F9 F4 w& }7 A6-8 中奖记录和返回结果
) r. M8 q2 u' d/ v( |, m; T5 _! m* `# L% D' p
第7章 使用redis缓存优化【全身运动,升级版本】
; k! ?1 D) z# g) L2 X$ ]3 f2 l本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。5 A4 ^/ B4 b3 m9 y) T. U
7-1 分析_奖品数据全量缓存
8 K7 Q2 b7 j1 V5 T7-2 实现_奖品数据全量缓存(上)
1 h6 L& f- W4 P5 `* b7-3 实现_奖品数据全量缓存(下)$ M% o$ b2 `+ {' q3 K5 s2 z% W
7-4 分析_单个用户数据部分缓存$ \/ k! [) d7 K/ T+ y
7-5 实现_单个用户数据部分缓存( r7 B& P, i) g- N: G4 o0 R
7-6 分析_IP黑名单数据缓存& ]$ Z- _  {# C
7-7 实现_IP黑名单数据缓存
- I3 `7 g/ i, T6 X& k7-8 优化IP今日抽奖次数
# T$ ^- R5 e0 w7-9 优化用户今日抽奖次数
/ h1 Q) l: n* M7-10 用户今日抽奖次数(上)
7 a! b3 T/ y/ r3 u! F7-11 用户今日抽奖次数(下)7 i* ^* U) F3 Z% P' o1 v2 j) y
7-12 为什么使用奖品池
/ U4 c1 s2 p4 c0 s7-13 初步使用奖品池
, Y( \, E  l$ {3 w" d' J7-14 分析_优惠券的全量缓存
0 S2 c+ X/ u0 i) ]' ?* V' x- F7-15 实现_优惠券的全量缓存(上)
! X# o  h$ ^, w- i7 l& t7-16 实现_优惠券的全量缓存(下)
0 F, X' q; U, g5 ~+ R8 q8 x* s7-17 使用redis优化总结
. A1 q2 N* F$ E9 a2 v* ^5 t6 v; ^
4 M( i! F( Y3 M/ p. k第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】
: M4 o0 I9 Z! v0 I% Z本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
5 }  L9 j# }3 F. ^8-1 发奖计划设计分析
% c' H8 K2 c+ c) c0 x2 |1 o- O8-2 实现发奖计划(上)
7 J; `6 g) @8 @* O2 k8-3 实现发奖计划(中)
- B3 h" S: E9 Y; {8-4 实现发奖计划(下)
4 E7 X3 b8 |) h" m  q, `0 \8-5 自动填充奖品池分析
: s, N! ^( I" w( o8-6 实现奖品池(上)1 n2 C6 |5 _# `; o; Q; d8 l
8-7 实现奖品池(下)
- \1 ?+ E. Q9 q8-8 总结发奖计划和奖品池
7 ], ]7 g/ G5 g3 K  S
  l* U9 o, B4 W4 [* R# F第9章 完整性演示以及更多总结【整理运动,整体交付】
4 {9 M0 ?; K7 o2 ]实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...* ^, s' ]2 g$ q
9-1 前端大转盘分析
. T; ]( y% a* q9 |, D2 N: n8 q9-2 前端大转盘效果实现0 B; T. p; a! u7 o) H2 D
9-3 优化奖品设置分析  ?& p  Z% x" ^, \1 W
9-4 优化发放奖品分析# V& C- T' Q; B9 D2 Q/ c' e
9-5 再来一次压力测试吧9 a- T6 a2 \! F0 D- M
9-6 压力测试9 s; N' ^; e- _  y+ r. J& v# A
9-7 更多运营策略# g6 K* ?6 \9 |. U' A
6 j3 `  K3 `  Y; H5 I! ?
第10章 引入thrift框架【附加运动,扩展服务】; F/ d7 n; X2 ^( M4 G6 t
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
# h. D+ N1 ~6 M- t0 d, u10-1 了解thrift
% W$ m& A6 c* O* l! I6 x10-2 定义thrift文件
# }+ _7 L1 f, e$ x' S10-3 生成代码
% H, W6 m, P' b1 ], D5 H; K10-4 服务端接口(上)
% u5 P' E( y' Q9 ~: h: M+ F/ l( V( N10-5 服务端接口(中)
  Z( U1 I& Y0 P% g4 J6 H1 Z- c$ X5 J10-6 服务端接口(下)$ S3 t" P* T% z8 Z+ R4 W
10-7 客户端接口  o! Y% Z; |+ w- l
10-8 总结6 x0 A  J6 d; Y, v

. q! H2 A. |& c' J, P第11章 课程总结【结束,沉淀】) z/ Y5 v5 p! t" r* G+ d  A$ g
对课程进行总结
) ^4 O, Y5 g5 @2 |; d0 U11-1 问题与思考
. i$ k" n* T7 J/ b1 ?0 u# \11-2 课程总结
2 m" S  r" v, s0 B
' B; ~3 }( s# @* K. i, V* j( {- A. a〖下载地址〗& h1 U6 s) }. }. X/ @
游客,如果您要查看本帖隐藏内容请回复
' }) S9 P$ z; x5 b( R1 D

" D( \5 x7 o5 g  |" T/ S# B
$ u. E$ g; E, k/ s, B' P1 m' {4 ^2 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:331 l; d( K) Y) H
你这个是可以在线看的吗
+ J! o4 @  t# x) A9 y
可以的
+ ]# x/ t7 A! |3 y
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则