上几次主要说了高并发大流量项目所涉及到的技术点和技术方案,调优需要注意的一些参数,秒杀订单接口缓存的概念,通过redis的方式,redis需要进行原子性。

秒杀优化(一)

使用缓存可以大大的提高我们系统的性能,但是需要考虑到周全,可能带来数据的不一致性,所以要根据业务的场景和业务的逻辑,良好的维护它,如果漏了就会产生服务的不一致。产生线上的bug。

  • ① 地址信息

正常的下秒杀单子的时候,需要先维护好地址信息,下单的时候需要提供对应的地址信息。也可以将这些地址信息添加到redis中,当用户登录的时候的默认从redis中获取地址信息,这样就可以增加性能,但是还有个问题,用户的地址会登录后发生变化,也就是在用户针对地址发生变化的时候,维护当前用户redis的地址。

  • ② 下单校验

如果库存有50个,请求过来5050个,最后下单成功了50个,但是其他5000个都要走一遍查询流程是不是不应该,应该让他走一半就结束,不应该走到最后的库存查询就才结束,应该在库存查询之前要走各种session校验,地址校验,信息校验各种。应该在前面有个jvm内存的校验直接就先告诉他库存已经少于等于0了就不要在往下面请求了,这样服务压力不会很大。也就是在内存中jvm中有个变量来进行判断通过hash的方式。

  • ③ 下单异步化

下单后,可以进行消息处理中,让消息消费端慢慢消费消息中间件内的消息。使用异步化下单后不能直接跳转到支付页面,可能订单还没生成,还在排队,肯定不能直接返回待支付页面,跟他返回排队中。异步队列效果最佳就是底层库存比较大的情况下。这样吞吐量比较大。

前端控制(二)

原来的时候下单完毕后,直接跳转到支付页面。如果是做成异步下单,就不能直接跳转到支付页面了,而是需要在等待页面,等待页面有个js方法定时循环的调用获取这个用户是否在数据库存在单子,如果存在就直接跳转支付页面,如果不存在就一直等待,在等待的过程中如果库存为0,说明已经抢完了,失败了,没有最后落单,就直接通过客户下单失败,秒杀结束。千万没查数据库了,查redis就可以了。

PS:BAT这种大公司里面的秒杀系统,一般涉及到7,8个中心,每个中心之前可能有2个开发人员,一个秒杀系统大概15,16个人员,在加上单元测试人员,功能测试人员。分布式并发问题就是很复杂,复杂就是在细节里面,用数据库是可以查询出来实时的。

解密电商系统-秒杀消息队列异步下单相关推荐

  1. 软件架构-解密电商系统营销-会员模块业务

    上次说了商品,商品分类,品牌,分类的属性,规格.很多电商网站例如:京东,国美,苏宁他们的商品都是存储在redis中的,通过请求获取到的redis进行js的渲染动态的展示商品的信息. (一)营销模块 营 ...

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

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

  3. 电商扣减库存_电商系统秒杀架构设计

    作者:曹林华 https://blog.51cto.com/13527416/2085258 前言 最近在部门内部分享了原来在电商业务做秒杀活动的整体思路,大家对这次分享反馈还不错,所以我就简单整理了 ...

  4. 软件架构-解密电商系统-页面静态化

    秒杀系统说了几次了,基本技术点都有所涉及.真正的要解决大流量分布式系统的时候,不是特别容易,就像CAP原则和BASE原则,没有最优的方案,只有最合适的. 页面静态化(一) ① 技术方案 通过程序将动态 ...

  5. 软件架构-解密电商系统-互联网BAT商品详情缓存架构

    上几节说了中小型电商公司,项目详情页的优化方案,一般是使用freemark模板生成了html静态页面,放到nginx或者tomcat中,但是肯定选择nginx的并发是tomcat的100倍,通过mq的 ...

  6. 解密电商系统-Spring boot快速开始及核心功能介绍(下)

    上次说了Spring boot快速开始及核心功能介绍,本次说说配置文件相关的. Spring Boot属性配置文件详解(一) 修改端口 # application.properties: server ...

  7. java 超卖_Java生鲜电商平台-秒杀系统如何防止超买与超卖?(小程序/APP)

    本文主要是通过实际代码讲解,帮助你一步步搭建一个简易的秒杀系统.从而快速的了解生鲜电商秒杀系统的主要难点,并且迅速上手实际项目. 我对生鲜电商秒杀系统文章的规划: 从零开始打造简易秒杀系统:乐观锁防止 ...

  8. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

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

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

最新文章

  1. sql-schema与catalog
  2. 关于学习Python的一点学习总结(34->构造函数->重写方法和特殊构造)
  3. NSDate的具体用法
  4. 21天学通c++之7.10 for 循环 初始化多个变量
  5. 将用户添加到sudoers里面,使用户拥有sudo权限
  6. 2010年下半年计算机专业技术资格考试工作安排
  7. 信息学奥赛一本通(1005:地球人口承载力估计)
  8. 159挑战 | 1:59:40,基普乔格打开人类新时代!
  9. HTML5对表单的约束验证
  10. 激励视频广告 Android,腾讯社交联盟广告
  11. Ubuntu 13.10 安装后配置
  12. 计算机技术能力校本培训总结,教师现代教育技术校本培训总结(2篇)
  13. groovy使用场景
  14. php 远程下载木马
  15. SpringMVC进阶
  16. centos 安装Htseq_APPNode管理面板安装使用教材
  17. Android 面部识别之二(调用开源面部识别算法seetaface检测)
  18. WINcc 导出历史数据
  19. 求助 matlab 2015b运行cat12出现内部错误闪退
  20. 山威SDUWH高性能计算课程HPL HPCC软件快速安装脚本

热门文章

  1. Tkinter组件Label动态修改内容
  2. openLayers 4 canvas图例绘制,canvas循环添加图片,解决图片闪烁问题
  3. 顶级AI科学家裴健入职京东 携手共探大数据与智慧供应链领域
  4. “卷积神经网络目标检测:原理、分析与应用场景一览“
  5. ROS下的罗技F710通信
  6. CentOS8使用cephadm部署和配置Ceph Octopus
  7. 网站排名查询软件alexa_想要SEO优化做得好,网站排名查询工具少不了
  8. 亿发软件:医疗器械GSP信息管理软件(质量管理系统) ,专业gsp过检版本
  9. 【概率机器人】3.1 卡尔曼滤波、扩展卡尔曼滤波和无迹卡尔曼滤波
  10. DB2、MySQL去重SQL