文档章节

高并发场景下秒杀系统的设计思路

FEINIK
 FEINIK
发布于 2018/05/06 22:31
字数 1066
阅读 2813
收藏 64

1 概述

秒杀系统之所以难做,是因为在极短的时间内涌入大量的请求,来同时访问有限的服务资源,从而造成系统负载压力大,甚至导致系统服务瘫痪以及宕机的可能。本文会介绍秒杀系统中存在的痛点以及针对这些点的优化思路。

2 秒杀系统是什么鬼

如:12306的春节抢票、各大电商搞的定时抢购活动,如小米手机的在线抢购等,抢过火车票的同学都知道在放票的那一瞬间可能1s都不到,票就被抢购一空了。

3 秒杀系统的难点

(1)短时间内高并发,系统负载压力大

(2)竞争的资源有限,数据库锁冲突严重

(3)避免对其他业务的影响

4 常见的互联网分层架构

(1)客户端层:手机或PC端操作的客户端页面,域名通过DNS解析路由到NG

(2)反向代理层:一般通过NG作为反向代理,将客户端请求均衡路由到后端站点服务,NG也可以水平扩展为多实例,且每个实例可单独部署为主从的高可用方案。

(3)站点层:站点层可以水平扩展为多个实例部署,以此来均衡来自客户端请求产生的高并发负载,多个web server之间的session信息可以集中存储于分布式缓存服务(Redis,MemCache)中。

(4)服务层:服务层也可水平扩展为多个实例部署,即时下最火的微服务方式

(5)数据库层:数据库层的常见部署方式,如读写分离,分库分表等

5 秒杀系统的架构原则

(1)尽量将请求拦截在上游

对于秒杀系统来说,系统的瓶颈一般在数据库层,由于资源是有限的,如库中共1万张票,一瞬间并发进来100万的请求,那么有99万都是无用的请求,所以为了更好的保护底层有限的数据库资源,尽量将请求拦截在上游。

(2)充分利用缓存

缓存不但极大的缩短了数据的访问效率,更重要的是承载了底层数据库的访问压力,所以对于读多写少的业务场景充分利用好缓存

(3)热点隔离

业务隔离:如12306的分时段售票,将热点数据分散处理,来降低系统负载压力

系统隔离:实现系统的软硬隔离,不光是实现软件的隔离,还可以实现硬件的隔离,尽最大限度的减少秒杀带来的高并发安全性问题。

数据隔离:启用单独的cache集群或数据库来存放热点数据

6 优化方案

(1)页面端优化,如:

  • 按钮置灰:禁止用户重复提交请求
  • 通过JS控制:在一定时间内只能提交一次请求

(2)web server层优化,如:

  • 动静分离:如将几乎不变的静态页面直接通过NG或CDN来路由访问,只有动态变换的页面可以请求到web server端
  • 页面缓存化
  • Nginx反向代理实现web server端的水平扩展

(3)后端service服务层优化

  • 使用缓存(Redis、Memchched):将读多写少的业务数据放入缓存,如秒杀业务中可以将更新频繁的商品库存信息放入Redis缓存处理

注:库存信息放入Redis缓存的时候最好分为多份放入不同key的缓存中,如库存为10万可以分为10份分别放入不同key的缓存中,这样将数据分散操作可以达到更高的读写性能。

  • 使用队列处理:将请求放入队列排队处理,以可控的速度来访问底层DB
  • 异步处理:如将秒杀成功的订单通知信息通过消息队列(RabbitMQ、Kafka)来异步处理

(4)DB层优化

  • 读写分离
  • 分表分库
  • 数据库集群

 

 

 

© 著作权归作者所有

FEINIK
粉丝 227
博文 61
码字总数 61705
作品 0
广州
高级程序员
私信 提问
秒杀系统常见问题1

由于最近的面试老是遇到面试官问设计一个秒杀系统,当时也只是粗略的看了看,然后今天去陌陌面试又被问到了,被教育了一顿,然后晚上的笔试又让设计一个秒杀系统,我真是XXXXK,所以搜罗一波...

努力的C
2017/10/17
0
0
SpringBoot开发案例从0到1构建分布式秒杀系统

前言 最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路。俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了...

小柒2012
2018/05/16
0
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

天下杰论
2016/01/14
375
1
Java 高并发解决方案(电商的秒杀和抢购)

电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至...

花漾年华
05/09
62
0
徐汉彬:Web系统大规模并发——电商秒杀与抢购

【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。 电商的秒杀和抢购,对我们来说,都不是一...

ljianbing
2017/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

html2canvas 生成的图片变模糊解决方案

需求: 背景图片和二维码还有用户微信头像生成一张图片,可供用户下载。打开页面的时候就是一张图可以保存,html2canvas插件即可实现效果,效果是实现了,但是很郁闷,图片模糊了。。。。 为...

前端老手
31分钟前
6
0
语音翻译器在线翻译语音

对于英语不好的朋友来说,如果出国旅游,多多少少都会使用到翻译软件。通过在线翻译的方式,方便彼此的沟通交流。那么,有朋友就在问哪个英语翻译软件最准确?下面就来和大家一起分享下这个简...

401恶户
32分钟前
6
0
国内25家滤波器公司排名

国内做滤波器的企业都有哪些?哪些企业做滤波器是比较知名的?国内滤波器企业排名如何?以下是解优人才网小编给大家的分享,国内前25家做滤波器的企业详细信息。 1、武汉凡谷电子技术股份有限...

猎头悬赏平台
37分钟前
7
0
即时配送,不再只是巨头的战场

9月4日,第十届中国电子商务物流大会暨2019中国同城即时物流行业峰会于杭州召开。会上出现了蜂鸟即配、达达-京东到家、美团配送、点我达、闪送等一众即时配送行业中的知名企业的身影。 在艾媒...

喵二狸
37分钟前
6
0
Moto G 2014 LTE Root

[TOC] 下载moto专用mfastboot mfastboot-v2.zip 下载对应设备的twrp 我的是这个版本 Moto G 2014 LTE thea 刷入twrp # 1. 开启USE调试# 2. 允许OEM解锁# 3. 查看设备adb devices# 4. 进f...

yeahlife
41分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部