美文网首页我爱编程
Seckill-System抢购系统

Seckill-System抢购系统

作者: Hwyoung | 来源:发表于2018-05-16 21:23 被阅读47次

开发化境

IDEA+SSM+Maven

启动

1.下载,从Maven中打开导入IDE.
2.打开jdbc.properties文件,修改属性
3.部署到Tomcat启动
4.在浏览器上访问:http://localhost:8080/seckill/list


业务介绍

核心功能

  • 秒杀接口暴露
  • 执行秒杀
  • 相关查询

秒杀业务的核心逻辑是对库存处理

  • 商家-->添加商品加库存
  • 用户-->秒杀减库存

针对库存分析

当用户秒杀时,库存做两件事

  1. 减商品库存
  2. 添加一条购买明细

如何保证数据一致性(多用户并发)

事务+行级锁操作
start transaction(开启事务)→ update库存数量 → insert购买明细 → commit(提交事务)


前端控制逻辑

前端控制流程

SpringMVC运行流程


5.12一些优化改动

  1. 使用redis对暴露接口这一热点事件进行优化
    分析:地址暴露接口是根据秒杀单的时间来计算是否开启秒杀、是否在秒杀中、是否结束秒杀。通过服务器端的逻辑去控制秒杀地址,并且暴露地址接口频繁,不希望客户端频繁的访问数据库,所以用Redis去优化地址暴露接口。Java访问Redis的客户端,seckillId设置Redis键,秒杀的对象设置为Redis值,用Google的Protostaff实现内部序列化,比原生的序列化压缩空间和压缩速度都有很大提升,尽可能的降低网络延迟。

  2. 执行秒杀降低行级锁的占有时间,先insert购买明细,再update减库存
    分析:Update减库存操作,当开启一个事务的时候,通过主键拿到行级锁,需要返回到客户端,这期间有网络延迟或者GC操作。 insert购买明细也会有网络延迟和GC,最后才commit/rollback事务,释放行级锁,这对于库存秒杀单来说,是一个阻塞状态。 MySQL和Java在本地执行时速度很快,瓶颈主要出现在网络延迟和GC操作上。

相关文章

  • Seckill-System抢购系统

    开发化境 IDEA+SSM+Maven 启动 1.下载,从Maven中打开导入IDE.2.打开jdbc.prope...

  • 京东抢购服务高并发实践

    京东抢购服务高并发实践 作者:张子良,京东高级开发工程师,在京东负责抢购后端服务系统架构和开发工作。 服务介绍 限...

  • 秒杀设计

    徐汉彬:Web系统大规模并发——电商秒杀与抢购 电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的...

  • 只用数据库设计高效抢购业务

    不使用缓存(redis、memcache),如何设计高效抢购业务呢?常见的抢购业务主要有:商品抢购券抢购红包抢购今...

  • redis乐观锁实现高并发秒杀

    在限量秒杀抢购的场景,一定会遇到抢购成功数超过限量的问题和高并发的情况影响系统性能 1、虽然能用数据库的锁避免,超...

  • 秒杀抢购系统优化思路详解

    前几年,火车票购票网站12306,每到放假高峰期,在线票刷不出来,购买困难,甚至出现了各种插件支持抢票,这样...

  • 高并发抢购系统架构搭建

    秒杀系统 架构搭建是重点,代码或语言实现较简单。 本篇用python+redis+rabbitmq搭建一个秒杀系统...

  • 高并发秒杀抢购系统设计

    概述 概述: 介绍高并发场景中非常容易出现的设计错误以及如何避免超卖和如何提高系统负载能力。 涉及知识点: 1.多...

  • 2018-12-16

    现在上台抢购翼猫科技专利智能净水系统的正在排队填表刷卡中!!!

  • 大流量|高并发抢购、秒杀实现

    在大流量场景下,抢购、下单量大等场景,由于业务应用系统的负载能力有限,为了防止非预期的请求对系统压力过大而拖垮业务...

网友评论

    本文标题:Seckill-System抢购系统

    本文链接:https://www.haomeiwen.com/subject/hvemdftx.html