`
想起要学好java
  • 浏览: 8682 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

秒杀系统设计

阅读更多
可参考技术文档:
 
压力挑战:
    短暂的高流量,对现有网站业务造成冲击
         秒杀是一个网站营销的一个附加活动,时间短,并发量大。
         如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。
 
    高并发,数据库高负载
         用户秒杀开始前,通过不断刷新浏览器来保证不会错过秒杀活动。
         频繁的访问程序、数据库会对应用服务器和数据库服务器造成负载压力
 
    网络及服务器带宽增长压力,网络带宽的问题比超过平时好多倍
         如果秒杀页面的大小为200K,如果最大并发数为10000次,那么需要的网络和服务器带宽是2G(200K×10000)。
         这些网络带宽是因为秒杀活动新增的,超过网站平时使用的带宽
 
    业务逻辑的简化
 
    避免直接下单
         秒杀的游戏规则是到了秒杀才能开始对商品下单购买,在此时间点之前,只能浏览信息不可下单。
         而下单页面也是一个普通的URL,如果得到这个URL,不用等到秒杀开始就可以下单了
 
 
解决策略:
    1.公平保证:
         秒杀用户筛选策略:一般是先到先得,10个商品放100个人进来
         防秒杀器和机器人:验证码等手段
    2.系统压力:
         秒杀系统独立部署,避免对主站造成压力和堵死
                如果需要还可以使用独立域名,使其与网站完全隔离,即使秒杀系统崩溃了,也不会对网站造成影响
 
         秒杀商品页面静态化和缓存化,减少后端请求
                将商品描述、参数、详情,全部写到一个静态页面,不用进行程序的逻辑处理,不需访问数据库,不用部署动态的服务器和数据库服务器
 
         租借秒杀活动网络带宽
                为了减轻服务器的压力,需要将秒杀商品页面缓存在CDN,同样CDN服务器也需要临时租借带宽
 
         动态生成随机下单页面的URL
                为了避免用户直接访问下单URL,需要将URL动态化,用随机数作为参数,只能秒杀开始的时候才生成
 
       关键点
           业务拆分,独立并发访问
           高并发控制,请求量拦截。
           读写分离(查询库存和下订单拆分独立)
           请求队列控制接受数,从而控制并发量
           订单和支付的一致性
 
    3.系统层级的划分:     前端 -> web层 -> 业务服务 -> DB持久层
 
            前端
                   A:扩容,加机器,这是最简单的方法,通过增加前端池的整体承载量来抗峰值。
                   B:静态化,将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素。通过CDN来抗峰值。
                   C:限流一般都会采用IP级别的限流,即针对某一个IP,限制单位时间内发起请求数量。
 
            web层
                  A:   集群负载均衡,节点能线性扩展。
                  B:采用短连接,连接池。
 
            业务服务
                      A:查询模块(查询库存)并发查询,库存数存在缓存中,(商品信息和图片信息等等)静态化处理和库存剩余数量缓存化处理。
                      B: 下订单模块(秒杀关键部分),队列控制异步化处理,首先判断这个队列是否已满, 如果没满就将请求放入队列中排队,队列满以后的所有请求直接返回秒杀失败。
                      C: 支付模块,异步付款,等待付款成功结果。(付款成功更新库存,也可下单的时候扣库存)。
 
            DB持久层
 
            A: 各个系统的业务数据分库存储,主从读写分离,单个子系统的数据,可以通过分库/分表的方法。
            B: 构建合理数据库索引,如对购买记录添加唯一索引,数据更新检测库存,如update number set x=x-1 where (x -1 ) >= 0。
 
    4.监控系统
          A: 操作系统的cpu, memory,i/o 。
          B: 各个系统的log:访问次数,warning, error log的条数。
          C: dba对数据库的监控。
          D: 业务层面的监控:每分钟各个子系统的交易量(DB查询)。
          E: 核心路径监控,非常重要的部分,单笔请求在交易系统中的流程,一笔实时交易,从接收到http请求,到各个子系统之间的互相访问,到DB的读写,到返回抢购结果
分享到:
评论

相关推荐

    秒杀系统设计与实现.互联网工程师进阶与分析

    秒杀系统设计与实现是互联网行业中一个至关重要的领域,它涉及到高并发、高性能以及稳定性等核心挑战。在本文中,我们将深入探讨秒杀系统的设计原理、关键技术及其在实际项目中的应用,尤其关注Java语言下的解决方案...

    java秒杀系统设计与实现.rar

    总结,Java秒杀系统设计与实现是一个复杂的过程,涉及分布式、缓存、数据库优化、消息队列、限流熔断等多个方面。理解并掌握这些技术,对于提升互联网工程师的专业技能和解决实际问题的能力至关重要。通过不断学习和...

    java秒杀系统设计与实现

    本篇文章将详细探讨Java在秒杀系统设计与实现中的关键知识点。 一、系统架构设计 1.1 分层架构 秒杀系统通常采用典型的三层架构:表示层(前端)、业务逻辑层(服务层)和数据访问层(数据库)。前端负责用户交互...

    秒杀-秒杀系统-秒杀系统源码-秒杀管理系统-秒杀管理系统java代码-基于Web的秒杀系统设计与实现-秒杀系统设计与实现-代码

    秒杀-秒杀系统-秒杀系统源码-秒杀管理系统-秒杀管理系统java代码-秒杀系统设计与实现-基于springboot的秒杀系统-基于Web的秒杀系统设计与实现-秒杀网站-秒杀网站代码-秒杀平台-秒杀平台代码-秒杀项目-秒杀项目代码-...

    电商系统秒杀系统设计 营销活动-秒杀业务 小米网秒杀系统设计经验与问题 共28页.ppt

    秒杀系统设计是电商行业中一个重要的技术挑战,尤其是在大规模用户参与的营销活动中,如小米网的秒杀活动。这类系统需要处理瞬时高并发访问,同时保持系统的稳定性和响应速度。以下将详细讨论该主题: 首先,抢购...

    高并发秒杀系统设计.docx

    "高并发秒杀系统设计" 高并发秒杀系统设计是指在电子商务平台中,设计一个能够承载高并发流量的秒杀系统,以满足用户的秒杀需求。该系统需要具备高性能、低延迟、可扩展性强等特点。 高并发秒杀系统设计的功能需求...

    java秒杀系统设计与实现.互联网工程师进阶与分析

    《Java秒杀系统设计与实现——互联网工程师进阶与分析》是一本专注于讲解如何利用Java技术构建高效、稳定且可扩展的秒杀系统的专著。该书深入剖析了秒杀系统背后的技术挑战与解决方案,旨在帮助Java开发者提升在高...

    电商秒杀系统的设计与实现.pdf

    秒杀系统设计的关键点之一是处理高并发的情况,为此系统需要集成Redis缓存系统。Redis是一个开源的高性能Key-Value数据库,支持网络、内存和持久化存储,可用于缓存热点数据,提高数据读写的效率,减少数据库的直接...

    基于SpringBoot和Mybatis的商城秒杀系统设计源码

    本源码提供了一个基于SpringBoot和Mybatis的商城秒杀系统设计。项目包含257个文件,其中包括170个XML文件、48个Java源文件、12个JSP页面、6个JavaScript文件、5个CSS样式文件、4个IML文件、2个Markdown文档、2个属性...

    基于微信平台的秒杀系统设计.doc

    "基于微信平台的秒杀系统设计" 本文主要介绍了基于微信平台的秒杀系统设计,旨在解决秒杀场景中存在的并发流量过大、数据丢失、系统崩溃等问题。 一、秒杀系统的必要性 随着互联网的普及,人们通过网络或者社交...

    springboot+vue基于springboot+vue的秒杀系统设计与实现javajava毕业论文.doc

    "Spring Boot+Vue基于Spring Boot+Vue的秒杀系统设计与实现Java Java毕业论文" 本资源摘要是基于 Spring Boot 的秒杀系统设计与实现的毕业论文,使用 Java 语言开发,采用 Spring Boot 框架和 MySQL 数据库。论文的...

    秒杀系统设计的所有代码

    秒杀系统设计是一种在短时间内处理大量用户请求的高并发场景,常见于电商平台的限时抢购活动。本项目基于Java技术栈实现,旨在提供一个高效、稳定的秒杀解决方案。以下是关于秒杀系统设计的关键知识点和代码实现概述...

    基于Springboot和Vue的秒杀系统设计与实现源码 秒杀系统设计与实现代码(高分项目源码)

    1. 秒杀系统设计与实现代码说明:经导师指导并认可通过的98分毕设项目代码。 2.适用对象:本代码学习资料适用于计算机、电子信息工程、数学等专业正在做毕设的学生,需要项目实战练习的学习者,也适用于课程设计、...

    Java毕业设计-基于springboot开发的秒杀系统设计与实现-毕业论文(附毕设源代码).rar

    基于Spring Boot开发的秒杀系统设计与实现-毕业论文及源代码资源介绍 本资源包含一份基于Spring Boot开发的秒杀系统设计与实现的毕业论文及相应的源代码,旨在为广大计算机相关专业的学生提供一个深入学习和实践...

    毕业设计springboot的秒杀系统设计与实现源码含文档含教程

    毕业设计springboot的秒杀系统设计与实现源码含文档含教程 后台是springboot框架,后台的页面是vue,前端的页面是html,数据库mysql,jdk1.8,开发工具用ecplise、myecplise、sts、idea都可以 本次开发一套基于...

    (源码)基于Spring Boot的秒杀系统设计.zip

    # 基于Spring Boot的秒杀系统设计 ## 项目简介 本项目是一个基于Spring Boot框架的秒杀系统设计,旨在提供一个高效、可靠的秒杀活动解决方案。系统涵盖了用户登录、注册、商品展示、订单处理等核心功能,并通过...

    秒杀系统设计与实现. 案例

    秒杀系统设计与实现是电商领域中的一个关键环节,它涉及到高性能、高并发、低延迟以及数据一致性等挑战。在本案例中,我们将探讨如何利用Java技术栈来构建这样一个系统。 首先,秒杀活动通常在短时间内吸引大量用户...

Global site tag (gtag.js) - Google Analytics