这里我借鉴了网上其他大佬的观点:

一:
高并发带来的挑战
  原因:秒杀抢购会经常会带来每秒几万的高并发场景,为了更快的返回结果给用户。
  吞吐量指标QPS(每秒处理请求数),假设一个业务请求响应耗时为100ms,我们有10台Web服务器,每台给它最大连接数500。
  理想化计算方式:
  10 * 500/0.1 = 50000
  难道我们真的有处理5万并发?
  不然。高并发场景下,Web服务器打开了越多的连接进程,CPU切换上下文的也越多。会增加CPU的压力,导致CPU业务请求响应耗时 会超出预期很多。可能你的系统只能承受2万的并发了。
  这个时候我们需要怎么做?

  答:1、请求的接口需要设计合理,怎么做?
    动静分离,静态HTML可以通过Ng部署。
    核心瓶颈在后台接口上,高并发情况下存储压力大,MySQL不合适,用Redis内存读写快。
    2、重启与过载保护
    如果你2万的并发硬抗3万流量,导致服务器没有连接进程可用,系统就要陷入异常状态了,响应时间极慢。当系统响应时间很久 ,有些用户越喜欢频繁点击。恶性循环导致“雪崩”,导致整个系统垮掉,就算重启服务也无济于事。
    怎么做?
    过载保护,如果检测到系统满载状态,拒绝请求自我保护。
    (1)前端过滤简单方式
    (2)过载保护设置在CGI入口层,将客户端的请求直接返回

二:
高并发下的数据安全
  多线程写入同一个文件的时候,会出现“线程安全问题”。高并发的数据安全就是这个道理。比如有可能会出现超发。
  方案:
  悲观锁思路:修改数据时,锁定状态,排斥外部请求的修改。
  缺点:
  高并发下某些线程可能永远都抢不到这个“锁”,请求就会死在那里。堆积到一定程度,连接数被耗尽,系统异常。
  FIFO队列思路:请求都排好队,不会导致某些请求永远拿不到锁。
  缺点:
  高并发可能导致队列内存“撑爆”,如果设置一个极大的内存队列,系统处理请求的速度根本跟不上不断快速涌入的请求。越积 越多,还是会导致响应变慢,系统陷入异常。
  乐观锁思路:
  跟悲观锁相比,乐观锁都有资格去执行请求,但会获得一个版本号,符合版本号的才算更新成功。
  缺点:
  加大计算机CPU计算的开销,但是这是一个比较好的解决方案。
  缓存服务器思路:
  Redis分布式要保证数据都能能够平均的缓存到每一台机器,首先想到的做法是对数据进行分片,因为Redis是key-value存储的, 首先想到的是Hash分片,可能的做法是对key进行哈希运算,得到一 个             long值对分布式的数量取模会得到一个一个对应数据库的一 个映射,没有读取就可以定位到这台数据库

三:
高并发下的水分与查杀。
  原因:秒杀或是抢购等海量请求有时候并不是真正的用户在发送请求,有些为了“抢”到商品会使用一些“刷票”等类似的工具。这种做 法是帮助他们发送更多的请求到服务器。更高级的还制作一些自动请求            脚本。这些做法都是使自己的请求数占比多,成功率高。
        这些很显然都是属于作弊行为,不过,我们也有一些解决方案。
  答:分为以下几种情况
  1、同一个账号,一次性发送多个请求。
  高并发有可能会导致跳过某些逻辑判断。
  方案:程序入口处,一个用户只允许一次请求,其他过滤。可以通过Redis内存缓存服务,写入一个标志位(只允许一个请求成功 ,结合watch乐观锁的特性)
  2、多个账号,一次性发送多个请求
  很多早期注册功能没有限制,导致一些特殊的工作室通过编写自动注册脚本注册一大批“僵尸账号”。专门做各种刷的行为,以 及一些转发抽奖活动,大大提升自己中奖的概率。
  方案:检测指定机器IP请求频率,如果一个IP的请求频率异常的高。给它弹出一个验证码或者禁止它的请求。
  3、多个账号,不同IP发送不同请求
  有一些机构自己独占一批IP,然后做成一个随机代理IP的服务,有偿提供给这些“工作室”使用。还有一些直接黑掉用户电脑, 转发IP包,使普通用户的电脑变成IP代理出口。
  方案:难以分辨了,容易“误伤”。可以通过高门槛的业务,或者通过“数据挖掘”来提前清理。

个人整理并发解决方案。

a.应用层面:读写分离、缓存、队列、集群、令牌、系统拆分、隔离、系统升级(可水平扩容方向)。

b.时间换空间:降低单次请求时间,这样在单位时间内系统并发就会提升。

c.空间换时间:拉长整体处理业务时间,换取后台系统容量空间。

转载于:https://www.cnblogs.com/eyesCentre/p/10948377.html

