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

  [复制链接]
查看19427 | 回复74 | 2019-6-26 23:57:42 | 显示全部楼层 |阅读模式
QQ截图20191010124522.jpg
8 k( [$ `' M: N' a7 u5 S〖课程介绍〗
1 s3 G: U- L3 }: n' f. N4 q抽奖系统属于典型的高并发和高性能的系统,同时,业务需求复杂多变,对系统的灵活性和稳定性要求同样非常高。本课程先为大家剖析多种抽奖活动的共性和特性,再设计和开发抽奖大转盘系统的后台和接口。从基本功能的开发到使用redis步步优化,以及后续的策略对比,通过压力测试,让小伙伴直观的了解不同的设置导致的的性能差异,探究性能影响的关键因素。通过这门课程的学习,可以对系统的性能、并发、灵活、可靠等方面有更多的理解和掌握,迅速提升,达到中高级工程师的水平
- _8 [) X! c( g) s2 R. G) e2 }3 c  O1 [4 E
〖课程目录〗
5 t' r4 z# j7 v6 E第1章 课程介绍【预备,初识】
( V3 j/ P! Y/ R& F3 z/ o课程内容的整体介绍以及学习建议。
! M. y  I2 c3 ]% L% ?8 J+ M, k8 }1-1 Go抽奖系统导学 试看
9 [/ P7 N& `% G, b* R  i' H+ k
! ~# N$ y0 A) W' s2 ?: L第2章 6种抽奖活动来一遍【伸展运动,舒缓热身】  p# {: X; N/ |. p, d8 y: H- q
看书不如动手,本章将从年会抽奖、彩票刮奖、微信摇一摇、支付宝集福卡、微信抢红包、抽奖大转盘6种抽奖活动的实现出发,让小伙伴切身的体验下如何实现不同的抽奖活动,这些活动实现的差异和难点在哪,并示范用多种方法(互斥锁、atomic、sync.Map等等)解决并发安全问题。...
- i+ S  o4 |. h0 `2-1 年会抽奖_实现分析
+ }$ @1 i: v; h) a5 o) G/ O6 K2-2 年会抽奖基本功能实现+ p: @. k  M+ g1 b
2-3 编写web单元测试和并发安全问题' T- e( U8 F) @: w; o9 F# Q" i$ p
2-4 用互斥锁解决并发安全问题
  v5 Y- W9 N8 A! E' ]! G" |# S' v2-5 彩票_实现分析" F  h. L$ d' n+ N! {
2-6 刮刮乐和双色球 试看$ W6 M5 Q% C) X  B) s4 }3 k
2-7 微信摇一摇_实现分析2 G! _4 Y0 w  I$ j# o' l- m5 @
2-8 微信摇一摇实现(上)
' x: h3 W1 x. c* T9 ^2-9 微信摇一摇实现(下)
8 i; A7 a, }3 ~. m: z( g2-10 bug修复和压测- `" s4 N3 G' x
2-11 支付宝集福卡_实现分析5 M+ n; A0 C3 n' p3 I
2-12 支付宝集福卡实现
' P) [5 T/ N$ j& l2 u6 g2-13 微博抢红包_实现分析
: B+ @: r5 `5 R6 s+ a$ W2-14 实现发红包
' I3 U& Y* G5 j. h2-15 实现抢红包) K) Q, V; W- v- {& f' q& B$ j8 q
2-16 均衡问题和sync.Map解决异常
! `6 j. f8 [  u6 z; {6 m$ R2-17 改用chan的方式解决并发安全问题( y# h' j8 ]  e6 s9 G  ~9 ~7 c
2-18 再次压测验证和优化改造
  x% w3 R8 U$ l5 W  `) [2-19 抽奖大转盘_实现分析
1 ]* ]9 \8 E4 e: |; Z2 U2-20 抽奖大转盘初步实现
! a: l' b% Y* h7 A* }7 J6 h2-21 sync.Mutex和atomic改造性能对比
) K2 @4 Z+ ?0 b* i2-22 六种抽奖活动总结3 ?" e9 Q- M% v" c1 u* d$ z% B
2-23 并发编程与锁的底层原理( w* q, z8 @0 `" Y
2-24 高并发和高性能系统中锁的影响与解决办法
6 @1 ^, k7 E* B! u2-25 阶段任务
8 m2 l: P: x* H- L6 S+ O/ ]9 v( Y" b  o0 g  x- x9 P% _
第3章 系统设计和架构设计【扩胸运动,有容乃大】- i" t+ Z- S: k. {
本章对抽奖系统和架构进行详细的设计。总结前面的开发经验,从需求分析开始入手,整理需求,提炼功能,分析完善用户操作和业务流程、数据库设计、缓存设计要点。
! T9 z3 i* N) X3-1 需求整理和提炼- a1 s6 T6 {3 J! Z0 q9 q
3-2 用户操作和业务流程
# V# ]- b+ Z. k5 p% W/ x# c7 }3-3 数据库设计7 K) R1 X' }) c9 f" B
3-4 缓存设计 试看- S1 j$ B9 I/ u6 S
3-5 系统架构设计6 E! O6 n$ p( m* H- L
3-6 系统设计和架构设计总结( L) h: n+ R. `$ b, S3 E& c
3-7 高性能程序设计,缓存为王
1 @9 ~* u# ~9 ]) {+ J, B- k) z3-8 系统架构升级之道,关注关键服务依赖% E8 K; K* X( s; T' K) f5 O
3-9 阶段任务
8 s& y! r' x& X& |# ]" _+ v3 b# o( f  n/ \3 O# i& \
第4章 项目框架与核心代码【踢腿运动,固若磐石】
0 ?# G8 y/ G- Y7 z7 o本章开始动手使用iris+xorm先把项目框架搭建起来,并且把基础的核心代码(dao,services,comm,用户登录、退出等)完成,为后续的功能开发做基础的准备。
* i+ P+ v$ A2 @0 H& f4-1 项目框架搭建
4 B' B$ y' `: C# B2 N2 s. P4-2 数据模型的生成1 B6 d) J- D5 ~3 u
4-3 核心的dao和service类
0 k& a* @: w! i% J) q. k! T$ p4-4 定义dao' ^) j( g3 s3 g- @, K
4-5 定义service% I& r  t7 s: U! [' g2 G. }$ o
4-6 定义数据库和redis配置信息
. m# r* v7 ~8 o* B& h; U8 i4 \4-7 创建数据库实例及其要点
$ c8 ~8 g9 G. w+ @, y1 s/ p1 R4-8 创建redis实例及其要点
& D( s& m4 L* S! Q+ J3 l4-9 利用iris建立web站点' b" b$ H5 g$ D( u$ O/ m
4-10 项目配置和通用方法3 R: Q. g7 c) v; H- a9 N# a7 c
4-11 web站点初始化构建
, t& E4 `7 r7 i4-12 实现IndexController
: d2 m& y! C7 [, G& e4-13 完善路由和main.go文件+ C8 M4 X7 C  a% D/ p
4-14 登录和退出:安全值校验和防篡改/ {1 p- f- m) G
6 |7 o5 J, b" d  ?# x8 Q% Z
第5章 后台功能开发【体侧运动,运筹帷幄】- X. z6 {3 T- U
一个可视化的管理后台可以更好的帮助产品运营来自助操作,本章将实现相关功能并完成抽奖活动的定制规则设置。! h) o! k6 F9 v! h6 F; y/ g
5-1 后台功能开发介绍
+ q; Y6 X0 v' y4 l9 ]1 R& Z5-2 页面模板和AdminController
. H4 C, t- K1 t6 W# q5-3 奖品管理实现(上)
7 ?7 r( C' r  L5-4 奖品管理实现(中)* C/ @- f4 j: {# _# @) a
5-5 奖品管理实现(下)! \0 h$ d. N) d' p' \
5-6 优惠券管理实现(上)
3 X2 |, G  ]. ~( W  j: h' `5-7 优惠券管理实现(下)
8 z2 r, r2 C' q. P* X5-8 中奖记录管理
! X+ J7 Z3 `, v7 T% v9 N5-9 用户管理
9 N5 r# v; X, W! O3 K5-10 IP黑名单管理
4 W( N$ o! S$ U, k! D# P: t# I  C
第6章 基于mysql的抽奖功能开发【体转运动,基础版本】$ \0 S5 Y/ p8 v& a) u- j1 x; x6 _
本章将先完成后端抽奖接口的实现,完成抽奖业务逻辑和数据流程的开发。' v, P1 `: a' g5 t9 a# r
6-1 抽奖接口开发细节分析
3 t: Q' n5 [/ f9 p# C4 m6-2 用户并发操作的锁* @  b* V! g0 P: Z8 {! n* Q/ E
6-3 验证用户、IP今日参与次数(上)
* ?( O! ~5 C: b3 M6-4 验证用户、IP今日参与次数(下)
' l% m) C. N6 l3 o& T" |; f6-5 用户、IP黑名单的处理9 H: V( H$ [- [2 D3 {) m
6-6 抽奖的实现5 ^: I( s: F: I: g0 b$ j5 b  M+ ^
6-7 发奖的实现) [7 K. g7 i( i
6-8 中奖记录和返回结果3 c. ^4 `9 X3 ~8 T  Z

5 x4 x3 i/ d2 `6 O( a第7章 使用redis缓存优化【全身运动,升级版本】4 u$ J0 i% o9 F. @! q
本章引入redis来优化整个系统,减轻对mysql的依赖,提高抽奖接口的性能。/ {) o5 o* W4 Q0 N! v2 K/ e
7-1 分析_奖品数据全量缓存( e: K5 Y7 Z; }" T& g2 K+ G
7-2 实现_奖品数据全量缓存(上)
& t3 C6 q5 g: `4 Q7-3 实现_奖品数据全量缓存(下)/ e6 f5 z3 j; b3 i( E- ?
7-4 分析_单个用户数据部分缓存& f' Q5 y  n+ Z# y
7-5 实现_单个用户数据部分缓存3 o! ^' p. N, X% W
7-6 分析_IP黑名单数据缓存0 Y, v. J6 ]3 x7 e
7-7 实现_IP黑名单数据缓存
" U' T$ k4 ^# k0 V4 `  J4 |4 w. F7-8 优化IP今日抽奖次数
$ d0 D( i5 e# r6 h7-9 优化用户今日抽奖次数0 \9 m' T+ t4 x, ]  H
7-10 用户今日抽奖次数(上)
# q& Y8 b7 {4 u- p: ~7-11 用户今日抽奖次数(下)8 V; c* k1 U) t( K2 I  Y
7-12 为什么使用奖品池
5 V9 d& _8 X) i$ ?' L3 d: i7-13 初步使用奖品池: U$ y, T$ S# F  n
7-14 分析_优惠券的全量缓存
) n' h2 P& R$ u2 ^4 y3 {7-15 实现_优惠券的全量缓存(上)+ F% E8 j1 C  ~$ A: E1 g/ V1 y
7-16 实现_优惠券的全量缓存(下)
1 M( ]7 j7 l: e7 o" _9 I. Y7-17 使用redis优化总结8 O+ c* M+ `" `, [( b
( h3 a4 Y0 r0 ]' N2 F
第8章 奖品池以及发奖计划的实现【跳跃运动,极致版本】, d" Z- a- b2 U7 W
本章实现两个基础服务功能(更新发奖计划,自动填充资源池),来完成奖品的发奖计划数据维护,保证可以合理的把奖品填充到奖品池中。& Y5 G) }% _* M- m+ e9 }7 u% A
8-1 发奖计划设计分析
# N5 ]* G6 ]9 x* Z- ^( L8-2 实现发奖计划(上)
1 C( I3 b7 y/ g8-3 实现发奖计划(中)8 h5 o# R- i, o% @4 Y
8-4 实现发奖计划(下)
" W; R" w/ F" Z8-5 自动填充奖品池分析! @+ G% J* A; g- C% Q* S
8-6 实现奖品池(上)
; r) [4 v5 ^# `5 Y8-7 实现奖品池(下)
3 }: w0 ]0 G' J3 x0 b8-8 总结发奖计划和奖品池# p' f8 E2 k0 b; V( B1 O

* k5 B2 j5 S5 l$ r5 o第9章 完整性演示以及更多总结【整理运动,整体交付】
: R0 _$ x& I1 G; d7 x$ ^实现前端页面的大转盘效果,完整的演示最终的效果。通过不同的设置以及测试方法,利用压力测试工具对系统性能进行分析,深入了解业务逻辑以及技术实现的细节,对系统性能的影响,明白时间消耗的关键点。而更多的思考和总结,让抽奖类活动的有更多玩法。 ...
, Q3 l7 C8 B1 `) y) k9-1 前端大转盘分析
+ s2 |% X8 Z& E( ~; A$ I' l5 R9-2 前端大转盘效果实现
( h& b. Q. W" W* Q4 n4 e# a9-3 优化奖品设置分析
* w0 F7 Q3 R  ^2 @: }! I3 q8 [9-4 优化发放奖品分析
* l3 q6 P  O- K5 X" O9 o9-5 再来一次压力测试吧2 X4 S1 E: K8 V% k: r
9-6 压力测试
& i+ P2 \6 W' ^! X9-7 更多运营策略
& B4 o$ t' d: U  O0 L
# x$ z5 N3 ~- B2 a# s1 n9 T第10章 引入thrift框架【附加运动,扩展服务】' f1 a  T2 K' ?
通过rpc框架,将抽奖系统服务化,可以更加灵活和简单的接入到更多的业务系统中。- K& k; A' o0 |. E
10-1 了解thrift& E$ h# J) B/ c& o
10-2 定义thrift文件  `' R; Q; l. C0 P8 j
10-3 生成代码
- D: V. E3 Q( u! o) _10-4 服务端接口(上): q& h! t2 `( {: [
10-5 服务端接口(中)
& k7 d4 p* w( ]! B, q10-6 服务端接口(下)
9 l. _& |3 f0 x10-7 客户端接口
: q4 C1 h  p2 J. l10-8 总结- Y( E; l2 _3 ~2 d
) s1 W8 f) l1 |) v4 v% u
第11章 课程总结【结束,沉淀】
  a" k; g: Q, R# I对课程进行总结
( A7 c' L; z1 U, R) K: G' B11-1 问题与思考( v  Y0 n5 H6 g% e
11-2 课程总结. z! _7 Y* r, W" d: C5 g9 p) {

1 s! y& o$ ?4 }〖下载地址〗
6 g; U* ?- a; a; I3 q- x: |
游客,如果您要查看本帖隐藏内容请回复

+ I( ^3 {' q2 y: A$ m4 O7 |- w- x

( N' _1 X+ S! r2 r4 S
回复

使用道具 举报

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:332 a. q) ^$ g2 w9 W% a$ S7 V
你这个是可以在线看的吗
  I# Z+ ?! `( Q7 N: I1 ?
可以的
% ~( X  L& Y7 j" B5 {
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则