源码参照:并发系统源码

1 简介

该项目主要整合运用Mybatis+Spring+Spring MVC三个框架来开发;同时这三个框架也是互联网公司的常用框架,比如美团、阿里、搜狐、京东等大型互联网网站常用这三个框架,主要是因为这三个框架易于使用并且比较轻量级,另外一个原因就是低代码侵入性,并且拥有成熟的用户群和社区。

现在网络上秒杀和红包类业务需求越来越常见,这种业务是一种竞争性的产品,具有很典型的事务特性。

学会分析、设计、实现和优化类似的秒杀系统,在面试中你会更具优势,也许会遇到这样的问题:

1)如何设计一个秒杀系统?

2)如何优化一个秒杀系统?

3)常用到什么技术解决高并发问题?

学习实现该项目,你能有所收货:框架的使用经验和整合技巧、秒杀系统的设计分析过程和优化思路,也是上述问题的答案。

总体来讲,该项目是一个基于Maven工具且利用Mybatis+Spring+Spring MVC三大框架实现并进行了高并发优化的Java后端秒杀系统;

2 业务分析

2.1 需求分析

整个秒杀系统实际是一个以库存为核心的后端的系统:

一,用户针对库存分析

2.2为什么需要事务?

答案很明显:如果出现减库存之后没有记录购买明细、记录购买明细没有减掉库存、超卖少卖等情况,那么就是程序员的责任了,所以我们要使用事务保证数据的完整性、一致性,实现数据落地,目前,Mysql VS NoSQL的都在这方面做的不是太好,所以,事务机制依然是目前最有效最可靠的数据落地方案。

2.3秒杀系统的难点在哪里?

竞争,时间延迟(事务和行级锁)

事务具有原子性,可以将不同的操作绑定在一起作为一个整体来执行,针对该业务,主要事务流程为:

Start Transaction(开启事务)=>Update库存数量=>Insert购买明细=>Commit(提交事务)

事务上可能出现竞争的地方主要在更新数据上面;

除此之外,同一时间会有多个用户在等待秒杀更新,所以行级锁也伴随着竞争。

所以整个系统的难点就落在了如何高效的处理竞争、完成事务(主要在秒杀操作上)

2.4 需要实现的功能

  • 秒杀接口暴露操作(一些用户可能通过程序填入参数自动实现秒杀,一种不公平的操作)
  • 秒杀执行操作
  • 相关查询(列表查询,详情页查询)

2.5 阶段分析

综合该高并发秒杀系统,总共可以分为四个阶段:

业务分析---API之DAO层---API之Service层---API之web层---API之高并发优化

其中中间三部分属于开发的三个阶段:

DAO层—Service层—Web层

另附例子:天猫秒杀系统

3相关技术

Maven

项目构建管理工具

Jetty

基于Java的Web容器,为Jsp和Servlet提供运行环境

Junit

单元测试

Mysql

数据库创建

表的设计(手写代码,此能力有利于二次开发)

SQL编写技巧

事务和行级锁

Mybatis

提供数据访问层(DAO层)设计与开发

Mybatis合理使用(基于注解或xml配置文件的使用方式)

Mybatis与Spring整合

如何高效灵活的整合Mybatis与Spring层

Spring

Spring IOC整合Service层(依赖注入:基于注解,基于JavaConfig)

声明式事务运用(分析与行为分析)

SpringMVC

Restful接口设计和使用(Restful更常见于互联网web公司框架设计的接口规范里面)

框架运作流程

Controller开发技巧

前端

交互设计(秒杀系统的交互设计)

BootStrap前端框架的应用

jQuery:使用JQuery通信插件和Ajax等

高并发优化

分析高并发的点和瓶颈

依次来对其进行分析优化

给出优化思路对其实现

CDN

静态资源缓存

Jedis

Redis的Java应用版本;服务端动态缓存

Procedure

服务端底层优化,最大程度降低行级锁持有时间

