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

  [复制链接]
查看10937 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
( F1 L+ i9 B/ q4 W! G〖课程介绍〗9 s+ Y3 ]4 |8 W' h/ t' t- s3 S
抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
( [$ c' n' j5 z0 k2 R6 g/ w+ B, I" \, n, J" M( ^9 a
〖课程目录〗
' R" M7 f& U; n: y9 h+ M7 n第1章 课程介绍【预备,初识】
+ |5 ?8 I* u) E3 w5 h课程内容的整体介绍以及学习建议。5 V- D% r0 \- p. a. k
1-1 Go抽奖系统导学 试看/ C& r8 L) D# g8 g. F& O- y- A
( |, w' l, I5 |. P8 k9 m2 W* S6 D
第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】7 j% C% `3 F- b- ]& |
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...% @2 H3 {  g  o
2-1 年会抽奖_实现分析
4 s! V* c, ^& l2-2 年会抽奖基本功能实现
) v3 r9 L" R) V' \. ]2-3 编写web单元测试和并发安全问题* d) p% H- P( Q8 p
2-4 用互斥锁解决并发安全问题* r8 W+ g, X7 O! p+ Z/ L1 M) J
2-5 彩票_实现分析% F. f5 ]  c" K( h' ^: B
2-6 刮刮乐和双色球 试看
  |" z- [2 ?0 d7 t: C3 l% n2 Y2-7 微信摇一摇_实现分析
( |! o8 S: g3 t/ L" p' z2-8 微信摇一摇实现(上)) _0 T/ d/ m8 I8 Q3 d
2-9 微信摇一摇实现(下)/ g# \7 l3 b& k* f) A1 H5 E7 ]/ |$ g6 f
2-10 bug修复和压测3 d" d  f+ A' c1 P$ D( E+ U" I
2-11 支付宝集福卡_实现分析
* X. M& K% z" n3 u: m2-12 支付宝集福卡实现4 S4 l) H% `1 d) i( {- @% y
2-13 微博抢红包_实现分析7 h2 |! K0 {" Y) Y* A! K+ Q
2-14 实现发红包4 A" M1 d% o6 X, U, l9 b) x) i
2-15 实现抢红包( x- b; e' C7 _1 X& Z0 q9 p; }4 E+ A6 w
2-16 均衡问题和sync.Map解决异常4 u5 h( K) F/ h% d% S# P
2-17 改用chan的方式解决并发安全问题
; n$ z8 E+ r% K" v: i' Y2-18 再次压测验证和优化改造
' J- b; n( [# u; Q3 r" ~2-19 抽奖大转盘_实现分析
; }  g6 w2 p, q' O, N2-20 抽奖大转盘初步实现% e! h$ D* J- D. H+ `
2-21 sync.Mutex和atomic改造性能对比/ V# s: C; B- U* b! h& u7 ~5 E1 y& R
2-22 六种抽奖活动总结
9 }9 r; q9 W" J7 y+ b& k0 j2-23 并发编程与锁的底层原理
& y) q/ O3 j! E  h2-24 高并发和高性能系统中锁的影响与解决办法
. r2 p7 p2 f4 L9 I; W  U2-25 阶段任务
! g9 I, g/ M' ^* l" X1 @9 A4 V1 }5 @% w
第3章 系统设计和架构设计【扩胸运动,有容乃大】9 P. K* G2 E# K( v* u
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。7 f' Z) f# N) N1 e7 k  M+ i
3-1 需求整理和提炼- d" ^& W3 F" x. O* ]0 r& j$ M$ q
3-2 用户操作和业务流程8 F+ r0 Y. i( O; p( ~( D
3-3 数据库设计/ i( D" a3 i( d8 k/ o5 z
3-4 缓存设计 试看
+ u. Z$ r: J3 I# u$ B7 U. z3-5 系统架构设计
8 t$ Q" X6 n8 u3-6 系统设计和架构设计总结
$ h1 A9 C' G  s' u% T3-7 高性能程序设计,缓存为王3 e0 a' v+ r, f! R' Q/ H3 ^
3-8 系统架构升级之道,关注关键服务依赖9 \1 q. Z; T' l, R
3-9 阶段任务9 h& W& d' y2 r

7 E# v8 L" z6 x& j& t' o第4章 项目框架与核心代码【踢腿运动,固若磐石】) g0 Y2 k0 j% {: {* j" }- s4 N: t
本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。4 E. ^0 \$ I$ l" W8 x8 z# d7 a
4-1 项目框架搭建
# n% \  v# l# I% U. P% t# [4-2 数据模型的生成7 \4 F/ K! |0 T* J2 Z/ q1 D# M
4-3 核心的dao和service类
0 U% G; t9 Z. P- X6 H" m4-4 定义dao
# T  Y- g( l/ A+ n. F- N0 n4-5 定义service
2 R3 J8 ~0 b$ p' b7 n  ^+ A  X4-6 定义数据库和redis配置信息3 n2 P5 j. O& @) A1 f
4-7 创建数据库实例及其要点
9 }, _8 E9 s2 _3 Z2 E4-8 创建redis实例及其要点$ m0 h6 w7 `5 E
4-9 利用iris建立web站点1 m1 T! H0 w9 _
4-10 项目配置和通用方法
3 H$ S% b" v: ^; T7 U; s4-11 web站点初始化构建
5 j7 a+ P1 r3 K2 ~; F& h4-12 实现IndexController
3 l" F3 k2 A/ s; Q7 L4-13 完善路由和main.go文件, H8 N& X2 ?7 E
4-14 登录和退出:安全值校验和防篡改" k/ P$ k, F% v2 O: Z

" [7 Q% O/ }- X第5章 后台功能开发【体侧运动,运筹帷幄】* o8 Z' `4 `% Z& {/ u
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。
: b8 [  H4 H$ H5 Y4 _5-1 后台功能开发介绍$ C& `8 [3 {: n* ?0 D
5-2 页面模板和AdminController% x+ G& P" H. R! a/ A2 p
5-3 奖品管理实现(上)3 L# L* A% Y  Z5 n
5-4 奖品管理实现(中)
. S( b% @8 f' ?% V: k5-5 奖品管理实现(下)
3 z% F" d; z3 V5 R5-6 优惠券管理实现(上)
% ^7 J. e8 y- i( ^, {4 m1 `5-7 优惠券管理实现(下): l$ ^/ n9 g, {6 w5 r& O
5-8 中奖记录管理7 J1 V  n( i8 U9 s
5-9 用户管理
6 E* o; M% o; L9 y: K5 f7 e. [5-10 IP黑名单管理
) |. D- z5 T7 Q" c' t( q4 B
! Z5 ^% h( a( i1 Q" t第6章 基于mysql的抽奖功能开发【体转运动,基础版本】
) B$ H( i9 W$ A6 D8 b% x本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。. X- o2 G. U6 H$ ]; P7 z+ M9 O' }
6-1 抽奖接口开发细节分析# M; y, t- {' c: C# }
6-2 用户并发操作的锁9 x. k; ]2 v4 _3 G+ ^
6-3 验证用户、IP今日参与次数(上). k9 @# u$ Y7 W) n
6-4 验证用户、IP今日参与次数(下)
9 r% M2 x4 t: N+ g6-5 用户、IP黑名单的处理; r; v! O& {# {! m7 ~! V: C
6-6 抽奖的实现: E# \- [) Y- J0 T% H* B
6-7 发奖的实现
% @2 f- N5 G. ]1 p. Y  F- y+ f$ q6-8 中奖记录和返回结果/ I/ U& `  N2 ~; z5 t

6 s: M0 k0 |6 e# L; o第7章 使用redis缓存优化【全身运动,升级版本】
# O+ t; h' b% o4 a" m6 @7 \本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。
( b' N0 l* z& g# N6 F6 ]7 Z7-1 分析_奖品数据全量缓存
% A+ e" k# x6 ~# r7 S$ b9 R7-2 实现_奖品数据全量缓存(上)
" f$ i* e7 x2 x1 J) k7-3 实现_奖品数据全量缓存(下)
6 I% w* u, P* A0 [5 A' l7-4 分析_单个用户数据部分缓存- }0 d* t' `. s4 R; e& e
7-5 实现_单个用户数据部分缓存
  i. d7 V9 ?  {- Y% a  K' C0 \7-6 分析_IP黑名单数据缓存
9 d, i( Q8 L7 U0 [- V7-7 实现_IP黑名单数据缓存
" d) E) D9 V; X8 w! D0 N5 v7-8 优化IP今日抽奖次数) ]$ I, U: E! k* x' ^
7-9 优化用户今日抽奖次数
$ _7 Z: u6 x; R5 I3 x1 u) H7 d7-10 用户今日抽奖次数(上)
! N1 ^# {5 L5 ~7-11 用户今日抽奖次数(下)
# x2 E3 x' ?) u+ k$ P7-12 为什么使用奖品池/ F! [, Q* U& B& d. k2 ]
7-13 初步使用奖品池
- X  _- o  o8 z9 s$ r+ _3 Z4 Q7-14 分析_优惠券的全量缓存8 T" h3 Y  p! l& i) {
7-15 实现_优惠券的全量缓存(上)
4 G/ O1 i- ~+ X7-16 实现_优惠券的全量缓存(下)
4 E0 }, s6 O6 ?8 m) c7-17 使用redis优化总结
8 N* D8 N7 A/ Q1 r  X: z& @% S/ Q8 }- L
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】# g+ z' }* V4 e
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。
7 [/ z; @" T( @4 l  s5 z8-1 发奖计划设计分析. W0 `. n6 v0 c* U; y
8-2 实现发奖计划(上)
: P, _9 x/ `0 r; z8-3 实现发奖计划(中). [- y: Z8 }6 k4 ^2 i) m
8-4 实现发奖计划(下)& U4 C6 r7 J0 `8 z1 [% H) e
8-5 自动填充奖品池分析
: U' c$ |: ]  S8 u6 t8-6 实现奖品池(上)
; j, Z2 c, i; H' y6 I9 x6 ^5 p8-7 实现奖品池(下)* G, R8 L3 [8 \! T# J2 d* m2 l1 @7 n
8-8 总结发奖计划和奖品池
) H3 V5 |% p- H3 Y
3 J) V/ m& S, `& k! n! W: l* s' _第9章 完整性演示以及更多总结【整理运动,整体交付】
4 v! l9 ], p6 t7 g2 ^, o实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
. |% ]# {9 W+ X) X1 R" o: J9-1 前端大转盘分析
" Y2 c2 m* x5 W, ?9-2 前端大转盘效果实现
  ~6 k9 h+ S9 k+ i9-3 优化奖品设置分析$ k; {7 t) P9 }6 n
9-4 优化发放奖品分析. w1 s. C# k4 a& p* b& T
9-5 再来一次压力测试吧5 Y! y- Q3 e5 w. ]4 z5 U
9-6 压力测试: _) g2 \7 J8 [/ e
9-7 更多运营策略. c# T; @) c9 \2 s

& u+ Z  a; M9 L9 S$ Y第10章 引入thrift框架【附加运动,扩展服务】
" Q( `7 H+ M/ F  J7 U- ^5 M5 U5 @通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。
$ u# J! K; K: `10-1 了解thrift
3 v9 T# Y4 H/ Y6 c' `6 n$ B10-2 定义thrift文件
( l7 c7 G% a1 P3 T) e) `) H/ b' `) p10-3 生成代码
2 ~) n: {$ P" x# o10-4 服务端接口(上)
# ~/ @+ E' v3 T: X7 l3 e! d10-5 服务端接口(中)
* @& s" N$ b* w" T! F10-6 服务端接口(下)7 S  a* f' h# e! p$ F9 Q+ S- S
10-7 客户端接口) {) v0 b9 }/ G. N
10-8 总结* P2 y. D& a* J; L
+ l$ C8 N/ m$ C7 p1 t+ T# }, n0 p  H
第11章 课程总结【结束,沉淀】
( R: [/ `2 z! q) T% o$ I对课程进行总结. [' p- z) l5 `$ z1 @- e# M
11-1 问题与思考( e7 Q. ]1 Y: O9 @8 |8 X" L
11-2 课程总结2 x1 i0 J$ r; G1 ^+ c
1 N. j* O1 }6 u0 l0 ?8 w
〖下载地址〗) ~, ~3 i* ?! `+ Z0 n
游客,如果您要查看本帖隐藏内容请回复
+ y4 S& I# R! D
2 a  _! A! g8 p1 F( o7 l
1 \6 |& n. t1 c; P3 w
回复

使用道具 举报

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 V& ~: ]8 n1 u  e' Z! x7 j
你这个是可以在线看的吗
5 X- v, b3 Q3 K% t  V: D) ]5 ^
可以的
, V1 a3 [8 Y" b6 |3 \# e
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则