本节主要内容

1. 秒杀抢购背景
2. 秒杀抢购架构设计&模块划分
3. 秒杀抢购接入层实现

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

1. 秒杀抢购背景

(1)架构分析

电商网站架构

Go语言学习之14 商品秒杀架构设计与开发 随笔 第1张

 

秒杀抢购1.0

Go语言学习之14 商品秒杀架构设计与开发 随笔 第2张

 

Go语言学习之14 商品秒杀架构设计与开发 随笔 第3张

(2)上述网站架构问题

  • 和已有电商逻辑重度耦合
  • 资源共享,缺乏隔离
  • 服务缺乏限流和过载保护
  • MYSQL存在性能瓶颈
  • 系统缺乏降级措施,不能及时恢复
  • 对雪崩缺乏深刻的认识

(3)架构改进

    1)秒杀抢购1.0改进:
         做一套独立的秒杀系统

     2)秒杀抢购2.0

Go语言学习之14 商品秒杀架构设计与开发 随笔 第4张

    秒杀抢购2.0优势及问题:

    优势:

  • 代码和部署完全隔离,避免相互影响
  • 根据后端承载能力,进行限流,防止全网挂掉
  • 平台化,所有操作在web平台实时生效
  • 使用Redis承载海量QPS
  • 整个系统采用Go重新开发,极大地提高了系统的性能

    问题:

  • 秒杀系统存在崩溃了

      对秒杀系统进行拆分

Go语言学习之14 商品秒杀架构设计与开发 随笔 第5张

     3)秒杀抢购3.0

Go语言学习之14 商品秒杀架构设计与开发 随笔 第6张

 

    秒杀抢购3.0架构设计

Go语言学习之14 商品秒杀架构设计与开发 随笔 第7张

 

秒杀抢购 3.0模块划分

Go语言学习之14 商品秒杀架构设计与开发 随笔 第8张

 

秒杀接入层核心功能

Go语言学习之14 商品秒杀架构设计与开发 随笔 第9张

 

 

1. 用户登陆成功之后,服务端设置两个cookie:
userId:123456
userAuth: md5(secret + userId)

2. 抢购系统拿到这两个cookie,然后做校验。
userId:123456
userAuth: md5(secret + userId)

calcAuth = md5(secret + userId)

优化点:
将redis的配置放到etcd中,这样如果redis配置发生改变,就可以不用到同时到
proxy和layer都去修改

Go语言学习之14 商品秒杀架构设计与开发 随笔 第10张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