一、高并发秒杀API简介与业务分析相关推荐

  1. Java高并发秒杀API(四)之高并发优化

    Java高并发秒杀API(四)之高并发优化 1. 高并发优化分析 关于并发 并发性上不去是因为当多个线程同时访问一行数据时,产生了事务,因此产生写锁,每当一个获取了事务的线程把锁释放,另一个排队线程才 ...

  2. api商品分享源码_SSM框架高并发和商品秒杀项目高并发秒杀API源码免费分享

    前言: 一个整合SSM框架的高并发和商品秒杀项目,学习目前较流行的Java框架组合实现高并发秒杀API 源码获取:关注头条号转发文章之后私信[秒杀]查看源码获取方式! 项目的来源 项目的来源于国内IT ...

  3. Java高并发秒杀API(三)之Web层

    Java高并发秒杀API(三)之Web层 1. 设计前的分析 Web层内容相关 前端交互设计 Restful规范 SpringMVC Bootstrap + jQuery 前端页面流程 详情页流程逻辑 ...

  4. JAVA秒杀mysql层实现_Java高并发秒杀API之web层

    第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我 ...

  5. SpringBoot实现Java高并发秒杀系统之DAO层开发(一)

    SpringBoot实现Java高并发秒杀系统之DAO层开发(一) 秒杀系统在如今电商项目中是很常见的,最近在学习电商项目时讲到了秒杀系统的实现,于是打算使用SpringBoot框架学习一下秒杀系统( ...

  6. Java高并发秒杀系统【观后总结】

    项目简介 在慕课网上发现了一个JavaWeb项目,内容讲的是高并发秒杀,觉得挺有意思的,就进去学习了一番. 记录在该项目 我结合其资料和观看视频的时候整理出从该项目学到了什么... 项目Dao层 日志 ...

  7. 实战:基于 RocketMQ 的电商高并发秒杀场景

    内容简介: "秒杀"这一业务场景在如今已经不是什么新鲜名词,它本质上属于短时突发性高并发访问问题,业务特点如下: 定时触发,流量在瞬间突增: 秒杀请求中常常只有部分能够成功: 秒杀 ...

  8. 如何设计一个合格的高并发秒杀系统

    一.前言 在前面的文章中,详细阐述了建设秒杀系统的目标与存在的挑战,并且简单罗列了如何应对这些挑战的方式.本章,就详细阐述对秒杀系统存在挑战的应对之道,最终构建出兼具高并发.高性能和高可用的秒杀系统. ...

  9. SpringBoot、Redis轻松实现Java高并发秒杀系统笔记

    秒杀项目 优极限[完整项目实战]半天带你用SpringBoot.Redis轻松实现Java高并发秒杀系统 文章目录 秒杀项目 技术栈 课程介绍 学习目标 如何设计一个秒杀系统 项目搭建 分布式会话 登 ...

  10. SpringBoot实现Java高并发秒杀系统之Service层开发(二)

    继上一篇文章:SpringBoot实现Java高并发秒杀系统之DAO层开发 我们创建了SpringBoot项目并熟悉了秒杀系统的表设计,下面我们将讲解一下秒杀系统的核心部分:Service业务层的开发 ...

最新文章

  1. 强类型语言和静态类型语言有什么区别?
  2. rms 公式 有效值_怎样求信号中的RMS值?
  3. 一篇文章教你学会使用SpringBoot实现文件上传和下载
  4. .jsp后缀语言_ARM汇编语言入门(三)
  5. java提取json数组对象所有的id,一文轻松搞定
  6. opensips mysql 认证_基于ubuntu中使用mysql实现opensips用户认证的解决方法
  7. 斯坦福大学成立以人为本AI研究院 计算机科学教授李飞飞任院长
  8. jquery 根据样式或者名称获取 对象遍历赋值
  9. 【iCore3 双核心板】例程三十六:DAC实验——输出直流电压
  10. git 进阶系列教程--push
  11. 常见工业相机及接口综述
  12. win10在哪找计算机配置,电脑教程:windows10的设置在哪
  13. Day442443444445446447448.K8s -谷粒商城
  14. Wi-Fi Direct 和 wifi display
  15. CMakeLists.txt 构建 Qt工程
  16. 物联网新零售项目 立可得2.0之“前世今生”
  17. 用matlab实现机械臂的仿真,基于MATLAB的SCARA机械臂仿真与性能评估
  18. 美化win10桌面、使用CoolDock 酷点桌面和 TranslucentTB任务栏透明化软件
  19. java通过url获取图片文件
  20. django创建第一个项目

热门文章

  1. 学习笔记(8):ArcGIS10.X入门实战视频教程(GIS思维)-矢量数据数量分级显示、图表显示,多属性、lyr保存
  2. GRU 详解+实战(生成汪峰感觉的歌词)
  3. 【论文笔记】Weakly Supervised Discriminative Feature Learning with State Information for Person ...
  4. 中央广播电视大学中等专业办公设备使用与维护
  5. MMS-MTK-Obigo03c
  6. 【Java调用高德地图api】
  7. 红米停在android,红米手机在Android开发中无法获取data/data中数据的问题
  8. 思科:DHCP,动态获取IP地址
  9. 从业多年,谈谈差分输入电路和共模信号,差模信号关系的理解
  10. 连接服务器报错No supported authentication methods available