Java电商项目,秒杀,抢购等高并发场景的具体场景和一些概念以及处理思路相关推荐

  1. java电商秒杀深度优化_【B0796】Java性能优化亿级流量秒杀方案及电商项目秒杀实操2020视频教程...

    Java视频教程名称:Java性能优化亿级流量秒杀方案及电商项目秒杀实操2020视频教程    java自学网[javazx.com]  性能视频教程   it教程 Java自学网收集整理 java论 ...

  2. java电商项目搭建-------商品详情页模块

    努力好了,时间会给你答案.--------magic_guo 在一个电商项目中,访问频率最高的是商品详情页页面,而且商品详情页的变化评率不会太高(除非是搞活动的时候):那么访问频率高,然后再使用数据库 ...

  3. 尚硅谷-谷粒商城-电商项目-秒杀系统-笔记

    商城项目简介 项目主要实现了一个模拟电商的分布式秒杀系统,核心模块包括注册登录模块.订单模块.秒杀模块. 框架是spring一套,用到的组件包Nignx服务器,redis,Mysql数据库,rabbi ...

  4. Java电商系统秒杀怎么做?

    有的时候,获取秒杀项目经历的代价是惨痛的- 比如我 前阵子我司(某十八线厂子)的运营策划了一场1元秒杀活动.一开始觉得肯定不会有很多人参与啊,于是没有准确的预估好用户的访问量.结果,你猜发生了什么:活 ...

  5. 电商项目秒杀思路和认识

    什么是秒杀 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到.对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量 ...

  6. B2C电商项目 秒杀业务 工作总结

    秒杀前端业务 秒杀商品通常有两种限制:库存限制.时间限制. (1)秒杀频道首页列出秒杀商品 (4)点击立即抢购实现秒杀下单,下单时扣减库存.当库存为0或不在活动期范围内时无法秒杀. (5)秒杀下单成功 ...

  7. java电商项目_Java电商项目总结(二)

    前言 在写基于Spring Boot的高并发秒杀Demo的时候,遇到了一点问题,因此记录下来. 遇到的问题 1.当我们在resources目录下,创建fonts文件夹,把Bootstrap所需要的gl ...

  8. 淘宝 秒杀 mysql_电商网站中,50W-100W高并发,秒杀功能是怎么实现的?

    巧了,最近面试的时候问过一个差不多的题目.有时间的同学可以看下我在B站的分享:某年双11,商家以4499的价格上架了某iphone,比官网价格便宜了1000员,库存总数10台,运营设置11/11 00 ...

  9. java电商项目搭建-------分布式文件存储系统(fastDFS)

    人之所以痛苦,那是因为你在成长.--------magic_guo 微服务项目,由于访问量和系统的高可用性能,会将上传的文件图片等存放在搭建的分布式文件存储系统:现在比较流行的文件存储系统有fastD ...

  10. hadoop集群搭建完整教程,java电商项目面试技巧

    前言 本系列的目的是明明白白.彻彻底底的搞定日期/时间处理的几乎所有case.上篇文章铺设所有涉及到的概念解释,例如GMT.UTC.夏令时.时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花 ...

最新文章

  1. linux执行数据库的命令,实验-shell执行数据库命令.TXT
  2. GitHub注册和Git安装
  3. BugkuCTF-MISC题怀疑人生
  4. 减肥日程表(WPS文档反馈群253147947)
  5. 8.Springcloud的Feign嵌入Ribbon实现接口式调用(改变restTemplate和Ribbon的调用方式)...
  6. 二阶齐次线性微分方程的通解公式_数学考研辅导(数二)063|高数常微分方程6
  7. [BZOJ] 1639: [Usaco2007 Mar]Monthly Expense 月度开支
  8. html flash rtmp,Web直播之RTMP协议:vue-video-player + videojs-flash
  9. asp.net2.0 发布网站选项说明
  10. php弹窗拨打电话,调用系统的拨打电话,不弹框或多次出现弹框问题
  11. 恒生电子java招聘_【恒生电子工资】java开发工程师待遇-看准网
  12. 计算机过程控制系统教材,过程控制系统——高等院校教材
  13. 智能家居无创新,不智能
  14. 百度 android 市场占有率,2019百度 排行榜_2019安卓应用市场排行榜Top10
  15. vs本地调试dll文件
  16. 关于注册时验证邮箱,并实现类似安卓的吐丝效果
  17. TabLayout的属性介绍
  18. 3·15特辑:“伪智能”厂商能有什么坏心思,无非是想骗钱罢了
  19. (转载)c# winform comboBox的常用一些属性和用法
  20. python学习笔记:插入函数append,extend与insert的使用与区别

热门文章

  1. KVM命令行使用工具(virsh)详解。
  2. maomao的现在与未来
  3. python中的变量的学习
  4. Idea下的springboot mysql8.0等报错解决随笔
  5. weblogic11g 密码忘记肿么办?
  6. linux下的系统服务管理及日志管理
  7. 变异检测VarScan软件使用说明
  8. 使用Autodesk Vault插件向导轻松创建Vault插件
  9. hdu 4539 郑厂长系列故事——排兵布阵
  10. 华为鸿蒙 os 适配机型曝光,华为鸿蒙OS 2.0首批适配机型曝光