栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM实现高并发秒杀

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM实现高并发秒杀

参见课程:https://www.imooc.com/learn/587
源码:https://github.com/yoyo185644/seckill/tree/master

1、整体业务分析

1)展示商品所有列表;

2)点击链接进入商品详情页;

![图片描

2、DAO层设计与开发 2.1 Mysql&&NoSQL

​ 关系型数据库(Mysql/Oracle/SqlServer等)和非关系型数据库(Hbase/redis/mongoDB/Neo4j等)。

​ 关系型和非关系型数据库的主要差异是数据存储的方式,关系型数据天然就是表格式的,非关系型数据是基于键值对的,通常存储在数据集中,就像文档、键值对或者图结构,所有非关系型数据存储天然就是分布式的,其真正的价值在操作的扩展性和大数据量处理。

​ SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务,其在事务性操作上性能和稳定性比NoSQL好很多。并且目前事务机制是目前最可靠的落地方案。

2.2 Mysql实现秒杀业务的难点

​ 当多个用户同时参与到秒杀活动时,会出现“竞争”,对于Mysql来说难点在于"事务+行级锁"

​ start transaction

​ update 库存数量(出现竞争,行级锁:一条事务执行,其余事务全部在等待,直到commit)

​ insert 购买明细

​ Commit

该问题在高并发部分解决!

2.3 数据库设计

​ 将DDL(数据库定义语言)卸载了“/sql/sechema.sql”文件中,再对数据库进行操作。

​ 建立一个seckill数据库,2张表:seckill、success_killed

2.4 Mybatis实现DAO理论

​ Mybatis主要特点在于:参数 + SQL = Entity/List

​ Mybatis在哪些SQL:XML提供SQL

​ Mybaits如何实现接口: Mapper自动实现DAO接口, 通过Dao找Mapper文件下的同名的SQL语句,一个Dao对 应一个Mapper

2.5 Mybatis整合Spring理论

​ 整合目标:更少的编码(只写接口不写实现类);

​ 更少的配置(1、使用别名,通过org.seckill.entity包扫描将 org.seckill.entity.Seckill—>Seckill

​ 2、配置扫描,扫描sql配置文件:mapper需要的xml文件

​ 3、dao的实现,自动实现dao接口,自动注入spring容器);

​ 足够的灵活性(可以自己定义SQL语句、可以自由的通过表达式传递参数,最终实现结果集自动赋 值。)

2.6 DAO实体/接口设计以及基于Mybatis实现

​ (1)配置Mybatis全局属性"resources/mybatis-config.xml"。

​ (2)将数据库中的表——>Java中entity实体(org.seckill.entity),将表中的列与实体类中的属性一一对应

​ 如果业务逻辑中出现多对一的情况,需要在多方的实体类中定义一方的实体类。在秒杀系统中多个成功秒杀的实体对应的是同一个秒杀对象实体,所在在SuccessKilled类中定义Seckill实体类:private Seckill seckill。

​ (3)实体类对应的接口设计,常用的是实体下的增删改查操作。(org.seckill.dao)

​ (4)为DAO接口的方法提供SQL语句:“resources/mapper

​ ***使用存储过程整个操作在Mysql端完成. resources/sql/seckill.sql

​ (2)mybatis+spring实现存储过程操作

​ 1)在SeckillDao接口中添加一个方法 void killByProcedure(Map paramMap);

​ 2) 在对应的Mapper SeckillDao.xml文件中添加;


    

​ 3)实现service层和controller层编码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/237546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号